Skip to main content
The vexa runtime is modeled as code using FINOS CALM (Common Architecture Language Model). The model lives in calm/ and is validated in CI by pnpm gate:calm — so the architecture description can’t silently drift from the system.

What’s modeled

calm/architecture.calm.json is the runtime / data-flow view: the standing services (gateway, meeting-api, agent-api, admin-api, runtime), the runtime-spawned workers (bot, agent-workerdeployed-in the runtime kernel), the redis transcript fabric, the durable stores (postgres, object storage), and the first-party, self-hostable STT boundary.
LayerNodes
Edgegateway — the one authenticated door (auth · routing · WS fan-out)
Servicesmeeting-api (collector hub) · agent-api (copilot) · admin-api (identity)
Workersbot · agent-worker — ephemeral, spawned per meeting / per dispatch
Carriersthe redis streams + pub/sub (transcript live + durable planes)
Storespostgres (transcripts · identity) · object storage (recordings)
STTtranscription — first-party GPU service, tenant-hosted by default

Controls (governance, machine-checked)

The model carries governance controls, each backed by a JSON-Schema requirement in calm/controls/:
  • single-writer (P23) — every data carrier declares exactly one producer; readers never re-derive a producer’s data.
  • render-only — the terminal renders transcript and cards; it never re-derives or republishes.
  • data-egress — the bot → transcription edge declares its egress posture. Default is tenant-hosted, so meeting audio need not leave the tenant.

The pattern

calm/patterns/meeting-intelligence.pattern.json is a reusable CALM pattern a meeting-intelligence deployment must conform to: a single authenticated edge, a capture worker, a collector, a copilot, a render-only client, and a declared STT egress boundary. Conformance is fail-closed — a design that omits the egress control or the render-only client is rejected:
pnpm gate:calm
# = calm validate -p calm/patterns/meeting-intelligence.pattern.json -a calm/architecture.calm.json
Because the model is standard CALM, you can also calm generate a conformant starter architecture from the pattern and validate your own deployment against it with the FINOS calm-cli.

Why this exists

A standard, validated model gives one diffable source of truth for the architecture, makes the single-writer and trust-boundary invariants machine-checkable, and lets the design be consumed by any CALM tooling — not a bespoke diagram that rots.