Skip to content

Configuration

All configuration is via environment variables. The canonical list is .env.example in the source repo; the tables below track that same set with one-line descriptions and required/optional status. Conditionally-required variables are marked as such in the Required column.

Pre-release

Variable names may be renamed before the first tagged release.

Required

These have no safe default — the server will not start without them.

VariableRequiredDefaultDescription
DATABASE_URLyesPostgres connection string.
SECRETS_ENCRYPTION_KEYyesActive master key for the secrets vault, as 64 hex characters (32 bytes). Encrypts every secret, OAuth token, and IdP credential.
SIGNING_KEYyes64-hex-character (32-byte) key used to sign OAuth and session tokens.

Server & network

VariableRequiredDefaultDescription
HOSTno0.0.0.0Address to bind on.
PORTno8080Port to bind on. 8080 is the compiled fallback for serve when PORT is unset; .env.example ships PORT=3000 as a starting value. web does not use this default — it resolves its port as --port > OVERSLASH_WEB_PORT > PORT > 7171 (see the CLI).

Approvals

VariableRequiredDefaultDescription
APPROVAL_EXPIRY_SECSno1800Seconds a pending approval lives before it expires.

Logging

VariableRequiredDefaultDescription
RUST_LOGnoinfoLog-level filter (standard tracing/env_logger syntax, e.g. info, debug, overslash=trace).

Local development

VariableRequiredDefaultDescription
DEV_AUTHnounsetEnables /auth/dev/token, which returns a session cookie for dev@overslash.local. Needed for the screenshot script and non-OAuth local testing. Leave unset in production.

OAuth providers

Optional. Enable Overslash-managed sign-in: when set, corp orgs that opt in accept authentication through these shared OAuth apps (admission is still gated by each org's invite allowlist). Leave unset to require every org to register its own OAuth app. Provide both halves of a pair.

VariableRequiredDefaultDescription
GOOGLE_AUTH_CLIENT_IDnounsetGoogle OAuth client ID for managed sign-in.
GOOGLE_AUTH_CLIENT_SECRETnounsetGoogle OAuth client secret.
GITHUB_AUTH_CLIENT_IDnounsetGitHub OAuth client ID for managed sign-in.
GITHUB_AUTH_CLIENT_SECRETnounsetGitHub OAuth client secret.

Billing

Optional — only needed when CLOUD_BILLING=true. The lookup keys resolve to a literal price_… ID at startup; set the same value on the matching Price in the Stripe Dashboard.

VariableRequiredDefaultDescription
CLOUD_BILLINGnofalseWhen true, gates Team-org creation behind a Stripe subscription.
STRIPE_SECRET_KEYif CLOUD_BILLING=trueStripe API secret key (sk_…).
STRIPE_WEBHOOK_SECRETif CLOUD_BILLING=trueStripe webhook signing secret (whsec_…).
STRIPE_EUR_LOOKUP_KEYnooverslash_seat_eurStripe lookup key for the EUR seat price.
STRIPE_USD_LOOKUP_KEYnooverslash_seat_usdStripe lookup key for the USD seat price.

Email

Optional. With EMAIL_PROVIDER unset the API uses a no-op mailer and boots cleanly. Setting EMAIL_PROVIDER without a real EMAIL_API_KEY and EMAIL_FROM fails startup validation.

VariableRequiredDefaultDescription
EMAIL_PROVIDERnounsetTransactional email provider, e.g. resend. Unset → no-op mailer.
EMAIL_FROMif EMAIL_PROVIDER setFrom address for outbound mail (e.g. no-reply@overslash.com).
EMAIL_REPLY_TOnounsetReply-To address.
EMAIL_API_KEYif EMAIL_PROVIDER setProvider API key (e.g. Resend re_…).

See also

Pre-release software — subject to change without notice.