Environment variables (cheat sheet)
The canonical list is at Self-hosting → Environment variables.
Below is a one-line cheat sheet for quick lookups.
Required
Section titled “Required”DATABASE_URL=postgresql://…POSTGRES_PASSWORD=…REDIS_URL=redis://…JWT_SECRET= # ≥32 charsAt least one AI provider
Section titled “At least one AI provider”ANTHROPIC_API_KEY=sk-ant-…OPENAI_API_KEY=sk-…GEMINI_API_KEY=AIza…Optional — AI Council + tuning
Section titled “Optional — AI Council + tuning”AI_COUNCIL_MODE=majority # strict-quorum | majority | best-availableAI_COUNCIL_MIN_PROVIDERS=2SELF_CONSISTENCY_N=3CRITIQUE_REVISE_THRESHOLD=20PLAN_ATTEMPT_CAP=3Optional — per-provider model overrides
Section titled “Optional — per-provider model overrides”MODEL_PLANNER_ANTHROPIC=claude-sonnet-4-6MODEL_PLANNER_OPENAI=gpt-4oMODEL_PLANNER_GOOGLE=gemini-2.0-flash-expMODEL_BA_ANTHROPIC=claude-haiku-4-5…Optional — local models
Section titled “Optional — local models”AI_CUSTOM_ENABLED=1AI_CUSTOM_BASE_URL=http://host.docker.internal:11434/v1AI_CUSTOM_API_KEY=sk-placeholderAI_CUSTOM_MODELS=llama3.1:70b,qwen2.5-coder:14bOptional — integrations
Section titled “Optional — integrations”JIRA_BASE_URL=https://acme.atlassian.netJIRA_EMAIL=…JIRA_API_TOKEN=…SLACK_BOT_TOKEN=xoxb-…SLACK_SIGNING_SECRET=…GCHAT_WEBHOOK_URL=…TWILIO_ACCOUNT_SID=AC…TWILIO_AUTH_TOKEN=…TWILIO_PHONE_NUMBER=+14155551234GITHUB_WEBHOOK_SECRET=…Optional — security
Section titled “Optional — security”CORS_ORIGINS=https://app.example.comCOOKIE_SECURE=1COOKIE_SAMESITE=laxRATE_LIMIT_AUTH_PER_MIN=20RETAIN_RECORDINGS=0RETAIN_CALL_AUDIO=0Optional — budgets
Section titled “Optional — budgets”PLANNER_MONTHLY_BUDGET_TOKENS=2000000AGENT_MONTHLY_BUDGET_TOKENS=10000000VOICE_MONTHLY_MINUTES=1000Optional — observability
Section titled “Optional — observability”LOG_LEVEL=infoLOG_FORMAT=jsonMETRICS_ENABLED=0OTEL_EXPORTER_OTLP_ENDPOINT=https://otel…TRACE_SAMPLE_RATE=0.1Optional — features + cron
Section titled “Optional — features + cron”FEATURE_AUTO_BRIEF=0FEATURE_VOICE_ENABLED=1FEATURE_PROJECT_GRAPH=1WORKFORCE0_CRON_ENABLED=1 # exactly one replica at scaleDIGEST_CRON_HOUR=9DIGEST_TIMEZONE=UTCRegenerating a full .env.example
Section titled “Regenerating a full .env.example”cd backendnpm run env:template > .env.exampleStays in sync with the Zod schema that parses env on boot.