Skip to main content
Every variable below is read by the API from apps/api/.env, or from the environment of the API container. Everything except DATABASE_URL and AUTH_SECRET has a working default.
Three settings stop a deployment cold. AUTH_SECRET must be at least 32 characters or the API refuses to boot, and changing it signs out every user. Compose refuses to start when POSTGRES_PASSWORD or AUTH_SECRET is missing or empty from the root .env.

Required

Core

Scheduling

Every cron expression is evaluated in UTC. See The daily pipeline and rate limits.

Collection rate limits

Raising either value risks the host IP address being throttled by the store. See The daily pipeline and rate limits.

Alerts

See Send alerts.

Email delivery

Email stays disabled until both SMTP_HOST and SMTP_FROM are set.

Action Center

See Work the Action Center.

Data retention

0 means keep forever. Pruning runs on CRON_RETENTION.

Authentication

See Authentication and accounts.

Entitlements

Optional AI

See Enable the optional AI features.

Admin surfaces

See The queue dashboard and the OpenAPI surface.

Compose only

These two live in the root .env and are read by docker-compose.yml, not by the API directly.

Retired variables

BULL_BOARD_USER and BULL_BOARD_PASSWORD are ignored. The queue dashboard now requires an owner session or a personal API token instead of basic authentication, and the API logs a warning at boot if either variable is still set. Remove them.

Keeping this page correct

This page and the .env.example files change in the same commit. If a default here disagrees with apps/api/.env.example, the file is right and this page is a bug.
Last modified on July 31, 2026