Architecture
System topology — the three-repo boundary and the service map.
The product is a three-repo system plus satellite clients. The clean boundary: Capture = who spoke when + what they said · VFTEE = who that person is · Conclave = orchestration + persistence + intelligence. See The three products for the product view; this page is the engineering topology.
Components
| Component | Module | Role | State |
|---|---|---|---|
| Conclave | conclave-shape-rotator | Control plane + dispatcher; the only persistence (audio + transcripts + KB); enrichment; VFTEE orchestration | Stateful (in TEE) |
| Capture | capture | Stateless capture + diarization + ASR call. Emits {start,end,local_speaker} | Stateless |
| VFTEE / FPM | FPM | Identity-only voiceprint layer + consent plane + sealed store | Stateful (sealed) |
| Diarization engine | inside capture | Our own: diart (live, CPU) + TD, our trained GPU post-pass model. A managed engine (Deepgram) is wired as a temporary fallback while we scale our own models on TEE GPUs | swappable |
| Analytics cockpit | inside conclave-shape-rotator | Operator dashboard over meeting/diarization metrics; reads the analytics DB via /admin/analytics/q | live |
| Veritas recorder | veritas-recorder | Standalone C2PA-style recorder (satellite, not in the meeting pipeline) | on-device |
| Shape-OS client | os-ws-passthrough | Electron desktop app Conclave contributes into | client |
Naming: "VFTEE" and "FPM" are the same service — dirs and env are still prefixed
fpm/FPM_. "capture" was extracted from the dissolved Recato product.
Diarization is our own diart (live) + TD (GPU post-pass) stack; a managed engine (Deepgram) is a temporary fallback while we scale our own models on TEE GPUs. See Status.
Tech stack
- Conclave — Python FastAPI (uvicorn), one SQLite file (relational + FTS5 +
sqlite-vec), SQLAlchemy 2 + Alembic, Redis (durable job queue + live-segment stream), LangChain at ingest, Ed25519 sealing + signed receipts (transcript versions + redaction completeness), deterministic in-CVM regulated-data redaction (Luhn/checksums/regex, no LLM),dstack-sdkfor TDX, Supabase auth. Frontend: Next.js 16 infrontend/. LLM: RedPill TEE / NEAR AI. - Capture — mixed: diarization service = Python FastAPI; recato-bot = Node/TypeScript (CDP-driven headless browser); runtime-api orchestrator. Our engines: diart (torch 2.2.2, CPU) + TD, our trained model (torch 2.1.1 cu121, GPU). A managed engine (Deepgram) is a temporary fallback while we scale our own models on TEE GPUs.
- VFTEE / FPM — Python FastAPI, ONNX Runtime CPU embedder (CAM++), SQLite sealed store,
dstack-sdk, Supabase JWT verification. Frontend: Next.js consent dashboard. No torch in prod.
How they connect (prod)
The diagram shows our own engines (diart live + TD post-pass); the Deepgram fallback plugs into the same containers when active (topology unchanged). Online meetings follow the same Redis wire format via a recato-bot dispatched through the runtime-api. Full flows on Data flow.