System Configuration
Environment variables and the dequel.json file for platform settings.
The API reads platform settings from environment variables first, then
from a dequel.json file. Environment variables always win.
Config file location
The API loads the first dequel.json it finds:
- The path in
DEQUEL_CONFIG $XDG_CONFIG_HOME/dequel/dequel.json(usually~/.config/dequel/dequel.json)./dequel.json(next to the process working directory)./data/dequel.json(what the installer writes, mode0600)
The installer generates data/dequel.json with your base domain and a
random ENV_ENCRYPTION_KEY.
Reference
Identity and domains
| Variable | Default | Source | Description |
|---|---|---|---|
CADDY_BASE_DOMAIN |
localhost |
env or file | Base domain for app URLs (<slug>.<domain>). Set a real domain with wildcard DNS for auto-SSL. |
CADDY_EMAIL |
(empty) | env (Caddy) | Contact for Let’s Encrypt notifications. Read by Caddy, not the API. |
CONTROL_PLANE_URL |
(empty) | env or file | Public URL of this control plane, used for links and agent registration. |
DATABASE_URL |
(empty) | env | PostgreSQL connection string. Empty fails fast with a clear error. |
Secrets
| Variable | Default | Source | Description |
|---|---|---|---|
ENV_ENCRYPTION_KEY |
dev-env-key-change-me |
env | Encrypts env vars, SMTP passwords, and LLM keys at rest. The API refuses to start in production with the default — set a unique value. |
Background engines
| Variable | Default | Description |
|---|---|---|
QUEUE_CONCURRENCY |
3 |
Parallel jobs (builds, provisions, failovers). |
QUEUE_RETRY_MAX |
5 |
Retries per failed job. |
QUEUE_RETRY_BASE_MS |
5000 |
Base backoff between retries. |
ALERT_EVAL_INTERVAL_MS |
60000 |
Alert-rule evaluation cadence. |
FAILURE_SWEEP_INTERVAL_MS |
60000 |
Failed-deployment sweep cadence. |
FAILOVER_DISABLED |
(empty) | Set to disable automatic failover. |
FAILOVER_MIN_INTERVAL_MS |
600000 |
Minimum time between failovers. |
Observability
| Variable | Default | Description |
|---|---|---|
GRAFANA_URL |
http://grafana:3000 |
Grafana origin for dashboard links. |
GRAFANA_USER / GRAFANA_PASS |
admin / admin |
Grafana credentials. |
Agent networking
| Variable | Default | Description |
|---|---|---|
AGENT_TUNNEL_URL |
(empty) | Tunnel endpoint agents dial back on. |
WIREGUARD_SERVER_CONTAINER |
(empty) | WireGuard server container name. |
WIREGUARD_SERVER_PUBLIC_KEY |
(empty) | Server public key for agent peers. |
WIREGUARD_SERVER_ENDPOINT |
(empty) | Public endpoint agents connect to. |
WIREGUARD_SERVER_IP |
10.200.0.1 |
Server address inside the mesh. |
WIREGUARD_PEER_CIDR |
10.200.0.0/24 |
Agent address range. |
Telemetry
Dequel collects anonymous usage telemetry (PostHog) to guide development. Disable it with either variable:
DEQUEL_TELEMETRY_DISABLED=1
DO_NOT_TRACK=1
What is configured in the dashboard instead
These have no environment equivalent — set them under Settings:
- GitHub OAuth app (client ID/secret, webhook secret)
- SMTP relay and sender address
- Backup storage (local path or S3)
- LLM provider keys and models
- Ingress server selection
Full file example
{
"CADDY_BASE_DOMAIN": "example.com",
"CONTROL_PLANE_URL": "https://dequel.example.com",
"QUEUE_CONCURRENCY": 3,
"FAILOVER_MIN_INTERVAL_MS": 600000
}