Plaza Orchestration v1

Every capture earns the same 4-section shape.

Inside CaptureX BO, every persisted capture body is composed of exactly four top-level H2 sections, in canonical order.

  • ## Audit Trail — the steps and models that ran
  • ## Capture File — source, attachments, geo, lineage tags
  • ## Summary — one paragraph, written by the crafter
  • ## Note — the reusable content, structured with H3+

The schema is enforced at the BO layer (composePlazaCaptureNoteBody), defended at the mobile chat-render layer, and asserted by the auditor before persistence.

multi-realm

Realms keep your worlds apart.

A realm is your personal partition: work, research, family, side-project, client A, client B. Each realm has its own Plaza skill bundle, its own default Inbox and Memory space, its own mirror folder, and its own data driver.

  • Synthetic Inbox always short-circuits orchestration — raw capture, no router
  • Synthetic Memory runs a single memory-organizer skill
  • Custom spaces opt-in to multi-space fan-out (up to 4 results)
  • Switch realms anywhere; AppBar auto-loads the right skill plaza
R

Realm · work

~/capturex/work · 14 spaces · 1,243 captures

R

Realm · research

~/capturex/research · 6 spaces · 482 captures

R

Realm · family

~/capturex/family · 3 spaces · 67 captures

All three coexist; one click in the AppBar switches the active realm, refreshes the skill plaza, and re-scopes search.

local-first

One folder, your entire knowledge base.

Pick a realm to use the local_git data driver and CaptureX will mirror that realm into a single absolute folder on disk — as plain markdown, with a deterministic layout.

  • Full coverage — captures, spaces, skills, audit logs, tags
  • No auto-commit, no auto-push — operator-driven SCM panel
  • Auto pull / fetch keeps the working tree current
  • Batched, resumable import scales to 10k+ captures
  • Bring your own remote (GitHub, Gitea, GitLab, file:// share)

The git mirror is the canonical store in v1 — read it with any text editor, version it like code, and back it up wherever you back up your code.

architecture

Built for operators who own their stack.

CaptureX is not a generic note app with a bolt-on sync layer. The backend (CaptureX BO) is a NestJS service you run locally or on your own infra — mobile and desktop clients talk to it over HTTP only.

  • Identity via your Service Profile — no shared SaaS tenant
  • Storage (v1) = per-realm git repository you choose
  • Ingestion = mobile FAB, desktop, share-sheet, capture API
  • Event hooks for messenger bots and custom connectors (roadmap)
  • App secrets live in a Service Profile JSON, never in env vars

Pair it with your own LLM keys and the deployment is one operator running python ops.py restart.

Capture clients

Mobile FAB, desktop hotkey, share-sheet → capture endpoint

CaptureX BO (NestJS)

Service Profile JSON · Gemini · TTS · orchestration

Mobile + Desktop apps (Flutter)

Catch-everywhere FAB · realm switcher · capture detail

Per-realm git repository

Plain markdown, your remote, your backups

Multimodal capture

Photo-first, but every modality is first class.

Receipts, whiteboards, voice memos, screenshots, forwarded chats, PDFs — all funnel through the same orchestrator with the right vendor and the right prompt.

Photo

CamScanner-style filter strip (Original, Omnifix, Enhance, No-shadow, Eco, B&W, …), AI deblur / enhance text / remove background, default 1280px JPEG q65 preset.

Audio

Voice memos transcribed and summarized; cloud TTS through BO HTTP only — default Volcengine / Doubao, OpenAI-compat fallback. Read-aloud on every capture.

Documents

Drag, paste, or share PDFs and Office docs into the AgentSheet composer. BO extracts text + structure; the auditor flags low-quality extraction.

Forwarded chats

Forward a chat thread from any messenger and it lands as a capture with the original quotes preserved, the senders tagged, and the action items extracted.

Geo & lineage

Photo EXIF GPS + text auto-parse + map-picker (Google / Apple / Amap / inline OSM). Every capture remembers where it came from.

Vendor-neutral

Vision LLM through a vendor-slot (Gemini default), TTS through Volcengine/Doubao with OpenAI-compat fallback, and keys via Service Profile or external secrets file — never client-to-vendor.

scale & durability

From 10 captures to 10,000+ on the same engine.

We design for the long arc. The GET /v1/captures endpoint supports cursor pagination with stub / full include modes; the local-git driver imports in batches with a resumable checkpoint.

  • Cursor pagination (1..200) · keyset index per realm/space
  • Stub mode omits heavy body fields; detail endpoint hydrates on demand
  • Async sync session: start, poll progress, cancel via DELETE
  • Re-runs preserve attachments and lineage — no silent data loss
  • Revision log appends, never overwrites

Bring your workflow. We'll bring the capture layer.

CaptureX is in active design-partner pilots. If you care about owning your knowledge, we'd love to hear from you.