Breadbox layers configuration so you can set a value in code, change it from the dashboard or CLI without a redeploy, and still allow an environment variable to win when you need it to.Documentation Index
Fetch the complete documentation index at: https://docs.breadbox.sh/llms.txt
Use this file to discover all available pages before exploring further.
Precedence
For every configurable setting, the server resolves the active value in this order:- Environment variable is read once at process start and is the highest-priority source. If
SYNC_INTERVAL_MINUTES=15is set, no dashboard change orbreadbox config setwill override it — the dashboard input renders read-only with an “env-controlled” badge. app_configtable stores values written from the admin Settings tab or the CLI. Persisted across restarts, mutable at runtime, surfaced everywhere with a “db” source badge.- Built-in default is the code-baked fallback. The defaults are conservative and safe for a first-run install.
Inspect from the CLI
source column shows what’s currently authoritative. Set a value from the CLI:
Inspect from the API
What’s configurable
Settings that move between env andapp_config include:
- Sync — interval, retry behavior, what triggers a sync.
- Agents — transcript directory, default model, max-cost ceiling.
- Dashboard — banner text, default landing page, branding.
- Webhooks — replay timeouts, retention.
- Hosted-link — session TTL, allowed redirect hosts.
DATABASE_URL, ENCRYPTION_KEY, PORT, SERVER_PORT) cannot be set from app_config — they’re consumed before the DB pool exists. See Environment variables for those.
When to use which layer
- Env var when the value should be controlled by infrastructure (compose file, Helm chart, secret manager). Examples:
ENCRYPTION_KEY,ANTHROPIC_API_KEY, the database URL. app_configwhen the value should be edited at runtime by an operator, agent, or the dashboard. Examples: a maintenance banner, the agent transcript dir, sync intervals you tune by hand.- Default for everything else. The default is intentional — don’t override it without a reason.