Skip to content

Latest commit

 

History

History
 
 

deploy

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 

README.md

Deployment

Why

Vexa can be used without any deployment — the hosted service at vexa.ai gives you an API key and you start sending bots immediately.

Self-hosting gives you control over your data and infrastructure. Three options, from simplest to most flexible.

What

Option 0: Hosted (no deployment)

Get an API key at vexa.ai/account. Start sending bots. No infrastructure needed.

Option 1: Lite (easiest self-host)

Single Docker container. Needs external Postgres + transcription service. See lite/README.md.

Option 2: Docker Compose (development)

Full stack locally. All services, Postgres, Redis. See compose/README.md and the root Makefile: make all.

Option 3: Helm (production K8s)

Two charts: vexa (full) and vexa-lite (single-pod). See helm/README.md.

Transcription service

All self-hosted deployments need a transcription service:

  • Ready to go: Use Vexa transcription — sign up at vexa.ai, get a transcription API key. No GPU needed.
  • Self-host: Run services/transcription-service on your own GPU for full data sovereignty.

Image Tagging

Every build produces an immutable timestamp tag (YYMMDD-HHMM). Mutable tags (dev, staging, latest) are pointers updated only during publication — never during builds.

Tag hierarchy

Tag Created by Mutates? Purpose
YYMMDD-HHMM make build Never The actual identity of a build
dev make publish Yes — re-pointed Latest published development build
staging make promote-staging Yes — re-pointed Staging cluster deployment
latest make promote-latest Yes — re-pointed Production-ready release

Registry

All images live on DockerHub under the vexaai/ namespace:

  • vexaai/api-gateway, vexaai/admin-api, vexaai/meeting-api, vexaai/agent-api, vexaai/runtime-api, vexaai/mcp, vexaai/dashboard, vexaai/tts-service, vexaai/vexa-bot

Dev cycle

make build              # builds all images → vexaai/*:260330-1415 (saved to .last-tag)
make up                 # runs those exact images
make publish            # pushes to DockerHub + updates :dev pointer
make promote-staging    # re-points :staging → specific build
make promote-latest     # re-points :latest → specific build

During development, you always run images with a specific timestamp tag, so you know exactly what code is in each container.

How

Environment variables

One env-example covers both modes: env/env-example

Variable Required Description
DASHBOARD_PATH Compose only Absolute path to vexa-dashboard checkout
TRANSCRIPTION_SERVICE_URL Yes Transcription API endpoint
TRANSCRIPTION_SERVICE_TOKEN If needed Auth token for transcription
LOCAL_TRANSCRIPTION No Set true to run GPU transcription locally
REMOTE_DB No Set true to use external Postgres
ADMIN_API_TOKEN No Admin API auth token (default: changeme)

Which mode?

You want... Use
Use Vexa without deploying anything Hosted at vexa.ai
Easiest self-host Lite
Develop / contribute make all (Docker Compose)
Production with scaling Helm

Definition of Done

# Item Weight Status Evidence Last checked
1 Lite option documented and working 20 PASS Lite validated 2026-04-05, 14/14 services, transcription OK 2026-04-05T18:50Z
2 Compose option documented and working 20 PASS Compose validated in previous sessions, make all works 2026-04-05
3 Helm option documented 10 SKIP Charts exist but not tested on cluster —
4 Image tagging docs match Makefile 15 PASS YYMMDD-HHMM tags confirmed in builds 2026-04-05
5 Transcription service options explained 10 PASS Hosted + self-host both documented 2026-04-05
6 Environment variable reference complete 15 PARTIAL env-example exists, lite vars now complete, compose vars need audit 2026-04-05
7 All registry image names correct 10 SKIP Not verified this run —

Confidence

Score: 65/100 Last validated: 2026-04-05 (full-stack-lite run) Ceiling: Helm untested, compose env vars need audit, registry image names unverified