Skip to content

Settings Reference

GENERATED — edit scripts/generate_settings_reference.py, not this file. Regenerate with uv run python scripts/generate_settings_reference.py; tests/unit/test_settings_reference.py fails when this page drifts from app/core/config/settings.py.

codex-lb currently exposes 96 settings. Every setting is an environment variable, normally with the CODEX_LB_ prefix (process environment or .env / .env.local next to the process); aliased settings list every accepted name. All defaults work with zero configuration — start from Configuration for the handful that matter, and treat everything else as advanced operational tunables.

Tiers

The Tier column is the configuration policy for each setting (app/core/config/tiers.py, enforced by scripts/check_settings_tiers.py):

  • T0 bootstrap — needed before the database is reachable; env only.
  • T1 instance topology — legitimately differs per replica or deployment; env only.
  • T2 secret — encrypted in the database; env is at most a seed.
  • T3 behaviour tunable / feature flag — the dashboard is the management surface. T3 → dashboard marks a setting that already has a dashboard_settings column of the same name: the dashboard value wins and the variable is a deprecated fallback. T3 (env, migrating) marks the remaining env-only backlog.
  • T4 incident debug — env allowed, dashboard toggle recommended.

PORT (special case, no prefix)

The listen port (default 2455) is read from the bare PORT process environment variable, not a CODEX_LB_* setting, and applies to host (uvx/local) runs only — env files map only prefixed variables. In Docker the container always listens on 2455 (the entrypoint pins --port 2455); change the host side of the compose ports mapping instead.

CODEX_LB_ENV_FILE (special case, bootstrap only)

.env / .env.local are discovered next to the installed module root (the repository checkout). CODEX_LB_ENV_FILE — an os.pathsep-separated list of paths — overrides that discovery for installs whose module root cannot contain env files (the Nix package wrapper points it at the launch directory). It must be set in the process environment, not in an env file: the env-file locations have to be known before env files are read.

CODEX_LB_WORKERS_PER_INSTANCE (special case, startup guard)

Not a setting: the only supported value is 1 (one worker process per instance), so there is nothing to configure. If it is set to anything else, startup fails with a settings validation error — per-account concurrency caps are partitioned per replica via the bridge ring, and multiple worker processes inside one instance would silently multiply them. Scale horizontally via replicas instead.

Process-level environment variables (not settings)

These are third-party or POSIX conventions codex-lb honors without making them settings. They are read by their owning launcher, library, or frozen migration rather than through Settings. Together with Settings itself this table is the allowlist of environment reads under app/; anything else belongs in app/core/config/settings.py.

Environment variable(s) Consumer
HOST, PORT, SSL_CERTFILE, SSL_KEYFILE, UVICORN_TIMEOUT_KEEP_ALIVE, UVICORN_WS_MAX_SIZE Uvicorn launch defaults read once by the codex-lb CLI (app/cli.py); host runs only.
HTTP_PROXY, HTTPS_PROXY, ALL_PROXY, WS_PROXY, NO_PROXY (and lowercase) Outbound proxy conventions honored by httpx/aiohttp/websockets for upstream egress.
REQUEST_METHOD CGI marker; when present HTTP_PROXY is ignored (httpoxy guard, mirrors the httpx/requests rule).
TZ POSIX process timezone; automation schedules with the server_default timezone resolve to it (falling back to the host local zone, then UTC).
PROMETHEUS_MULTIPROC_DIR prometheus_client multiprocess-mode convention.
GITHUB_TOKEN Optional bearer token for the GitHub latest-release version check.
POD_IP, POD_NAME, HOSTNAME, KUBERNETES_SERVICE_HOST Kubernetes/pod identity used for multi-replica validation and deployment-kind telemetry.
CODEX_HOME, USERPROFILE, WSL_DISTRO_NAME Codex CLI home discovery for the codex-lb codex-sessions retag tool.
CODEX_LB_TEST_DATABASE_URL Test-suite/CI only: overrides the database used by the test session factory.
CODEX_LB_ADDITIONAL_QUOTA_REGISTRY_FILE (inside app/db/alembic/versions/** only) Frozen Alembic migrations read the process environment directly because migrations must not depend on Settings; the live setting of the same name is documented in the tables below.

Core

Environment variable Tier Type Default
CODEX_LB_DATA_DIR T0 Path ~/.codex-lb (host) / /var/lib/codex-lb (container)

Database

Environment variable Tier Type Default
CODEX_LB_DATABASE_ALEMBIC_AUTO_REMAP_ENABLED T0 bool True
CODEX_LB_DATABASE_MAX_OVERFLOW T1 int 15
CODEX_LB_DATABASE_MIGRATE_ON_STARTUP T0 bool True
CODEX_LB_DATABASE_MIGRATION_LOCK_TIMEOUT_SECONDS T0 float 300.0
CODEX_LB_DATABASE_MIGRATIONS_FAIL_FAST T0 bool True
CODEX_LB_DATABASE_POOL_SIZE T1 int 25
CODEX_LB_DATABASE_SQLITE_PRE_MIGRATE_BACKUP_ENABLED T0 bool True
CODEX_LB_DATABASE_SQLITE_PRE_MIGRATE_BACKUP_MAX_FILES T0 int 5
CODEX_LB_DATABASE_SQLITE_STARTUP_CHECK_MODE T0 'quick' \| 'full' \| 'off' 'quick'
CODEX_LB_DATABASE_URL T0 str sqlite+aiosqlite:///<data_dir>/store.db

Encryption

Environment variable Tier Type Default
CODEX_LB_ENCRYPTION_KEY_FILE T0 Path <data_dir>/encryption.key
CODEX_LB_ENCRYPTION_KEY_FINGERPRINT_MODE T0 'enforce' \| 'warn' \| 'off' 'enforce'

Upstream transport

Environment variable Tier Type Default
CODEX_LB_UPSTREAM_BASE_URL T1 str 'https://chatgpt.com/backend-api'
CODEX_LB_UPSTREAM_CONNECT_TIMEOUT_SECONDS T3 (dashboard) float 8.0
CODEX_LB_UPSTREAM_ROUTE_CACHE_TTL_SECONDS T1 float 60.0
CODEX_LB_UPSTREAM_WEBSOCKET_TRUST_ENV T1 bool auto-detected from outbound proxy env vars

HTTP & streaming

Environment variable Tier Type Default
CODEX_LB_COMPACT_REQUEST_BUDGET_SECONDS T3 (dashboard) float 180.0
CODEX_LB_HTTP_CONNECTOR_LIMIT T1 int 100
CODEX_LB_HTTP_CONNECTOR_LIMIT_PER_HOST T1 int 50
CODEX_LB_HTTP_RESPONSES_STREAM_REQUEST_BUDGET_SECONDS T3 (dashboard) float 7200.0
CODEX_LB_SSE_KEEPALIVE_INTERVAL_SECONDS T3 (dashboard) float 10.0
CODEX_LB_STREAM_IDLE_TIMEOUT_SECONDS T3 (dashboard) float 7200.0
CODEX_LB_TRANSCRIPTION_REQUEST_BUDGET_SECONDS T3 (dashboard) float 120.0

HTTP Responses session bridge

Environment variable Tier Type Default
CODEX_LB_HTTP_RESPONSES_SESSION_BRIDGE_ADVERTISE_BASE_URL T1 str \| None None
CODEX_LB_HTTP_RESPONSES_SESSION_BRIDGE_CODEX_PREWARM_ENABLED T3 (dashboard) bool False
CODEX_LB_HTTP_RESPONSES_SESSION_BRIDGE_ENABLED T4 bool True
CODEX_LB_HTTP_RESPONSES_SESSION_BRIDGE_INSTANCE_ID T1 str process hostname
CODEX_LB_HTTP_RESPONSES_SESSION_BRIDGE_INSTANCE_RING T1 list[str] []
CODEX_LB_HTTP_RESPONSES_SESSION_BRIDGE_MAX_SESSIONS T1 int 256
CODEX_LB_HTTP_RESPONSES_SESSION_BRIDGE_OPERATION_EVENT_SPOOL_BATCH_SIZE T1 int 32
CODEX_LB_HTTP_RESPONSES_SESSION_BRIDGE_OPERATION_EVENT_SPOOL_FLUSH_INTERVAL_SECONDS T1 float 0.1
CODEX_LB_HTTP_RESPONSES_SESSION_BRIDGE_OPERATION_EVENT_SPOOL_MAX_BYTES T1 int 2097152
CODEX_LB_HTTP_RESPONSES_SESSION_BRIDGE_OPERATION_EVENT_SPOOL_MAX_PENDING_BYTES T1 int 33554432
CODEX_LB_HTTP_RESPONSES_SESSION_BRIDGE_OPERATION_EVENT_SPOOL_MAX_PENDING_EVENTS T1 int 2048
CODEX_LB_HTTP_RESPONSES_SESSION_BRIDGE_OPERATION_SPOOL_FORMAT T1 'rows_v1' \| 'chunks_v2' 'rows_v1'
CODEX_LB_HTTP_RESPONSES_SESSION_BRIDGE_OPERATION_SPOOL_RETENTION_SECONDS T3 (dashboard) float 604800
CODEX_LB_HTTP_RESPONSES_SESSION_BRIDGE_QUEUE_LIMIT T1 int 8
CODEX_LB_HTTP_RESPONSES_SESSION_BRIDGE_REQUEST_BUDGET_SECONDS T3 (dashboard) float 7200.0

Proxy admission & account caps

Environment variable Tier Type Default
CODEX_LB_PROXY_ACCOUNT_CAP_PARTITION_SCALE_DOWN_SECONDS T1 int 60
CODEX_LB_PROXY_ACCOUNT_CAPS_SCOPE T1 'partitioned' \| 'replica' 'partitioned'
CODEX_LB_PROXY_ACCOUNT_ERROR_RATE_WEIGHTING_ENABLED T3 (dashboard) bool True
CODEX_LB_PROXY_ACCOUNT_INFLIGHT_PENALTY_PCT T3 (dashboard) float 2.5
CODEX_LB_PROXY_ACCOUNT_LEASE_TOKEN_WEIGHT T3 (dashboard) float 1.0
CODEX_LB_PROXY_ACCOUNT_LEASE_TTL_SECONDS T3 (dashboard) float 900.0
CODEX_LB_PROXY_ACCOUNT_RESPONSE_CREATE_LIMIT T3 (dashboard) int 4
CODEX_LB_PROXY_ACCOUNT_STREAM_LIMIT T3 (dashboard) int 8
CODEX_LB_PROXY_ACCOUNT_STREAM_RECOVERY_RESERVE T3 (dashboard) int 1
CODEX_LB_PROXY_API_KEY_FAIR_SHARE_CONGESTION_THRESHOLD_PCT T3 (dashboard) int 0
CODEX_LB_PROXY_DOWNSTREAM_WEBSOCKET_IDLE_TIMEOUT_SECONDS T3 (dashboard) float 120.0
CODEX_LB_PROXY_OVERLOAD_ISOLATION_SECONDS T3 (dashboard) int 1800
CODEX_LB_PROXY_REQUEST_BUDGET_SECONDS T3 (dashboard) float 600.0
CODEX_LB_PROXY_RESPONSE_CREATE_LIMIT T1 int 256
CODEX_LB_PROXY_UNAUTHENTICATED_CLIENT_CIDRS T1 list[str] []

OAuth

Environment variable Tier Type Default
CODEX_LB_OAUTH_CALLBACK_HOST T1 str 127.0.0.1 (host) / 0.0.0.0 (container)

Token refresh

Environment variable Tier Type Default
CODEX_LB_AUTH_GUARDIAN_ENABLED T3 (dashboard) bool True

Usage

Environment variable Tier Type Default
CODEX_LB_ADDITIONAL_QUOTA_REGISTRY_FILE T1 Path \| None None
CODEX_LB_RATE_LIMIT_RESET_CREDITS_REFRESH_ENABLED T3 (dashboard) bool True

Model registry

Environment variable Tier Type Default
CODEX_LB_MODEL_CONTEXT_WINDOW_OVERRIDES T3 (dashboard) dict[str, int] {}
CODEX_LB_MODEL_REGISTRY_CLIENT_VERSION T1 str '0.158.0'
CODEX_LB_MODEL_REGISTRY_SNAPSHOT_MAX_AGE_SECONDS T1 int 86400

Firewall

Environment variable Tier Type Default
CODEX_LB_FIREWALL_IP_CACHE_TTL_SECONDS T1 int 30
CODEX_LB_FIREWALL_TRUST_PROXY_HEADERS T1 bool False
CODEX_LB_FIREWALL_TRUSTED_PROXY_CIDRS T1 list[str] ['127.0.0.1/32', '::1/128']
FORWARDED_ALLOW_IPS (alias CODEX_LB_FORWARDED_ALLOW_IPS) T1 str \| None None

Dashboard

Environment variable Tier Type Default
CODEX_LB_CONNECT_ADDRESS T1 str \| None None
CODEX_LB_DASHBOARD_AUTH_MODE T1 'standard' \| 'trusted_header' \| 'disabled' 'standard'
CODEX_LB_DASHBOARD_AUTH_PROXY_GROUPS_HEADER T1 str 'Remote-Groups'
CODEX_LB_DASHBOARD_AUTH_PROXY_HEADER T1 str 'Remote-User'
CODEX_LB_DASHBOARD_BOOTSTRAP_TOKEN T0 str \| None None
CODEX_LB_DASHBOARD_TRUST_LOOPBACK_HOST_HEADER_FOR_LONG_SESSIONS T1 bool False

Conversation archive

Environment variable Tier Type Default
CODEX_LB_CONVERSATION_ARCHIVE_DIR T1 Path <data_dir>/conversation-archive
CODEX_LB_CONVERSATION_ARCHIVE_ENABLED T3 (dashboard) bool False
CODEX_LB_CONVERSATION_ARCHIVE_QUEUE_MAX_BYTES T1 int 268435456

Schedulers

Environment variable Tier Type Default
CODEX_LB_AUTOMATIONS_SCHEDULER_ENABLED T3 (dashboard) bool True

Multi-replica

Environment variable Tier Type Default
CODEX_LB_LEADER_ELECTION_ENABLED T1 bool True
CODEX_LB_LEADER_ELECTION_TTL_SECONDS T1 int 60

Observability

Environment variable Tier Type Default
CODEX_LB_LOG_FORMAT T1 'text' \| 'json' 'text'
CODEX_LB_METRICS_ENABLED T1 bool False
CODEX_LB_METRICS_PORT T1 int 9090
CODEX_LB_OTEL_ENABLED T1 bool False
CODEX_LB_OTEL_EXPORTER_ENDPOINT T1 str ''
CODEX_LB_TRACE T4 str ''

Resilience & load shedding

Environment variable Tier Type Default
CODEX_LB_BACKPRESSURE_MAX_CONCURRENT_REQUESTS T1 int 0
CODEX_LB_BULKHEAD_DASHBOARD_LIMIT T1 int 50
CODEX_LB_BULKHEAD_PROXY_LIMIT T1 int 512
CODEX_LB_CIRCUIT_BREAKER_ENABLED T3 (dashboard) bool False
CODEX_LB_DETERMINISTIC_FAILOVER_ENABLED T3 (dashboard) bool True
CODEX_LB_MEMORY_REJECT_THRESHOLD_MB T1 int 0
CODEX_LB_SHUTDOWN_DRAIN_TIMEOUT_SECONDS T1 int 30
CODEX_LB_SOFT_DRAIN_ENABLED T3 (dashboard) bool True

Other

Environment variable Tier Type Default
CODEX_LB_EVENT_LOOP_LAG_WARN_THRESHOLD_SECONDS T1 float 0.5
CODEX_LB_TELEMETRY_ENABLED T3 (dashboard) bool \| None None
CODEX_LB_TELEMETRY_ENDPOINT T1 str 'https://telemetry.tokmaxxing.com'
CODEX_LB_THREAD_CACHE_IDENTITY_MODE T3 (dashboard) str 'shared'
CODEX_LB_TIMEOUT_INVARIANT_VALIDATION_STRICT T4 bool False

Removed

Images and default account probes choose gpt-5.6-luna, then gpt-5.5, using registry plan visibility and suppression. If neither qualifies, they use gpt-5.6-luna. Catalog visibility does not guarantee account access. There is no host-model setting. See the Images spec and probe spec.

Removed settings (ignored with a one-release startup warning; each is now a fixed default or a dashboard runtime setting — see PRINCIPLES.md P2 / issue #1340):

  • CODEX_LB_REQUEST_LOG_RETENTION_DAYS
  • CODEX_LB_USAGE_HISTORY_RETENTION_DAYS
  • CODEX_LB_HTTP_DOWNSTREAM_TRANSPORT_POLICY
  • CODEX_LB_OPENAI_CACHE_AFFINITY_MAX_AGE_SECONDS
  • CODEX_LB_WARMUP_MODEL
  • CODEX_LB_HTTP_RESPONSES_SESSION_BRIDGE_GATEWAY_SAFE_MODE
  • CODEX_LB_UPSTREAM_STREAM_TRANSPORT
  • CODEX_LB_UPSTREAM_COMPACT_TIMEOUT_SECONDS
  • CODEX_LB_MAX_SSE_EVENT_BYTES
  • CODEX_LB_UPSTREAM_RESPONSE_CREATE_MAX_BYTES
  • CODEX_LB_OAUTH_TIMEOUT_SECONDS
  • CODEX_LB_TOKEN_REFRESH_TIMEOUT_SECONDS
  • CODEX_LB_TOKEN_REFRESH_CLAIM_TTL_SECONDS
  • CODEX_LB_PROXY_REFRESH_FAILURE_COOLDOWN_SECONDS
  • CODEX_LB_PROXY_ADMISSION_WAIT_TIMEOUT_SECONDS
  • CODEX_LB_USAGE_FETCH_TIMEOUT_SECONDS
  • CODEX_LB_USAGE_FETCH_MAX_RETRIES
  • CODEX_LB_USAGE_REFRESH_ENABLED
  • CODEX_LB_USAGE_REFRESH_INTERVAL_SECONDS
  • CODEX_LB_USAGE_REFRESH_AUTH_FAILURE_COOLDOWN_SECONDS
  • CODEX_LB_LIVE_USAGE_INGESTION_ENABLED
  • CODEX_LB_RATE_LIMIT_RESET_CREDITS_REFRESH_INTERVAL_SECONDS
  • CODEX_LB_STICKY_SESSION_CLEANUP_ENABLED
  • CODEX_LB_QUOTA_PLANNER_SCHEDULER_ENABLED
  • CODEX_LB_MODEL_REGISTRY_ENABLED
  • CODEX_LB_MAX_DECOMPRESSED_BODY_BYTES
  • CODEX_LB_MAX_DECOMPRESSED_RESPONSES_BODY_BYTES
  • CODEX_LB_IMAGE_INLINE_FETCH_ENABLED
  • CODEX_LB_IMAGE_INLINE_ALLOWED_HOSTS
  • CODEX_LB_IMAGES_DEFAULT_MODEL
  • CODEX_LB_OPENAI_PROMPT_CACHE_KEY_DERIVATION_ENABLED
  • CODEX_LB_PROXY_TOKEN_REFRESH_LIMIT
  • CODEX_LB_PROXY_UPSTREAM_WEBSOCKET_CONNECT_LIMIT
  • CODEX_LB_PROXY_COMPACT_RESPONSE_CREATE_LIMIT
  • CODEX_LB_HTTP_RESPONSES_SESSION_BRIDGE_IDLE_TTL_SECONDS
  • CODEX_LB_HTTP_RESPONSES_SESSION_BRIDGE_CODEX_IDLE_TTL_SECONDS
  • CODEX_LB_HTTP_RESPONSES_SESSION_BRIDGE_STUCK_GATE_RETIRE_AFTER_SECONDS
  • CODEX_LB_HTTP_RESPONSES_SESSION_BRIDGE_ANCHOR_POISON_FAILURE_THRESHOLD
  • CODEX_LB_HTTP_RESPONSES_SESSION_BRIDGE_SERVER_RECOVERY_MAX_ATTEMPTS
  • CODEX_LB_HTTP_RESPONSES_SESSION_BRIDGE_CLEAN_CLOSE_RETRY_JITTER_MAX_SECONDS
  • CODEX_LB_HTTP_RESPONSES_SESSION_BRIDGE_OPERATION_LEDGER_ENABLED
  • CODEX_LB_HTTP_RESPONSES_SESSION_BRIDGE_AMBIGUOUS_CONTINUATION_RECOVERY_MODE
  • CODEX_LB_TOKEN_REFRESH_INTERVAL_DAYS

Specs: user-documentation · responses-api-compat · rate-limit-reset-credits · deployment-installation · proxy-runtime-observability