Skip to main content
Everything in Vexa composes from a handful of primitives. A unit of work — a dispatch — is one agent, in one container, over a person’s workspace, authorized by an identity token, fired by the scheduler. The data those agents grow on comes from meetings and docs.

Workspace

A git folder, stored in an (encrypted) bucket, with an id and an access mode (ro/rw). A dispatch mounts a list — typically system (ro) + company (ro) + user (rw). It holds knowledge, plans, and the agent’s session — all just files, with no dictated structure. git is the durable state and the undo. The knowledge itself lives in the kg/ subtree as an Open Knowledge Format (OKF) v0.1 bundle — one markdown file per entity at kg/entities/<type>/<slug>.md, YAML frontmatter on top, index.md listings for navigation. Knowledge-as-code: portable, diffable, and readable by any OKF consumer, not just Vexa. See Browse the workspace.

Meeting

One record from plan to transcript. A meeting is born in a user-owned intent status — planned ahead by hand or imported from a calendar (idle/scheduled) — is claimed in place by the bot lifecycle when the bot joins (requested → … → completed), and ends with its speaker-attributed transcript on the same record. Because it is one record, everything attached to the plan survives the meeting: the title, and the workspace binding — bind a meeting to a shared workspace and every member sees it (the plan, the live feed, the transcript). scheduled means the bot joins on its own at start time (the auto-join sweep; per-meeting opt-out). See Meetings.

Agent

A generic CLI coding agent selected by a runner (Claude Code is one; others and BYO-inference plug in the same way). It works the mounted workspace with a scoped toolbelt and commits. It is untrusted — outside the trust boundary — so it carries a signed token but enforces nothing. Its outbound capabilities (email, calendar, web) are integrations: cred-gated tools reached over MCP, never built into the backend. See Agents.

Container

The isolated, ephemeral unit an agent runs in, spawned by the runtime. Sub-second to start, reaped on idle, no egress except through brokered tools — thousands run in parallel with no lateral movement. Its live output streams to the client over a per-dispatch channel.

Identity

The chain of custody. The launcher proves itself (a user session, or a signed delegation grant for a schedule/integration); the identity service mints a short-lived signed dispatch token (subject = on whose behalf · launcher = who triggered · scope); the runtime attests the workload (SPIFFE/SPIRE); and every boundary verifies the token — never the agent. Tool calls exchange it for an audience-scoped credential (Keycloak / RFC 8693) at an MCP gateway, so the agent never holds a raw key.

Scheduler

Redis. The one mechanism that dispatches agents, on a trigger — a schedule entry (cron), an integration event (e.g. new email), or now (chat). It holds the user-manageable schedule; a meeting ending is just another event that dispatches an agent.