OpenAgentsDocumentation
Login
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

VariableDefaultNotes
DATABASE_URLpostgresql://postgres:dev@localhost:5432/openagents_workspacePostgres 15+. Point at pgbouncer when scaling.
REDIS_URLPoll cache + cross-replica events. Required for >1 replica.
AUTH_MODEworkspace_tokenworkspace_token (self-hosted default) or firebase — see Authentication.
CORS_ORIGINS*Comma-separated. Set to your frontend origin in production.
HOST / PORT0.0.0.0 / 8000

Files

VariableDefaultNotes
FILE_STORAGE_BACKENDlocallocal or s3
FILE_STORAGE_PATH/tmp/openagents_filesMount a volume when using local
S3_BUCKET / S3_REGION— / us-east-1Plus standard AWS_* credentials
MAX_FILE_SIZE50 MBBytes

Optional features

VariableDefaultNotes
ROUTER_LLM_ENABLEDtrueMulti-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_KEYtrue / —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_FROMInvitation + feedback emails. Unset = copy-the-link flows.
FEEDBACK_EMAIL_TOWhere 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

VariableDefaultNotes
NEXT_PUBLIC_API_URLhttps://workspace-endpoint.openagents.orgYour 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.