Skip to main content
This page is the honest, current state — updated as we go, never aspirational.

What 0.12 is

0.12 is a complete refactoring of the 0.10 line into software of the same shape — the same services, the same wire surface (api.v1 sealed hash-equal to 0.10.x’s OpenAPI) — rebuilt so that every service is a modular monolith. The rule underneath everything: a module owns exactly one concern, and is the single source of truth for that concern. Larger structures are built from modules — capture bricks compose into the meeting bot, modules compose into services, services compose into deployments. Modules join only through contracts: defined once, rarely changed, and sealed — a sha256 per contract in contracts.seal.json, enforced in CI. If a seal breaks, we know; a contract can never drift silently. Why this shape:
  • Test in isolation. Because a module’s concern is exact and singular, it is tested fully in isolation against fixtures — and debugged the same way, by manipulating the fixtures.
  • Test at any scale. A chain of modules joined by sealed contracts tests in integration with the same fixtures — so a bug is reproduced and debugged at exactly the scale it lives at.
  • AI-native by construction. Every unit ships three things: the running code, the adversarial code (tests that harness it), and the data (goldens that validate the module or contract). All ports are deterministic for deterministic input, so the verify loop is simple enough for an agent to own.
  • Fixtures come from reality. We collect them from real meetings — real audio, speaker activations, and environment metadata — and replay them through the system, so the whole stack is harnessed against the real world largely autonomously.
The full map — module tree, the sealed contract registry (owner → consumers), and the four eval levels — is Modules & Seams. Proven in production (pre-existing Vexa): the Runtime (meeting bots are browser workloads), transcription → transcript.v1, redis streaming. Built & proven live — the dispatch core (M1): a unit.v1 dispatch runs in a runtime-spawned, isolated container (the generic-agent worker), over a bind-mounted workspace, carrying a per-dispatch signed identity token, streaming UnitEvents on unit:<id>:out → SSE. The in-process path is retired (agents never run in the control plane). Chat memory is durable — session + transcript are saved in the workspace, so a fresh container resumes the conversation. Verified end-to-end on docker and through the terminal chat. See Execution. Designed & frozen (this site): the seven primitives, the identity layer (kagenti-aligned), the governance model. Sound and kept: the terminal workbench + surfaces, the generic event ingress, the generic tool mechanism, the redis scheduler. Next: finish M1 — the bucket-backed (minio) workspace store + warm-reuse (touch / idle-enforcer). Then M2 — the live meeting dispatch.

Delivery tracker

The live pickup queue is the Vexa Roadmap board (grouped by contributor lane) with milestone v0.12.x as the version gate. How to claim and deliver: the delivery constitution.
The planned features, the modules each touches, and status. The core features are ⬜ planned; planned meetings, auto-join, and ICS calendar sync are ✅ done (OAuth calendars are deferred). See Identity for the auth and encryption detail.

Capability truth table

Where each partially-landed capability actually stands, layer by layer — verified against the tree (route tables, module code, tests), not planning docs. “Module-tested” means unit/seam tests with fake transports pass in CI; it is not an end-to-end claim.

0.10.x features not (yet) in 0.12

The wire contract is sealed hash-equal to 0.10.x’s OpenAPI 1.5.0, but a sealed endpoint is not automatically a wired capability. What 0.10.x users had that 0.12 does not ship today — the changelog parity section is the source of truth, with per-row verification notes: