Service URLs for internal and external communication.
Variable
Default
Description
FRONTEND_URL
http://localhost:3000
Public frontend URL
BACKEND_URL
http://aurora-server:5080
Internal backend URL (container-to-container)
NEXT_PUBLIC_BACKEND_URL
http://localhost:5080
Public backend URL (browser access)
NEXT_PUBLIC_WEBSOCKET_URL
ws://localhost:5006
Public WebSocket URL
CHATBOT_INTERNAL_URL
http://chatbot:5007
Internal chatbot URL
FRONTEND_URL=http://localhost:3000
BACKEND_URL=http://aurora-server:5080
NEXT_PUBLIC_BACKEND_URL=http://localhost:5080
NEXT_PUBLIC_WEBSOCKET_URL=ws://localhost:5006
CHATBOT_INTERNAL_URL=http://chatbot:5007
Remote / VM Deployment
When deploying on a remote server or VM, set the NEXT_PUBLIC_* and FRONTEND_URL variables to the machine's IP or hostname:
FRONTEND_URL=http://YOUR_IP:3000
NEXT_PUBLIC_BACKEND_URL=http://YOUR_IP:5080
NEXT_PUBLIC_WEBSOCKET_URL=ws://YOUR_IP:5006
These values are injected at container startup (not baked at build time), so you do not need to rebuild images after changing them. Just recreate the frontend container:
docker compose -f docker-compose.prod-local.yml up -d frontend
All requests go through OpenRouter. One key gives access to models from Anthropic, OpenAI, Google, and others.
OPENROUTER_API_KEY
direct
Requests go directly to each provider's API based on the model prefix (e.g. anthropic/... → Anthropic API). No OpenRouter account needed, but you need a separate API key for each provider you use.
Provider-specific key(s)
auto
Same behaviour as direct.
Provider-specific key(s)
provider name
Set to a provider such as bedrock, vertex, anthropic, openai, google, or ollama to route every model selection through that provider (clean model picks are translated to its native id). Models the provider can't serve fall back to their own native provider.
That provider's config
openrouter is recommended for most deployments — a single key, broadest model selection, and no need to manage multiple provider accounts.
One bedrock provider with two modes, auto-selected: set BEDROCK_BASE_URL for gateway mode (OpenAI-compatible endpoint in front of Bedrock), or leave it unset for native mode (AWS SDK). BEDROCK_* variables take precedence over the standard AWS_* ones.
For native mode, set LLM_PROVIDER_MODE=bedrock to route clean model picks (e.g. anthropic/claude-sonnet-4.6) through Bedrock automatically — translated to the matching inference-profile id, region-aware. For gateway mode (or to pin specific ids), use LLM_PROVIDER_MODE=direct and point MAIN_MODEL (etc.) at an explicit bedrock/<id> model.
Variable
Default
Description
BEDROCK_BASE_URL
-
Gateway mode: OpenAI-compatible base URL (e.g. .../v1). When set, Aurora uses gateway mode.
BEDROCK_API_KEY
not-needed
Gateway mode only. Optional — many VPC gateways need no key.
BEDROCK_REGION
-
Native mode AWS region. Falls back to AWS_REGION / AWS_DEFAULT_REGION.
BEDROCK_ACCESS_KEY_ID
(AWS_ACCESS_KEY_ID)
Native mode access key. Omit to use an IAM role / default credential chain.
BEDROCK_SECRET_ACCESS_KEY
(AWS_SECRET_ACCESS_KEY)
Native mode secret key.
BEDROCK_SESSION_TOKEN
(AWS_SESSION_TOKEN)
Native mode session token, used alongside BEDROCK_ACCESS_KEY_ID / BEDROCK_SECRET_ACCESS_KEY for temporary / STS credentials. Omit for long-lived keys, a profile, or an IAM role.
BEDROCK_PROFILE
-
Native mode named AWS profile (alternative to explicit keys).
# Gateway mode (OpenAI-compatible endpoint, e.g. a Bedrock Access Gateway in your VPC)
Model for background RCA (format: provider/model). Overrides RCA_OPTIMIZE_COSTS when set. Default RCA path when ORCHESTRATOR_ENABLED=false.
RCA_OPTIMIZE_COSTS
true
Only used when RCA_MODEL is not set. true = anthropic/claude-haiku-4.5, false = anthropic/claude-opus-4.6
ORCHESTRATOR_ENABLED
false
Multi-agent RCA orchestrator (opt-in). When true, a lead orchestrator triages each background RCA and may fan out parallel read-only sub-agents; RCA_MODEL is ignored. When false (default), RCA uses the single-agent path with RCA_MODEL.
RCA_ORCHESTRATOR_MODEL
-
Only when ORCHESTRATOR_ENABLED=true. Brain model for triage + synthesis. Format: provider/model.
RCA_SUBAGENT_MODEL
-
Only when ORCHESTRATOR_ENABLED=true. Sub-agent investigator model. Per-role overrides in orchestrator/roles/*.md frontmatter take precedence. Format: provider/model.
Fallback only — the secrets backend path aurora/system/github-app/webhook-secret (Vault or AWS Secrets Manager) takes precedence.
GH_OAUTH_CLIENT_ID
OAuth App Client ID. Required only when GITHUB_AUTH_MODE is oauth or hybrid.
GH_OAUTH_CLIENT_SECRET
OAuth App Client Secret. Required only when GITHUB_AUTH_MODE is oauth or hybrid.
NEXT_PUBLIC_ENABLE_INCIDENT_PREVENTION
true
Master switch for pre-merge PR risk review (GitHub and Bitbucket). Must be set on the server and the Celery worker — the webhook ingress and the review task each check it independently.
Bitbucket connects via a scoped API token entered in the UI (no env vars) or
optional OAuth (BB_OAUTH_CLIENT_ID / BB_OAUTH_CLIENT_SECRET +
NEXT_PUBLIC_ENABLE_BITBUCKET_OAUTH=true).
Incident Prevention on Bitbucket needs no additional environment
variables: connect Bitbucket, flip the per-repo Incident Prevention
toggle, and paste the returned webhook URL
({API_URL}/bitbucket/webhook/{org_id}) + org secret into each repository's
Bitbucket webhook settings (events pullrequest:created and
pullrequest:updated). The per-org HMAC secret is generated by Aurora and
stored in the secrets backend, not in .env. The shared
NEXT_PUBLIC_ENABLE_INCIDENT_PREVENTION flag (see the GitHub table above)
gates this feature too.
Aurora can also create, verify and remove that webhook for you if the connected
credentials carry the read:webhook:bitbucket, write:webhook:bitbucket and
delete:webhook:bitbucket scopes (the single Webhooks scope on an OAuth
consumer covers all three). Without them the manual paste above still works —
the hook is confirmed automatically on the first pull request event, since
Bitbucket sends no test event when a webhook is saved. Note that without
delete:webhook:bitbucket, disabling Incident Prevention stops all PR reviews
but leaves the webhook in place, so Bitbucket keeps sending events that Aurora
discards; remove it by hand to stop them.
Optional: to post reviews as a dedicated bot account instead of the connected
user, provision a system secret (again, not an env var):
vault kv put aurora/system/bitbucket-bot/credentials \
Internal Aurora API URL (shared with other services)
The MCP server authenticates clients via Bearer tokens stored in the mcp_tokens database table. No additional environment variable is needed for token configuration -- see the MCP integration guide for details.
All three files read GUNICORN_WORKERS, GUNICORN_THREADS, CELERY_CONCURRENCY, DB_POOL_MIN, and DB_POOL_MAX from the .env file. Set them there to tune concurrency across all environments.
Keep Docker Compose Files in Sync
When adding new environment variables, update all three Docker Compose files to ensure consistency.