Vexa is configured by environment variables, set in deploy/compose/.env for Docker Compose (seeded
from .env.example on first make all). Defaults below are what the stack falls back to when the
variable is unset — fine for local evaluation, not for anything exposed.
Change every secret (ADMIN_TOKEN, INTERNAL_API_SECRET, DB and MinIO credentials,
VEXA_DISPATCH_SIGNING_KEY, NEXTAUTH_SECRET) before putting the stack on a network. The defaults
are public.
Transcription (STT)
| Variable | Default | Purpose |
|---|
TRANSCRIPTION_SERVICE_URL | — | STT service base URL (the client appends /v1/audio/transcriptions), e.g. http://<gpu-host>:8083. Point it at the bundled service you deploy separately (deploy/transcription) or a hosted endpoint. Unset → bots join and record but produce no transcript. |
TRANSCRIPTION_SERVICE_TOKEN | — | STT auth token — must match the API_TOKEN of your deploy/transcription unit, or a token from vexa.ai/account. |
The STT service is the GPU workload, deployed separately from this stack — see
Deployment → Transcription. The main stack
stays GPU-free and reaches it over the network via the two variables above.
Secrets & identity
| Variable | Default | Purpose |
|---|
ADMIN_TOKEN | changeme | Admin API key (X-Admin-API-Key) — mints users and tokens. |
INTERNAL_API_SECRET | vexa-internal-secret | Shared secret for service-to-service calls. |
VEXA_DISPATCH_SIGNING_KEY | dev-dispatch-signing-key | Signs dispatch tokens (the identity chain of custody). |
NEXTAUTH_SECRET | dev-nextauth-secret | Session secret for the web UI. |
VEXA_BOT_API_KEY | — | Pre-shared key a bot uses to call back into the stack. |
Database & storage
| Variable | Default | Purpose |
|---|
DB_NAME / DB_USER / DB_PASSWORD | vexa / postgres / postgres | Postgres credentials (metadata). |
POSTGRES_HOST_PORT | 5458 | Host port mapped to Postgres. |
MINIO_ENDPOINT | minio:9000 | Object storage endpoint (recordings + workspaces). |
MINIO_ACCESS_KEY / MINIO_SECRET_KEY | vexa-access-key / vexa-secret-key | MinIO credentials. |
MINIO_ROOT_USER / MINIO_ROOT_PASSWORD | vexa-access-key / vexa-secret-key | MinIO root credentials. |
MINIO_BUCKET | vexa | Bucket holding recordings and agent workspaces. |
MINIO_SECURE | false | Use TLS to reach MinIO. |
Agent inference (bring your own)
Point the agent at your own model so no inference leaves the network.
| Variable | Default | Purpose |
|---|
VEXA_AGENT_MODEL | — | Model the agent runner uses. |
VEXA_MEETING_MODEL | — | Model for meeting-time processing. |
ANTHROPIC_API_KEY | — | Key for Anthropic-backed runners. |
ANTHROPIC_MODEL · ANTHROPIC_DEFAULT_OPUS_MODEL · …_SONNET_MODEL · …_HAIKU_MODEL | — | Per-tier model overrides. |
HOST_CLAUDE_CREDENTIALS | — | Host path to Claude credentials mounted into agent containers. |
VEXA_AGENT_DEFAULT_SUBJECT | u_live | Fallback subject before the gateway fronts agent-api. |
Images & runtime
| Variable | Default | Purpose |
|---|
IMAGE_TAG | dev | Tag for the built service images. |
BROWSER_IMAGE | vexaai/vexa-bot:v012 | Browser/bot container the runtime spawns per meeting. Built from source (make bot), spawned without pulling — the published vexaai/vexa-bot:dev is the old 0.10 line and is incompatible. |
AGENT_IMAGE / AGENT_WORKER_IMAGE | vexaai/v012-agent-* | Agent container the runtime spawns per dispatch. |
DOCKER_GID | 0 | Host docker group id, so the runtime can use the Docker socket. |
LOG_LEVEL | info | Log verbosity. |
Ports
Host ports the compose stack publishes on 127.0.0.1 (override any of them in .env):
| Variable | Default | Service |
|---|
API_GATEWAY_HOST_PORT | 18056 | gateway (the one front door) |
ADMIN_API_PORT | 18057 | admin-api |
MEETING_API_PORT | 18080 | meeting-api |
RUNTIME_API_PORT | 18090 | runtime |
AGENT_API_PORT | 18100 | agent-api |
TERMINAL_PORT | 13000 | web UI / terminal |
MINIO_HOST_PORT / MINIO_CONSOLE_HOST_PORT | 9000 / 9001 | MinIO API / console |
The gateway (:18056) is the one front door; the terminal web workbench is at :13000. The other host
ports above are bound to 127.0.0.1 for local inspection and aren’t needed for day-to-day use.