Skip to content

Configuration reference

Configuration is environment-only, validated strictly at boot: a missing required variable fails fast with a clear message rather than starting a half-configured desk. Values live in the deploy/.env file, which is git-ignored — never in the committed templates.

VariableRequiredMeaning
NODE_ENVnoproduction on a server
APP_NAMEnoThe deployment’s display name (white-label)
APP_URLyesPublic URL of the desk — used in links and OAuth callbacks
FRONTEND_URLyesPublic URL of the frontend (usually the same)
VariableRequiredMeaning
DATABASE_URLyesPostgreSQL connection string
DIRECT_URLnoDirect (non-pooled) URL, if DATABASE_URL goes through a pooler
REDIS_HOST / REDIS_PORTyesRedis location
REDIS_PASSWORDnoIf your Redis requires auth
VariableRequiredMeaning
JWT_PRIVATE_KEY / JWT_PUBLIC_KEYrecommendedRSA pair signing sessions. Generated at first boot if absent — set your own for production
COOKIE_SECRETrecommendedCookie signing secret — same generation rule
OAUTH_ENCRYPTION_KEYyes with integrationsEncrypts stored OAuth/IMAP/AI credentials at rest

The platform-level sender, used until organizations configure their own sending — and always for password resets:

VariableMeaning
SMTP_HOST / SMTP_PORT / SMTP_SECUREServer and TLS mode
SMTP_USERNAME / SMTP_PASSWORDCredentials, if the server requires them
SMTP_FROMDefault From address
VariableMeaning
CORS_ORIGINSExtra allowed browser origins, comma-separated
RATE_LIMIT_TTL / RATE_LIMIT_LIMITRequest rate limiting window and budget
LOG_LEVELinfo by default; debug enables per-call diagnostics
OTEL_ENABLED / OTEL_EXPORTER_OTLP_ENDPOINTOpenTelemetry export, if you run a collector
SWAGGER_ENABLEDServe the interactive API explorer

Compose-level variables (POSTGRES_PASSWORD, exposure ports…) are documented inline in deploy/docker-compose.yml.