Skip to content

Configuration Options

Every supported key, grouped as in config.yaml. Defaults marked "none" mean the field can be omitted.

FieldDescriptionRequired / Default
server.listenHTTP listen addressYes
server.max_concurrencyMax concurrent /v1/* requests1024
devin.base_urlDevin Connect service base URLYes (config.example.yaml uses https://server.codeium.com)
devin.accountsUpstream account pool entries {name, token, credentials_file, api_key, priority, max_rpm} — at least one credential source per entry; empty list = legal empty poolNo — /v1 returns unavailable until an account exists
devin.modelDevin chat model UID (e.g. swe-2-max)Yes
devin.aliasesClient model name → upstream UID map (swe-2: swe-2-max); match order exact → case-insensitive → "*" catch-all; aliases appear in /v1/models with alias_ofnone
devin.client_name/client_version/client_osClient identity sent in upstream metadatachisel / 3000.2.17 / mac
devin.proxyUpstream proxy URL (http(s)://, socks5(h)://); empty = direct / env varsnone
devin.force_http1Per-request TCP connections to upstream (avoids HTTP/2 stream serialization)true
devin.max_rpmMessage rate limit to upstream (msgs/min, token bucket); <=0 unlimited — the 429 cooldown latch applies either way0 (unlimited; config.example.yaml ships 80)
devin.gate_max_hold_secondsMax seconds a request may queue outside the latch for its next send window before fast-fail 429 + Retry-After30
devin.gate_drip_interval_secondsProbe release interval inside a latch — paces upstream arrivals and unlatch detection while limited8
devin.gate_default_latch_secondsFallback latch duration when upstream resource_exhausted doesn't declare a reset time60
devin.gate_window_offset_secondsEstimated position of the upstream minute-bucket boundary inside the local minute0
devin.gate_window_guard_secondsDead zone on both sides of the estimated bucket boundary — requests inside it sleep until the next window2
devin.gate_bg_max_hold_secondsQueued-wait budget for bg-class tokens inside the gate — unattended batch traffic can afford to wait120
devin.gate_bg_reserve_marginFixed safety margin (requests) in the bg admission reserve formula — the last slots stay unreachable to bg so fg always has headroom4
devin.warm_prefix_*Prefix-replay warming family — replays retained session prefixes on a cadence to renew the upstream prompt cache across long subagent waits; key list in config.example.yamlwarm_prefix_enabled: false
devin.session_affinity_ttl_secondsSliding TTL for session→lane bindings (renewed on every hit)3600
devin.quota_low_threshold_percentWeekly-quota percent below which a lane is demoted behind healthy lanes for new sessions (bound sessions unaffected)15
devin.no_progress_timeout_secondsNo-progress watchdog once content has started flowing — upstream can compute tool-call arguments silently for 15–25 min sending only heartbeats, so this must stay well above that2700
devin.pre_event_no_progress_timeout_secondsNo-progress watchdog before the first decodable event; total pre-event silence is separately hard-capped at 180s (from first send, cumulative across stream reopens) — raising this can't extend that cap600
debug.enabledRecord per-request debug payload into devin-2api.db in the state dirfalse (config.example.yaml ships true)
debug.retention_daysDays to keep per-request debug records; <=0 disables time-based cleanup14
debug.max_total_mbTotal debug payload cap (MB); evicts oldest request groups first1024
debug.payload_hoursHours before large stage payloads are stripped, keeping meta/error evidence24
debug.keep_error_dirsNewest N failed request groups protected from size eviction32
debug.errors_onlyKeep debug payloads only for failed or suspect requests — clean completions drop their payload at finish; panel key debug_log_errors_only, hot-changeablefalse
debug.quota_interval_minutesQuota snapshot interval into the quota_samples table; <=0 disables5
debug.pprof_listenSeparate listen address for the pprof/fgprof profiling endpoints (e.g. 127.0.0.1:6060); unauthenticated — loopback onlyempty (disabled)
dashboard.password/web admin password; empty = no login requirednone

Released under the MIT License.