Skip to content
ABRQ DATADocs Abrq DIP · latest
Product page Request a trial
On this page

Environment Variables

How to read this page#

All backend settings share the ABRQ_ prefix and are read once at process start — changing any of them requires a restart of the affected processes (API, worker, beat). There are 57 settings fields in total. Two have no default and are required: the backend refuses to start without ABRQ_MASTER_KEY and ABRQ_JWT_SECRET.

Variables marked deprecated still work but only as a one-time first-boot seed into the in-app settings store (see Notifications).

The compose-only and build-time variables at the end of this page are consumed by Docker Compose files, the container entrypoint, or image builds — not by the backend settings module.

Runtime mode and logging#

Variable Type Default Effect
ABRQ_ENV enum dev dev / prod / test. Prod enables the license, integrity, and HTTPS startup guards; test forces synchronous runs
ABRQ_LOG_LEVEL string INFO Structured-log level

Databases and pooling#

Variable Type Default Effect
ABRQ_DATABASE_URL URL postgresql+asyncpg://abrq_dip:abrq_dip@localhost:5432/abrq_dip_framework Framework (metadata) database
ABRQ_DATASTORE_URL URL postgresql+asyncpg://abrq_dip:abrq_dip@localhost:5432/abrq_dip_datastore Datastore (CDC legacy mirrors and file landings)
ABRQ_DB_POOL_SIZE int 10 Connection-pool size per engine
ABRQ_DB_MAX_OVERFLOW int 5 Extra pool connections under burst

Filesystem roots and backups#

Variable Type Default Effect
ABRQ_EXPORT_LOCAL_ROOT path /var/abrq-dip/exports Path-jail root for the local export connector
ABRQ_BACKUP_ROOT path /var/abrq-dip/backups Confinement root for automatic metadata backups
ABRQ_BACKUP_DURABLE bool true false marks good backups as ok_ephemeral (no durable volume behind the path)

Master key and secrets store#

Variable Type Default Effect
ABRQ_MASTER_KEY key required — no default Fernet master key (32 url-safe base64 bytes) encrypting the secrets table. Comma-separated NEW,OLD list enables rotation
ABRQ_MASTER_KEY_VERSION int 1 Version stamped on newly written secret rows; bump when rotating
ABRQ_SECRET_BACKEND enum fernet Secret-backend seam; vault / aws are reserved and currently refuse to start

Authentication and sessions#

Variable Type Default Effect
ABRQ_JWT_SECRET string required — no default JWT signing secret (at least 32 chars in prod)
ABRQ_JWT_ALGORITHM enum HS256 HS256 / HS384 / HS512
ABRQ_ACCESS_TOKEN_TTL_MINUTES int 15 Access-token lifetime
ABRQ_REFRESH_TOKEN_TTL_DAYS int 7 Refresh-token lifetime
ABRQ_SSO_STATE_TTL_SECONDS int 600 OIDC state-token lifetime
ABRQ_BCRYPT_ROUNDS int 12 Password-hashing cost

Initial admin seed#

Applied only when the users table is empty (first boot).

Variable Type Default Effect
ABRQ_INITIAL_ADMIN_USERNAME string admin First admin username
ABRQ_INITIAL_ADMIN_EMAIL string admin@abrq-dip.dev First admin email
ABRQ_INITIAL_ADMIN_PASSWORD string password First admin password; prod refuses to start with the literal default
ABRQ_INITIAL_PASSWORD_FILE path /var/abrq-dip/initial-password.txt Where the seed writes the initial password (mode 0600)

HTTP security#

Variable Type Default Effect
ABRQ_CORS_ALLOWED_ORIGINS list http://localhost:5173,http://localhost:3000 Allowed browser origins; prod must set explicitly
ABRQ_ENABLE_HSTS bool false Emit the HSTS header
ABRQ_ALLOW_INSECURE bool false 1 disables the prod HTTPS guard (for load-balancer-terminated TLS)

Data-layer behavior#

Variable Type Default Effect
ABRQ_KEY_COLLATION_BINARY bool false Use BINARY collation on string primary keys of newly created CDC mirror tables

Egress protection#

Variable Type Default Effect
ABRQ_SSRF_PROTECTION bool true Block outbound requests to loopback, link-local, private, and reserved ranges
ABRQ_EGRESS_ALLOWED_INTERNAL_HOSTS list empty Exact hostnames exempted from the egress block

Observability#

Variable Type Default Effect
ABRQ_OTLP_ENDPOINT URL empty OpenTelemetry exporter endpoint; blank disables export
ABRQ_OTLP_SERVICE_NAME string abrq-dip Reported service name
ABRQ_OTLP_HEADERS list empty Comma-separated key=value exporter headers

Rate limiting#

Variable Type Default Effect
ABRQ_WEBHOOK_RATE_LIMIT string 60/minute Per-token cap on webhook-triggered runs

License and integrity#

Variable Type Default Effect
ABRQ_LICENSE_FILE path /var/abrq-dip/license.json License file location — see Licensing
ABRQ_LICENSE_CLOCK_SKEW_SECONDS int 3600 Tolerated clock lag behind the monotonic anchor — see Expiry and clock integrity
ABRQ_LICENSE_ALERT_KIND enum empty Deprecated — first-boot seed only; configure in Settings → Notifications
ABRQ_LICENSE_ALERT_TARGET secret empty Deprecated — first-boot seed only; the alert target is a write-only secret in the UI
ABRQ_INTEGRITY_MANIFEST_PATH path /app/.abrq-dip-integrity.json Build-integrity manifest checked at prod startup
ABRQ_REQUIRE_SIGNED_MANIFEST bool true Require the integrity manifest to be vendor-signed

Runs and background processing#

Variable Type Default Effect
ABRQ_RUNS_MODE enum sync sync runs inline in the API process; celery enqueues to workers (production deployments set celery)
ABRQ_REDIS_URL URL redis://localhost:6379/0 Broker and dedup cache
ABRQ_CELERY_QUEUE_NAME string abrq_dip Base queue name
ABRQ_CELERY_CONCURRENCY int 4 Advisory only — the entrypoint's --concurrency flag is what the worker actually applies
ABRQ_RUN_SHUTDOWN_GRACE_SECONDS int 60 Drain window for in-flight runs on worker shutdown
ABRQ_JOB_MAX_PARALLELISM_CAP int 0 Deployment-wide ceiling on a job's max_parallelism; 0 = no cap; the smaller value wins
ABRQ_PUBLIC_BASE_URL URL empty Base URL used for deep links in chat notifications

SMTP transport — deprecated#

The whole block is a deprecated one-time first-boot seed into Settings → Notifications; once anything is configured there, the database wins. See Notifications.

Variable Type Default Effect
ABRQ_SMTP_HOST string empty SMTP host seed
ABRQ_SMTP_PORT int 587 SMTP port seed
ABRQ_SMTP_USERNAME string empty SMTP username seed
ABRQ_SMTP_PASSWORD secret empty SMTP password seed (stored encrypted after seeding)
ABRQ_SMTP_STARTTLS bool true STARTTLS seed
ABRQ_SMTP_SSL bool false Implicit-TLS seed
ABRQ_SMTP_FROM string abrq-dip-notify@localhost From-address seed
ABRQ_SMTP_TIMEOUT_SECONDS float 15 Send timeout seed

AI#

Variable Type Default Effect
ABRQ_AI_REQUEST_TIMEOUT_SECONDS float 120 Timeout for AI-provider requests — the only AI env var; providers themselves are in-app settings

Retention#

See Retention for what each window sweeps.

Variable Type Default Effect
ABRQ_RUN_LOG_RETENTION_DAYS int 30 Age window for the daily run-log sweep; 0 disables
ABRQ_AUDIT_LOG_RETENTION_DAYS int 365 Reserved — no sweep consumes this in this version; audit logs are never purged by the retention sweeper
ABRQ_KEEP_SUCCESS_RUN_LOGS_HOURS int 24 Prune window for detail logs of successful runs; 0 or less disables

Compose-only and build-time variables#

These are read by the Docker Compose files, the container entrypoint, or the image build — not by the backend settings module. They do not count toward the 57 fields above.

Variable Where Effect
POSTGRES_PASSWORD compose Password for the bundled PostgreSQL container
REDIS_PASSWORD compose (prod) Password for the bundled Redis container
ABRQ_WORKER_REPLICAS compose Worker container scale (default 2)
ABRQ_GUNICORN_WORKERS compose / entrypoint API server processes per container
ABRQ_FRONTEND_PORT compose Published frontend port (default 8080)
ABRQ_BACKUP_HOST_DIR compose (prod) Host directory bind-mounted for backups (default ./backups)
ABRQ_CELERY_QUEUES entrypoint Queue list a worker consumes
ABRQ_RATELIMIT_STORAGE_URL entrypoint Rate-limit storage override
ABRQ_VERSION release bundle Image tag pin in the customer bundle's compose file
ABRQ_BUILD_VERSION / ABRQ_BUILD_COMMIT image build Version and commit stamped into the build, surfaced by GET /health