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 · VFTE = who that person is · Conclave = orchestration + persistence + intelligence. See The three products for the product view; this page is the engineering topology.
Components
| Component | Repo / dir | GitHub | Role | State |
|---|---|---|---|---|
| Conclave | conclave-shape-rotator | conclavehq/Conclave | Control plane + dispatcher; the only persistence (audio + transcripts + KB); enrichment; VFTE orchestration | Stateful (in TEE) |
| Capture | capture | conclavehq/Capture | Stateless capture + acoustic diarization (diart + DiariZen) + ASR call. Emits {start,end,local_speaker} | Stateless |
| VFTE / FPM | FPM | conclavehq/VFTEE | Identity-only voiceprint layer + consent plane + sealed store | Stateful (sealed) |
| diart | inside capture | — | Live real-time diarization, CPU-pinned | ephemeral |
| DiariZen worker | inside capture | — | Authoritative GPU batch post-pass, stateless/swappable | Stateless |
| Veritas recorder | veritas-recorder | conclavehq/Veritas | Standalone attested iOS/Mac recorder (satellite, not in the meeting pipeline) | on-device |
| Shape-OS client | os-ws-passthrough | — | Electron desktop app Conclave contributes into | client |
Naming: "VFTE" and "FPM" are the same service (dirs/env still prefixed
fpm/FPM_; GitHub repo isVFTEE). "capture" was extracted from the dissolved Recato product.
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,dstack-sdkfor TDX, Supabase auth. Frontend: Next.js 16 infrontend/. LLM: RedPill TEE / NEAR AI; ASR: NEAR Whisper. - Capture — mixed: diarization service = Python FastAPI; recato-bot = Node/TypeScript (CDP-driven headless browser); runtime-api orchestrator. Engines: diart (torch 2.2.2, CPU) + DiariZen (torch 2.1.1 cu121, GPU).
- VFTE / 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)
browser / OS recorder ──wss──▶ capture-diart (TLS-passthrough ingress)
│ publishes segments
▼
Redis stream ──▶ Conclave (persist audio + transcript)
│ dispatch post-pass job
▼
DiariZen GPU worker (claims over :443)
│ authoritative spans
▼
VFTE /v1/identify-spans (names, scoped + consented)
▼
Conclave enrich → KB → viewOnline meetings follow the same Redis wire format via a recato-bot dispatched through the runtime-api. Full flows on Data flow.
Source: CONCLAVE-CAPTURE-ARCHITECTURE.md, per-repo READMEs.