Self-HostingConfiguration
Updated September 1, 2026
Configuration
Every environment variable for the self-hosted workspace backend and frontend, with defaults and when you need them.
Backend
Source of truth: workspace/backend/app/config.py. Everything is an
environment variable; unset means the listed default.
Core
| Variable | Default | Notes |
|---|---|---|
DATABASE_URL | postgresql://postgres:dev@localhost:5432/openagents_workspace | Postgres 15+. Point at pgbouncer when scaling. |
REDIS_URL | — | Poll cache + cross-replica events. Required for >1 replica. |
AUTH_MODE | workspace_token | workspace_token (self-hosted default) or firebase — see Authentication. |
CORS_ORIGINS | * | Comma-separated. Set to your frontend origin in production. |
HOST / PORT | 0.0.0.0 / 8000 |
Files
| Variable | Default | Notes |
|---|---|---|
FILE_STORAGE_BACKEND | local | local or s3 |
FILE_STORAGE_PATH | /tmp/openagents_files | Mount a volume when using local |
S3_BUCKET / S3_REGION | — / us-east-1 | Plus standard AWS_* credentials |
MAX_FILE_SIZE | 50 MB | Bytes |
Optional features
| Variable | Default | Notes |
|---|---|---|
ROUTER_LLM_ENABLED | true | Multi-agent turn-taking router. Needs ROUTER_LLM_API_KEY (any OpenAI-compatible endpoint via ROUTER_LLM_BASE_URL); without a key, round-robin fallback. |
YUMI_ENABLED / YUMI_API_KEY | true / — | The built-in onboarding assistant is only provisioned when a key is set — self-hosted instances without one simply don't get Yumi. |
BROWSERFABRIC_* | — | Shared cloud browser; leave unset to disable the Browser tab. |
RESEND_API_KEY / EMAIL_FROM | — | Invitation + feedback emails. Unset = copy-the-link flows. |
FEEDBACK_EMAIL_TO | — | Where in-app feedback is forwarded. |
Hosted-only (leave unset)
FIREBASE_* (unless bringing your own project), APNS_*, GOOGLE_OAUTH_*,
SLACK_*, CAMPAIGN_* — these power the hosted deployment's login, mobile
push, integrations and credits campaign.
Frontend
| Variable | Default | Notes |
|---|---|---|
NEXT_PUBLIC_API_URL | https://workspace-endpoint.openagents.org | Your backend URL. The one variable you must set. |
Build with npm run build && npm run start, or use the container from the
compose file.
Note
A new backend variable that isn't documented here is a bug — the reference is
checked against config.py in CI. Open an issue if you spot drift.
