Skip to main content
Use the repository’s .env.example as the source of truth for local development and .env.self-hosted.example as the source of truth for Docker Compose self-hosting. This page summarizes the variables operators most often need to understand.
Secrets such as provider API keys, auth tokens, signing keys, and encryption keys must be configured only in backend or deployment secret stores. Do not expose them through VITE_ variables.

Shared app URLs and secrets

For Compose self-hosting, use DEPLOYMENT_MODE=self_hosted_standard and mirror it into VITE_DEPLOYMENT_MODE before rebuilding the web image.

Docker Compose self-hosting

These variables are defined in .env.self-hosted.example and used by docker-compose.self-hosted.yml. See the Docker Compose guide for bootstrap and go-live steps.

Convex CLI and backend container

The voice gateway always uses the internal Docker URL http://convex-backend:3211 for Convex HTTP actions. Keep CONVEX_SITE_URL in .env.self-hosted as the public or browser-facing URL; pnpm self-hosted:convex:env syncs that value into the Convex deployment for webhooks and auth.

Host ports and ingress

Caddy hostnames

Caddy routing is defined in docker/caddy/Caddyfile and baked into the Caddy image at build time.

Smoke verification overrides

Optional overrides for pnpm self-hosted:verify when using non-default ports:
After changing public URLs (CONVEX_URL, CONVEX_SITE_URL, APP_BASE_URL, hostnames), rebuild the web image and rerun pnpm self-hosted:convex:env. See Docker Compose.

Web dashboard build variables

Voice gateway

Optional OpenAI cost fallback variables exist in .env.example for telemetry when automatic model pricing is unavailable.

Twilio

Google Calendar

Google Calendar token storage also requires SESSION_ENCRYPTION_KEY.

Knowledge and AI text providers

SMS compliance

Email

Telemetry