Environment variables

July 16, 2026 · View on GitHub

Complete reference for every environment variable the server and CLI read. Defaults are in .env.example (server) and built into the CLI (client).

Server (observal-server)

Core / security

VariableDefaultDescription
SECRET_KEYchange-me-to-a-random-stringSession signing key. Generate: python3 -c "import secrets; print(secrets.token_urlsafe(32))"
FRONTEND_URLhttp://localhost:3000External frontend URL (OAuth redirects, email links)
CORS_ALLOWED_ORIGINShttp://localhost:3000Comma-separated allowed CORS origins
MAX_REQUEST_SIZE_MB10Maximum request body size
RATE_LIMIT_AUTH10/minuteGeneral auth-endpoint rate limit
RATE_LIMIT_AUTH_STRICT5/minuteLogin and password-reset rate limit

Databases

VariableDefaultDescription
DATABASE_URLpostgresql+asyncpg://postgres:postgres@localhost:5432/observalPostgres async connection string
POSTGRES_USERpostgresPostgres container user
POSTGRES_PASSWORDpostgresPostgres container password
CLICKHOUSE_URLclickhouse://localhost:8123/observalClickHouse HTTP endpoint
CLICKHOUSE_USERdefaultClickHouse user
CLICKHOUSE_PASSWORDclickhouseClickHouse password
REDIS_URLredis://localhost:6379Redis connection string
DATA_RETENTION_DAYS90ClickHouse TTL in days. 0 disables. Minimum non-zero: 7

SSO

OIDC, SAML, and SSO-only mode are configured in Admin → SSO and stored in dynamic settings. OIDC client changes require an API restart. Existing OAUTH_*, SSO_ONLY, and SAML_* values are imported once on startup when the matching dynamic setting is not already present.

JWT signing

VariableDefaultDescription
JWT_SIGNING_ALGORITHMES256ES256 or RS256
JWT_KEY_DIR~/.observal/keys (outside Docker) / /data/keys (Docker)Directory for generated signing keys - back this up

AWS (Bedrock)

AWS (Bedrock)

Note: Bedrock now supports API keys — generate one from the AWS console and use it like any other provider. See Insights LLM Setup.

These environment variables are not required if you use Bedrock API keys (recommended). They exist only for legacy setups using instance roles or ECS task roles where LiteLLM auto-discovers credentials from the environment.

VariableDefaultDescription
AWS_ACCESS_KEY_ID-Only for legacy IAM auth (not recommended)
AWS_SECRET_ACCESS_KEY-Only for legacy IAM auth (not recommended)
AWS_SESSION_TOKEN-Temporary credentials (STS AssumeRole)
AWS_REGION_NAMEus-east-1AWS region (used by LiteLLM's boto3 client)

Git operations (submission analysis)

VariableDefaultDescription
ALLOW_INTERNAL_URLSfalseAllow internal/private Git URLs (for GitLab / GHE)
GIT_CLONE_TOKEN-Auth token for private repos
GIT_CLONE_TOKEN_USERx-access-tokenToken username: x-access-token (GitHub), oauth2 or private-token (GitLab)
GIT_CLONE_TIMEOUT120Clone timeout, seconds

Demo accounts (seeded on first startup if no users exist)

VariableDefault
DEMO_SUPER_ADMIN_EMAILsuper@demo.example
DEMO_SUPER_ADMIN_PASSWORDsuper-changeme
DEMO_ADMIN_EMAILadmin@demo.example
DEMO_ADMIN_PASSWORDadmin-changeme
DEMO_REVIEWER_EMAILreviewer@demo.example
DEMO_REVIEWER_PASSWORDreviewer-changeme
DEMO_USER_EMAILuser@demo.example
DEMO_USER_PASSWORDuser-changeme

Unset every DEMO_* variable before a real deployment.

Docker host ports

Used only by Docker Compose. Prometheus and Grafana ports apply only when docker-compose.observability.yml is included. Remap if a default is already in use.

VariableDefaultService
API_HOST_PORT8000API (internal, behind LB)
WEB_HOST_PORT3000Web UI
POSTGRES_HOST_PORT5432Postgres
CLICKHOUSE_HOST_PORT8123ClickHouse
REDIS_HOST_PORT6379Redis
PROMETHEUS_HOST_PORT9090Prometheus, optional
GRAFANA_HOST_PORT3001Grafana, optional

Grafana

Only used when the optional Grafana overlay or Terraform observability_stack = "grafana" is enabled.

VariableDefaultDescription
GRAFANA_ADMIN_USERadminGrafana admin username
GRAFANA_ADMIN_PASSWORDadminGrafana admin password

CLI (observal-cli)

Read from the environment at invocation time. Override values in ~/.observal/config.json per invocation.

VariableDefaultDescription
OBSERVAL_SERVER_URLfrom ~/.observal/config.jsonServer URL
OBSERVAL_ACCESS_TOKENfrom ~/.observal/config.jsonAccess token (preferred for CI)
OBSERVAL_API_KEYfrom ~/.observal/config.jsonAPI key alias for OBSERVAL_ACCESS_TOKEN (backward-compat)
OBSERVAL_TIMEOUT30HTTP timeout in seconds

Example CI usage:

export OBSERVAL_SERVER_URL=https://observal.your-company.internal
export OBSERVAL_API_KEY=<key>

observal ops traces --limit 100 --output json | jq