Conclave Docs

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

ComponentModuleRoleState
Conclaveconclave-shape-rotatorControl plane + dispatcher; the only persistence (audio + transcripts + KB); enrichment; VFTEE orchestrationStateful (in TEE)
CapturecaptureStateless capture + diarization + ASR call. Emits {start,end,local_speaker}Stateless
VFTEE / FPMFPMIdentity-only voiceprint layer + consent plane + sealed storeStateful (sealed)
Diarization engineinside captureOur 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 GPUsswappable
Analytics cockpitinside conclave-shape-rotatorOperator dashboard over meeting/diarization metrics; reads the analytics DB via /admin/analytics/qlive
Veritas recorderveritas-recorderStandalone C2PA-style recorder (satellite, not in the meeting pipeline)on-device
Shape-OS clientos-ws-passthroughElectron desktop app Conclave contributes intoclient

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-sdk for TDX, Supabase auth. Frontend: Next.js 16 in frontend/. 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)

Source
browser / OS recorder
wss
Capture
capture-diart
TLS-passthrough ingress · publishes segments
Redis
Redis stream
Conclave
Persist
audio + transcript · dispatch post-pass job
TD
GPU worker
claims over :443
VFTEE
/v1/identify-spans
names · scoped + consented
Conclave
Enrich → KB → view

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.

On this page