0.12 — control-plane carve
0.12 reorganizes the backend around a single front door and server-derived identity.- One gateway. All public traffic enters through the gateway (
API_GATEWAY_HOST_PORT, default18056); it carries authentication and per-route scopes and routes to the internal services. - Server-derived identity. The gateway resolves your
X-API-Key→ user and injects identity downstream. Asubjectin a request body or query is ignored — the server never trusts the client for identity. See Authentication and Identity & trust. - Agent control plane. Dispatch, chat, routines, events, and workspace reads are unified under the
Agent API at the
/agent/*prefix (the legacy/api/*alias still resolves). - Compose-based self-host. The open core brings the whole control plane up with
make all(Docker Compose) on a single Linux host. See Deployment.
Migrating from 0.10
- Route through the gateway. Point clients at the gateway base URL and send
X-API-Key; stop calling internal services directly. - Drop client-supplied identity. Remove any
subject/ user id you sent in bodies or query strings — it’s now derived from the key. - Use the
/agent/*prefix for control-plane routes (the old/api/*alias still works during transition). - Re-check your secrets. Set real values for
ADMIN_TOKEN,INTERNAL_API_SECRET,VEXA_DISPATCH_SIGNING_KEY, and DB/MinIO credentials — see Configuration.
Versioning
Vexa follows semantic-ish versioning at theMAJOR.MINOR line; breaking changes are called out in the
GitHub release notes and mirrored in the migration section above. Pin a specific image with IMAGE_TAG
so deploys are reproducible.