Configuration

July 26, 2026 · View on GitHub

Every knob below is settable three ways. Precedence, highest first:

  1. a CLI flag
  2. an environment variable
  3. ~/.dario/config.json
  4. the built-in default

dario --help is the complete list and always matches the binary you have installed. commands.md documents the proxy options flag-by-flag, including the OAuth overrides, session-rotation and TLS vars not repeated here.

This page is the other view: grouped by what you are trying to do, covering the vars that matter when you cannot pass a flag — Docker, Compose, k8s, systemd — plus the ones whose behaviour has a sharp edge worth stating in prose. Anything documented in commands.md is deliberately not restated here; two copies of a default is one that goes stale.

Booleans

Two shapes, and the difference is not cosmetic.

Off-switches (DARIO_OVERAGE_GUARD, DARIO_OVERAGE_NOTIFY) accept on|1|true|yes and off|0|false|no. They guard features that default on, so they have to be able to say no.

On-switches (everything else) accept only 1|true|yes|on. They guard features that default off, so an unset var and a falsy var mean the same thing and there is nothing to express.

An unrecognised value is ignored in both cases and the next source down wins. A typo leaves you on the default rather than silently flipping the knob.

DARIO_OVERAGE_GUARD=off and DARIO_OVERAGE_NOTIFY=off were documented in cli.ts from v4.1 but did nothing until v5.4.14 — the shared parser could only return true or undefined, so off fell through the ?? … ?? true chain and the guard stayed on. Container deployments were the only ones affected, because a flag was the sole working way to turn it off.

Overage guard

Halts the proxy when an upstream response reports representative-claim: overage, so a subscription never silently starts billing per token. Defaults on. See #288.

VariableFlagDefaultValues
DARIO_OVERAGE_GUARD--no-overage-guardonoff-switch
DARIO_OVERAGE_BEHAVIOR--overage-behavior=halthalt returns 503 until cooldown or dario resume; warn logs and keeps serving
DARIO_OVERAGE_COOLDOWN--overage-cooldown=MS1800000 (30 min)ms
DARIO_OVERAGE_NOTIFY--no-overage-notifyonoff-switch; suppresses the desktop notification only

Request queue

VariableFlagDefaultNotes
DARIO_MAX_CONCURRENT--max-concurrent=N10in-flight ceiling
DARIO_MAX_QUEUED--max-queued=N128buffered waiting for a slot; over this, dario returns 429 queue-full
DARIO_QUEUE_TIMEOUT_MS--queue-timeout=MS60000a queued request waiting longer gets 504 queue-timeout

Template fidelity

dario replays Claude Code's wire shape from a template it captures from your installed claude binary, falling back to a baked snapshot. These two make the unsafe states require intent (#77).

VariableFlagDefaultNotes
DARIO_NO_LIVE_CAPTURE--no-live-captureoffNever spawn the installed CC; use the baked snapshot only. For air-gapped and reproducible-build runs.
DARIO_STRICT_TEMPLATE--strict-templateoffRefuse to start if the live capture never succeeded or drifts from the installed CC version.

Client shape

Off by default, each one a deliberate divergence from what real CC sends.

VariableFlagNotes
DARIO_STEALTH--stealthBehavioural-stealth preset. Per-knob pacing vars below still win, so you can flip this on and tune one axis.
DARIO_HONOR_CLIENT_THINKING--honor-client-thinkingPass a client's own thinking block through unchanged.
DARIO_PRESERVE_OUTPUT_FORMAT--preserve-output-formatCarry a client's output_config.format schema through, for structured-output SDKs.
DARIO_PRESERVE_ORCHESTRATION_TAGS--preserve-orchestration-tagsKeep orchestration tags instead of stripping them (#78).
DARIO_EFFORT--effort=Forces a reasoning-effort level. Can flip requests to overage billing — watch -v logs for representative-claim changes (#87).
DARIO_MAX_TOKENS--max-tokens=Anthropic enforces the per-model ceiling server-side, so too-high values return a clean 400 (#88).

Pacing

Only meaningful with stealth, and all default to 0 (off) except the cap. See wire-fidelity.md.

VariableFlagDefault
DARIO_THINK_TIME_BASE_MS--think-time-base=MS0
DARIO_THINK_TIME_PER_TOKEN_MS--think-time-per-token=MS0
DARIO_THINK_TIME_JITTER_MS--think-time-jitter=MS0
DARIO_THINK_TIME_MAX_MS--think-time-max=MS30000
DARIO_SESSION_START_MIN_MS--session-start-min=MS0
DARIO_SESSION_START_JITTER_MS--session-start-jitter=MS0

Pool and routing

The pool-strategy, fallback-model, alias and upstream-proxy vars live in commands.md.

VariableFlagNotes
DARIO_SUSPENDED_MODELSFilters families from /v1/models so it never advertises a model that 404s.
DARIO_SKIP_FIELDS--skip-fields=CSVDrop named fields from the outbound body.

Networking and caches

VariableFlagDefaultNotes
DARIO_DNS_RESULT_ORDERipv4firstverbatim uses the resolver's own order. IPv4-first because an IPv6 answer is not universally routable.
DARIO_MODEL_CATALOG_TTL_MS3600000 (1h)How long /v1/models caches Anthropic's live catalog. Model launches are rare; shorten it if you are chasing one.
DARIO_USAGE_PORT--port=N3456Which proxy the dario usage subcommand queries.

Escape hatches

Reversible switches for behaviour that is normally correct. You should not need them; they exist so a bad guess on our side is not fatal.

VariableValuesNotes
DARIO_CCHrandomStops replaying a calibrated cch token in the billing tag and randomises it per request instead. Only affects CC versions we hold a seed for — current CC sends no cch at all, so dario omits it and this does nothing.

Not part of the supported surface

DARIO_LIVE_TEMPLATE_CACHE and DARIO_TEST_URL exist for the test suite. They are not configuration, are not covered by semver, and can change or vanish in a patch release.

If an unsupported var is the only way to do something you need, that is a missing flag. Open an issue.