Environment variables¶
Earlier technical reference
This page is retained from earlier documentation and has not been fully revalidated for the public 2026.10.19 release. Its revision-specific links and examples may describe older or development behavior. Start with the current public-release user guide; do not use this page alone to select installation commands, image tags, or security settings.
This reference separates supported service settings from installer, test and compatibility names. Defaults below describe the pinned source. Installation scripts and containers can override them; inspect the actual service environment before diagnosing a mismatch. Never paste encryption keys, database passwords or provider credentials into a diagnostic report.
See configuration ownership, deployment and containers.
Listener and authentication¶
Authentication settings resolve as explicit runtime arguments → environment → PostgreSQL settings → defaults. Comma-separated values are trimmed. An environment override can keep a database/UI change from becoming effective.
| Variable | Default / interpretation |
|---|---|
BURROW_UI_HOST |
Direct server/Docker 0.0.0.0; native installer writes 127.0.0.1; generic config resolver 127.0.0.1 |
BURROW_UI_PORT |
42817; direct server also accepts --port=, after the environment |
BURROW_UI_AUTH_MODE |
Persisted value, otherwise none; choices none, trusted-proxy, basic, oidc |
BURROW_UI_AUTH_ALLOWED_PROXIES |
127.0.0.1,::1; exact socket peer addresses, not CIDRs |
BURROW_UI_AUTH_USER_HEADER |
x-forwarded-user, normalized to lowercase |
BURROW_UI_AUTH_BASIC_USERNAME |
Unset; required for Basic mode |
BURROW_UI_AUTH_BASIC_PASSWORD_HASH |
Unset; stored scrypt hash, not a plaintext password |
BURROW_UI_AUTH_BASIC_SESSION_TTL_SECONDS |
43200; minimum 60 seconds |
BURROW_UI_AUTH_OIDC_ISSUER |
Unset; required for OIDC |
BURROW_UI_AUTH_OIDC_CLIENT_ID |
Unset; required for OIDC |
BURROW_UI_AUTH_OIDC_CLIENT_SECRET |
Unset; alternatively encrypted PostgreSQL secret |
BURROW_UI_AUTH_OIDC_REDIRECT_URI |
Unset; configure the provider callback deliberately |
BURROW_UI_AUTH_OIDC_SCOPES |
openid,email,profile |
BURROW_UI_AUTH_OIDC_ALLOWED_EMAILS |
Empty; optional comma-separated allowlist |
BURROW_UI_AUTH_OIDC_ALLOWED_DOMAINS |
Empty; optional comma-separated allowlist |
BURROW_UI_AUTH_OIDC_INSECURE_COOKIES |
Only literal true disables OIDC Secure cookies; local development only |
Runtime paths and key material¶
| Variable | Default / purpose |
|---|---|
BURROW_RUNTIME_ROOT |
Generic /mnt/local/burrow; native installer $HOME/.burrow; Docker /data |
BURROW_SOURCE_ROOT |
Loaded release/source root; generic resolver can fall back to current directory |
BURROW_WORKSPACE_ROOT |
<runtimeRoot>/workspace |
BURROW_AGENT_ID |
Resolver fallback hatchet; does not create that agent |
BURROW_AGENT_WORKSPACE_ROOT |
<workspaceRoot>/<agentId>; suppressed by an explicit workspace-root argument |
BURROW_SKILLS_ROOT |
<agentWorkspaceRoot>/skills; current managed skill catalog also has PostgreSQL authority |
BURROW_CACHE_ROOT |
<runtimeRoot>/cache |
BURROW_ARCHIVE_ROOT |
<runtimeRoot>/archive |
BURROW_SETTINGS_KEY |
Required external key material: Base64 encoding of exactly 32 bytes |
BURROW_SETTINGS_KEY_FILE |
Container-entrypoint override; defaults to <runtimeRoot>/config/settings.key |
BURROW_SHUTDOWN_DRAIN_MS |
10000; minimum 1000 ms HTTP connection drain window |
BURROW_DISABLE_BACKGROUND_SCHEDULERS |
Disabled only when set to 1, true, yes or on, case-insensitive |
BURROW_BOOTSTRAP_SAMPLE_IDENTITIES |
Sample-identity bootstrap is opt-in; use 1 for explicit fixtures, not as ordinary setup |
The encryption key is needed to decrypt stored credentials after recovery. Keep it with a protected backup, outside public documentation and source control. Container startup persists a generated key and rejects a conflicting supplied key. The key-file variable is an entrypoint feature, not a general backend file-loader setting.
PostgreSQL¶
The supported startup wrapper requires an explicit lifecycle. Although the low-level resolver defaults to disabled, normal startup rejects it with postgres_startup_requires_explicit_lifecycle. The native installer and container select managed unless configured otherwise.
| Variable | Default / purpose |
|---|---|
BURROW_POSTGRES_LIFECYCLE |
managed or external for startup; wins over compatibility BURROW_POSTGRES_MODE |
BURROW_POSTGRES_MAJOR |
Expected server major 17 |
BURROW_POSTGRES_URL |
Connection URL; takes precedence over DATABASE_URL and individual fields |
DATABASE_URL |
Fallback external connection URL |
BURROW_POSTGRES_HOST |
127.0.0.1 in general pool configuration |
BURROW_POSTGRES_PORT |
5432 |
BURROW_POSTGRES_DATABASE |
burrow in general pool configuration |
BURROW_POSTGRES_USER |
burrow in general pool configuration |
BURROW_POSTGRES_PASSWORD |
Unset |
BURROW_POSTGRES_POOL_MAX |
10, positive integer |
BURROW_POSTGRES_IDLE_TIMEOUT_MS |
30000, positive integer |
BURROW_POSTGRES_CONNECTION_TIMEOUT_MS |
10000, positive integer |
BURROW_POSTGRES_SSL_MODE |
Unset, or disable / verify-full only |
BURROW_POSTGRES_SSL_CA_FILE |
Optional readable PEM certificate; requires verify-full |
BURROW_POSTGRES_DATA_DIR |
Managed mode <runtimeRoot>/postgres |
BURROW_POSTGRES_SOCKET_DIR |
Managed mode <runtimeRoot>/postgres-socket |
BURROW_POSTGRES_LOG_FILE |
Managed mode <runtimeRoot>/postgres.log |
BURROW_POSTGRES_INITDB |
initdb executable |
BURROW_POSTGRES_PG_CTL |
pg_ctl executable |
BURROW_POSTGRES_BIN |
postgres executable |
BURROW_POSTGRES_LIFECYCLE_TIMEOUT_MS |
30000 |
Managed startup removes connection URLs/passwords and supplies its Unix socket, port 5432, database postgres and current OS username. Consequently, the general pool defaults above do not describe the managed database's effective identity. Managed PostgreSQL does not listen on TCP. External mode validates the expected major and installed vector extension without owning database process start/stop.
verify-full verifies the configured hostname, including IP literals. Do not combine an explicit SSL mode with URL parameters whose names begin with ssl; startup rejects mixed TLS sources. An unset mode does not imply certificate verification. See persistence for lifecycle requirements.
Context and memory¶
| Variable | Default |
|---|---|
BURROW_CONTEXT_THRESHOLD |
0.75 |
BURROW_CONTEXT_FRESH_TAIL_COUNT |
48 |
BURROW_CONTEXT_FRESH_TAIL_MAX_TOKENS |
24000 |
BURROW_CONTEXT_LEAF_CHUNK_TOKENS |
20000 |
BURROW_CONTEXT_SUMMARY_TARGET_TOKENS |
6000 |
BURROW_CONTEXT_SUMMARY_MODEL |
Unset |
BURROW_CONTEXT_MAX_SWEEP_ITERATIONS |
4 |
BURROW_CONTEXT_SWEEP_DEADLINE_MS |
120000 |
BURROW_ALBDRUCK_PROMPT_MAX_CHARS |
4000 |
BURROW_ALBDRUCK_MAX_PAGE_SIZE |
200 |
Compression controls normalize invalid values to supported defaults. The retained BURROW_ALBDRUCK_* configuration names are compatibility values, not switches that restore the retired Albdruck UI/API. Positive safe integers are required. Explicit history lookup also accepts BURROW_HISTORY_QUERY_BUDGET_MS (15000) and BURROW_HISTORY_LOCK_TIMEOUT_MS (1000). These are work bounds, not retention settings.
MCP, provider login and mods¶
| Variable | Default / purpose |
|---|---|
BURROW_MCPORTER_ROOT |
<runtimeRoot>/integrations/mcporter; requires an active runtime root if not explicit |
BURROW_MCPORTER_BIN |
<mcporterRoot>/node_modules/.bin/mcporter |
BURROW_CLAUDE_BIN |
Login-helper executable; installer/container supplies its managed integration path |
BURROW_OPENAI_OAUTH_CALLBACK_HOST |
Loopback callback host; only localhost, 127.0.0.1, ::1 accepted |
BURROW_OPENAI_OAUTH_USAGE_URL |
https://chatgpt.com/backend-api/wham/usage; specialized usage endpoint override |
BURROW_PROVIDER_ERROR_MAX_BYTES |
16384; positive safe-integer Forge provider-error capture budget |
BURROW_MOD_ARCHIVE_RESERVE_BYTES |
268435456 (256 MiB); nonnegative safe-integer free-space reserve during mod extraction |
MCP provider-specific environment variables are saved per connection; they are not arbitrary BURROW_* service settings. Mod Git credentials are injected into a subprocess internally and should not be configured as global service variables. See MCP and extensions.
Compatibility, installer and development-only names¶
These names occur in the repository but are not a second supported application-configuration system.
| Names | Classification |
|---|---|
BURROW_POSTGRES_MODE |
Compatibility fallback for lifecycle selection |
BURROW_DATA_ROOT |
Compatibility fallback used by selected server/CLI entry points; prefer the documented runtime root |
BURROW_AGENT_DATA_ROOT |
Child/test environment handling; no independent current general config resolver |
BURROW_MAIN_SESSION_MAX_AGE_DAYS / BURROW_TASK_SESSION_MAX_AGE_DAYS / BURROW_SUBAGENT_SESSION_MAX_AGE_DAYS |
Retained resolver defaults 60 / 30 / 7 days; not the current operator-managed retention policy |
BURROW_TRACE_MAX_AGE_DAYS / BURROW_TRACE_MAX_BYTES |
Retained nullable resolver fields; configure current trace cleanup through settings |
BURROW_TRACE_ISOLATION |
Isolated trace layout for tests/debugging; test context also detected automatically |
OPENCLAW_OAUTH_CALLBACK_HOST |
Historical fallback for OpenAI loopback callback host |
BURROW_HOME |
Generated native launcher installation path |
BURROW_POSTGRES_BIN_DIR |
Native installer executable-discovery helper |
BURROW_UID, BURROW_GID |
Docker build arguments, default 4226; not live process reconfiguration |
BURROW_HEALTH_URL, BURROW_SERVICE_UNIT |
Operational health/smoke/audit script inputs |
BURROW_INSTALL_TEST_ROOT |
Installer test fixture path |
BURROW_UI_POSTGRES |
Internal startup marker |
BURROW_GIT_USERNAME, BURROW_GIT_PASSWORD |
Internal short-lived Git authentication environment |
BURROW_CONFIG, BURROW_SETTINGS_DB |
Removed-config isolation/check references; do not create JSON/SQLite settings authority |
BURROW_TEST_TIMEOUT_MS, BURROW_VERIFY_DEPLOYED_ISOLATION, BURROW_POSTGRES_LIFECYCLE_REHEARSAL |
Test/rehearsal controls |
BURROW_OOM_REPRO_ITERATIONS, BURROW_OOM_REPRO_FILE_BYTES, BURROW_OOM_REPRO_CALLS_PER_ITERATION, BURROW_OOM_REPRO_GC_INTERVAL, BURROW_OOM_REPRO_MAX_HEAP_MIB |
Isolated diagnostic reproducer inputs |
BURROW_SOURCE_TOKEN |
Assembly CI secret for pinned source access; never a runtime API token |