Skip to content

Environment variables

Set them in the environment or in a .env file the CLI and the Evarness API read at start.

  • Applies: when a change takes effect (the next call, the next scheduled run, or a restart).
  • Guarded: the web console asks the owner to confirm a change.
  • On/off settings take 1/true/yes/on and 0/false/no/off.

Stable settings

What an install of evarness[email] needs: the settings the getting-started pages, the email guide and evarness doctor name. They are part of the stable API: a name or a default changes only after a deprecation cycle. src/evarness/sdk/stable_tier.yaml lists them.

Variable Kind Default Applies Description
EVARNESS_AUTH_SECRET secret next call Shared bearer secret every request to the Evarness API, the governor and the channel gateway must present, except their liveness probes (a paired device presents its own token instead); unset or blank, those services refuse every such request rather than run open. The learning eval sandbox forwards it (default 'eval-sandbox') into its container. Guarded.
EVARNESS_API_HOST url 127.0.0.1 next call Host evarness serve binds the Evarness API to (as scripts/start_evarness.sh binds every service), and the host health checks probe the local services on and the model inventory queries Ollama's /api/tags on.
EVARNESS_API_PORT url 8003 restart Port evarness serve binds the Evarness API to, and the port the health watch probes for its /healthz endpoint (default 8003).
EVARNESS_API_URL url http://localhost:8003 restart Base URL the CLI commands and the channel gateway use to reach the Evarness API (CLI defaults vary between http://localhost:8003 and http://127.0.0.1:8003).
EVARNESS_PUBLIC_URL url next call Absolute base URL the web console is reached at (https://). Its host is one the HTTP services answer to (the Host-header guard), and it is the base of the links Evarness sends out (an OAuth callback, the morning digest's Telegram buttons); empty answers to the built-in names only and sends no such links.
EVARNESS_ALLOWED_HOSTS list restart Comma-separated host names (host, host:port or a URL) the HTTP services answer to besides the built-in ones (loopback, testserver, the compose service names, this machine's hostname, the host of EVARNESS_PUBLIC_URL and their short names); any other Host is refused with 400 (DNS rebinding). An IP literal is always accepted. '' turns the check off. Guarded.*
EVARNESS_HOME path ~/.evarness restart Relocates the identity tree, plugin home, session logs and (when set) the governance data/config dirs.
EVARNESS_VAULT_MASTER_KEY secret restart Fernet master key for the credential vault and the file vault, used instead of the OS keyring. Guarded.
EVARNESS_PROFILE str default restart Selects which shipped profile (config/profiles/.yaml) decides which plugins mount, in what order and with what trust. Unset, Evarness runs default, or email when the email plugins are installed. Guarded.
EVARNESS_DEMO_HOME path next call Where evarness email demo keeps its own isolated Evarness home (default ~/.evarness-demo); never the owner's profile.
EVARNESS_TZ str UTC restart The owner's IANA time zone (e.g. America/Chicago). The morning digest's time, reminders and schedules are read in it; the Docker Compose files also set the container clock (TZ) from it. Unset or not a zone name means UTC.
EVARNESS_EMAIL_JUDGE bool on next run When on (default), the email judge sorts each new non-promo email into Bill, Event, Needs reply, FYI or Unsure three times a day, on a local model only. New email stays hidden until it is judged, so off means new email waits and stays hidden.
EVARNESS_EMAIL_JUDGE_LABELS bool on next run When on (default), each judged email gets one Evarness/* label in Gmail (never archived, never marked read); off keeps the judgments in Evarness only.
EVARNESS_EMAIL_JUDGE_UNSURE_BELOW float 0.7 next run A judgment less sure than this is filed as Unsure and asked on an Action Center card.

Third-party model backends

Not EVARNESS_*, so outside the settings catalog's scope -- the local-model backends' own address variables, read wherever the harness talks to them.

Variable Default Description
OLLAMA_BASE_URL http://localhost:11434 Ollama's base URL (a trailing /v1 is accepted and trimmed). Set it to move the local-model backend to another box -- the cloud harness reaches the Mac's Ollama over the tailnet this way.
LM_STUDIO_BASE_URL http://localhost:1234 LM Studio's base URL, shared with the LLM failover proxy -- told apart by port (the proxy's EVARNESS_PROXY_PORT, default 4000, vs. LM Studio's 1234).

Every other setting

The full catalog of the email profile (not stable)

Every EVARNESS_* setting the install reads, from the settings catalog: the core's (src/evarness/foundation/settings/catalog.yaml) and each plugin's in the email profile (its manifest's settings:). A test fails when the code reads an EVARNESS_* name no catalog declares. The stable settings above are listed again here, marked Stable.

These are configuration, not part of the stable API: a name or a default may change in a 0.x release, and the release notes say so.

From core

Variable Kind Default Applies Description
EVARNESS_ACTIVITY_WORKERS int 1 restart Sets how many worker threads the background ActivityRunner uses (minimum 1).
EVARNESS_ADAPTIVE_TIERS bool off restart When on, the tier router's ResourceGovernor downshifts large local model tiers under host pressure (RAM, CPU load, thermal throttling); skipped entirely if EVARNESS_DISABLE_ARBITER is set.
EVARNESS_AGENTIC_CORE_ENABLED enum 1 restart Selects the AgenticCore governed loop rollout: 0/false/no/off turns it off, 'shadow' runs it in shadow, anything else (default) turns it on.
EVARNESS_AGENTIC_CORE_P4 bool off restart When on, routes the calendar and planner intents through the one governed agentic loop (requires the base loop rollout on/shadow).
EVARNESS_AGENT_SELF_MANAGEMENT bool off next call Adds the ADR-0086 self-management ReAct tools (introspect the agent's own brain, one of which compacts the conversation) to each turn's tool loop.
EVARNESS_ALLOWED_HOSTS list restart Comma-separated host names (host, host:port or a URL) the HTTP services answer to besides the built-in ones (loopback, testserver, the compose service names, this machine's hostname, the host of EVARNESS_PUBLIC_URL and their short names); any other Host is refused with 400 (DNS rebinding). An IP literal is always accepted. '' turns the check off. Guarded. Stable.*
EVARNESS_API_HOST url 127.0.0.1 next call Host evarness serve binds the Evarness API to (as scripts/start_evarness.sh binds every service), and the host health checks probe the local services on and the model inventory queries Ollama's /api/tags on. Stable.
EVARNESS_API_PORT url 8003 restart Port evarness serve binds the Evarness API to, and the port the health watch probes for its /healthz endpoint (default 8003). Stable.
EVARNESS_API_URL url http://localhost:8003 restart Base URL the CLI commands and the channel gateway use to reach the Evarness API (CLI defaults vary between http://localhost:8003 and http://127.0.0.1:8003). Stable.
EVARNESS_AUTH_SECRET secret next call Shared bearer secret every request to the Evarness API, the governor and the channel gateway must present, except their liveness probes (a paired device presents its own token instead); unset or blank, those services refuse every such request rather than run open. The learning eval sandbox forwards it (default 'eval-sandbox') into its container. Guarded. Stable.
EVARNESS_BEHAVIOR_BROAD_INTENTS list general,system,chat,other restart Comma-separated intents treated as catch-all when matching behavior files, so they get the lower broad-intent weight instead of the full intent weight.
EVARNESS_BEHAVIOR_BROAD_INTENT_WEIGHT float 0.5 restart Sets the relevance weight a catch-all intent (general, system, chat, other) contributes when matching stored behaviors to a turn.
EVARNESS_BEHAVIOR_INTENT_WEIGHT float 2.0 restart Sets the relevance weight a behavior file earns when one of its specific match_intents matches the turn's intent.
EVARNESS_BEHAVIOR_KEYWORD_WEIGHT float 1.0 restart Sets the relevance weight a keyword match contributes when deciding which behavior files to inject into a turn.
EVARNESS_BEHAVIOR_MATCH_THRESHOLD float 2.0 restart Minimum relevance score the best-matching behavior must reach in match_behavior before it is used for a turn; below it no behavior is selected.
EVARNESS_BEHAVIOR_MINER bool off restart Turns on the local-tier behavior-pattern miner (digital-twin layer 1) that proposes behaviors for user approval; this env value is the default the learning console reverts to on restart.
EVARNESS_CHANNEL_GATEWAY_PORT url 8006 restart Port the channel gateway listens on (launcher) and that the health check probes; default 8006.
EVARNESS_CHANNEL_GATEWAY_TELEGRAM_ENABLED bool on restart When on, the channel gateway runs the Telegram long-poller; when off (and EVARNESS_RUNTIME_TELEGRAM_POLLER_ENABLED unset) the runtime's own Telegram poller starts instead. Guarded.
EVARNESS_CHANNEL_GATEWAY_TRACING_ENABLED bool off restart Sets up OpenTelemetry tracing for the channel gateway service at startup; spans export only when an OTLP endpoint is set (OTEL_EXPORTER_OTLP_ENDPOINT).
EVARNESS_COMPACTION_KEEP_RECENT int 10 restart Sets how many of the most recent conversation turns are kept verbatim when the conversation is compacted.
EVARNESS_COMPACTION_RATIO float 0.8 restart Fraction of the compactor's token budget the running history must reach before it is compacted (values outside 0-1 fall back to 0.8); also sizes the kept-verbatim window.
EVARNESS_COMPACTION_THRESHOLD int 20 restart Turn-count floor at which a conversation is compacted into a summary (with the token budget also able to trigger compaction).
EVARNESS_COMPACTION_TOKEN_BUDGET int restart Sets the token budget at which the conversation compactor summarises older turns; unset uses a budget derived from the communication tier's context window.
EVARNESS_CONFIG_DIR path restart Points the harness at the directory holding its YAML config (memory, skills, profiles, governance, finance categories, plugin dump); cached after first read. Unset resolves, in order, to the checkout's config/ when running from a checkout, else the defaults shipped inside the installed package (foundation/paths.py config_dir).
EVARNESS_CRYSTALLIZE_PREFLIGHT bool off restart When on, each newly crystallized skill proposal is replayed through an isolated eval runtime and quarantined as preflight_failed if it fails quality.
EVARNESS_CURATOR_ESCALATION bool off restart When truthy, builds the escalation judge that grades answers and (in enforce mode) re-runs capability gaps at a stronger tier; the env can only turn it on, config/escalation.yaml enabled:true also turns it on.
EVARNESS_CURATOR_ESCALATION_CLOUD bool off restart When on (or cloud.allow in escalation.yaml), the escalation judge may escalate a turn to a cloud tier for content classified as eligible (default only 'public'; 'secret' never). Guarded.
EVARNESS_CURATOR_ESCALATION_MODE enum shadow restart Overrides the escalation judge mode from config/escalation.yaml: 'shadow' only diagnoses and records, 'enforce' lets the judge act (escalate) when it is enabled; other values are ignored. Guarded.
EVARNESS_CURATOR_ESCALATION_PRIORS bool off restart When on (or escalation.yaml priors.enabled), applies start-tier priors mined from escalation history to the router instead of running them in shadow. Guarded.
EVARNESS_CURATOR_FAITHFULNESS_LLM bool off restart Builds an LLM faithfulness judge for the ResponseCurator's strict mode so answers are checked against their sources.
EVARNESS_CURATOR_GROUNDING_LLM bool off restart When on, an LLM grounding judge client is built for the curator to check responses that carry retrieved context.
EVARNESS_CURATOR_LEAK_JUDGE bool on restart When not set to 0/false/no/off, builds an LLM leak judge that may clear responses the deterministic dump-phrase guard flagged; when off, that guard's halt stands. Guarded.
EVARNESS_CURATOR_OUTPUT_SAFETY bool off restart When on, builds the Llama Guard 3 output-safety judge the curator uses to check responses (shadow/warn-only unless enforce categories are configured). Guarded.
EVARNESS_CURATOR_OUTPUT_SAFETY_TIMEOUT_S float 12.0 restart Per-call time budget in seconds (clamped 1-60) for the output-safety guard, which fails open on timeout. Guarded.
EVARNESS_DATA_DIR path data restart Relocates every local data store (memory.db, chroma, tasks.db, finance and email stores, etc.).
EVARNESS_DEPLOYMENT_LABEL str next call Sets the deployment name returned to the web console, which shows it as a badge; empty when unset.
EVARNESS_DISABLE_ARBITER bool off restart Any non-empty value (even 0) skips attaching the Ollama arbiter ResourceGovernor to the tier router.
EVARNESS_DISABLE_EXTERNAL_WRITES bool off next call When set to 1, calendar writes stay local (no Apple or Google Calendar providers are registered); the playground and learning preflight set it for their sandboxes.
EVARNESS_DISABLE_WARMUP bool off restart When set to any non-empty value, skips the background warm-up calls that pre-load the router and executor models at startup (the playground and eval harness also set it for their own runtimes).
EVARNESS_EMBED_BACKEND enum onnx next call Chooses the embedding backend for corpus embeddings: 'onnx' (the shared ONNX MiniLM, default model only) or 'sentence-transformers' (needs the optional ML extra); any other value raises an error.
EVARNESS_ENABLE_COPILOT_BACKEND bool off restart Opts in to the GitHub Copilot cloud LLM provider (providers report available when set; copilot_auth requires exactly '1' before any network call); errors.py:20 only matches it in an error message. Guarded.
EVARNESS_EVALUATOR_PORT url 8090 restart Port where the remote governance evaluator sidecar is probed for /healthz.
EVARNESS_EVAL_SANDBOX enum effect restart Chooses how skill-proposal pre-flight replays are contained: effect (neutralize side effects), docker (full container), or off (no containment). Guarded.
EVARNESS_EXPORT_DIR path ~/.evarness/exports restart The one folder the web API's POST /memory/export may write under; a request names a sub-folder of it, never a path. Point it at an Obsidian vault's parent to export straight into one. Created owner-only (0700). The CLI (evarness memory export --to PATH) is not limited by it.
EVARNESS_FACT_EXTRACTION_MODE enum llm next call Set to regex to extract user facts with regex patterns instead of the LLM extractor; any other value uses the LLM.
EVARNESS_FACT_HISTORY_RETENTION_DAYS int 180 next call Sets the default age in days used by the evarness facts retention command when no --older-than value is given.
EVARNESS_FAKE_MODEL_SCRIPT path next call The YAML script the scripted fake model (provider fake) answers from when no script was installed in-process (evarness.testing does that).
EVARNESS_FEEDBACK_CAPTURE bool off next call When on, the API reports feedback_capture=true so the web UI shows the thumbs up/down answer-feedback control.
EVARNESS_FEEDBACK_CLARIFY bool off next call When exactly '1', appends one gentle invitation to refine to an answer when the judge or router signals uncertainty (never on a confident answer).
EVARNESS_FILEMANAGER_AGENT bool off restart When on, registers a first-class filemanager agent to answer the files intent (requires the base loop rollout on/shadow).
EVARNESS_GENERAL_TOOL_MAX_TURNS int 4 next call Base number of tool turns (bounded 1-128) the general agent loop may take before stopping; the cap var lifts it for continuation/auth-related queries.
EVARNESS_GENERAL_TOOL_MAX_TURNS_CAP int 8 next call Upper bound (clamped 1-128) on tool-call turns in the general tool loop, including the adaptive bump.
EVARNESS_GOVERNANCE_ALLOWED_TOOLS list restart Comma-separated exact tool names the governance kernel allows; unset means no allowlist (all tools). Guarded.
EVARNESS_GOVERNANCE_APPROVALS_ENABLED bool on restart When on, require_approval verdicts enqueue an approval and notify channels; when off, halts are advisory only. Guarded.
EVARNESS_GOVERNANCE_AUDIT_DB_PATH path restart Overrides where the governance audit ledger database is stored (default: governance data dir/audit.db).
EVARNESS_GOVERNANCE_BLOCKED_TOOLS list restart Comma-separated tool names the governance kernel blocks. Guarded.
EVARNESS_GOVERNANCE_COMMAND_SANDBOX bool on restart Registers the governance CommandSandbox (on by default); 0/false/no/off disables it without dropping the rest of the kernel. Guarded.
EVARNESS_GOVERNANCE_CONFIRM_ONCE_TOOLS list restart Comma-separated tool names that must ask for confirmation once, added on top of each tool's own declaration; unset or 'none' adds nothing. Guarded.
EVARNESS_GOVERNANCE_COST_ENFORCE bool on restart When on, a call that would pass the daily cost cap is refused; off only records spend. Guarded.
EVARNESS_GOVERNANCE_COST_LEDGER_DB_PATH path restart Path of the SQLite cost ledger the cost limiter writes and the cost summary reads; unset uses CostStore's default location.
EVARNESS_GOVERNANCE_COST_LIMITER_ENABLED bool off restart When truthy, registers the cost limiter, which records LLM spend and (with cost enforce on) refuses calls past the daily cap. Guarded.
EVARNESS_GOVERNANCE_DAILY_COST_CAP_USD float 5.0 restart Daily spend cap in USD the cost limiter enforces when EVARNESS_GOVERNANCE_COST_LIMITER_ENABLED is on (unparseable values fall back to $5.00). Guarded.
EVARNESS_GOVERNANCE_DISPLAY_MASK bool on next call Masks email addresses in displayed text and streams (on unless explicitly turned off); the audit ledger keeps originals. Guarded.
EVARNESS_GOVERNANCE_DRIFT_EXEMPTIONS_DB_PATH path restart Overrides where approved goal-drift exemptions are stored; unset uses the governance data dir drift_exemptions.db. Guarded.
EVARNESS_GOVERNANCE_ENABLED bool on restart Enables the governance kernel (secure by default; only an explicit 0/false/no/off disables it). Guarded.
EVARNESS_GOVERNANCE_EVALUATOR_MODE enum local restart Set to remote to have the kernel use the remote evaluator sidecar (EVARNESS_GOVERNANCE_EVALUATOR_URL) instead of the in-process evaluator registry; health checks then also probe the sidecar. Guarded.
EVARNESS_GOVERNANCE_EVALUATOR_TIMEOUT_S float 5.0 restart Sets the timeout in seconds for calls to the remote governance evaluator; on failure local-tier runs fail open and cloud-tier runs fail closed. Guarded.
EVARNESS_GOVERNANCE_EVALUATOR_URL url http://127.0.0.1:8090 restart Base URL of the remote governance evaluator used when evaluator mode is 'remote'; the CLI evaluator commands also use it. Guarded.
EVARNESS_GOVERNANCE_EXTERNAL_CONTENT_FLOOR bool on restart On by default. Text a tool, capability or MCP server declares content: external (a web page, a feed, an email, a retrieved document) reaches the model inside an untrusted-content envelope, and a small set of deterministic patterns (instruction overrides, chat-template and tool-call syntax, exfiltration instructions, hidden characters) is redacted with a ledger row. No model, no weights, no network. Plain boolean: on is unset, blank, 1, true, yes or on; off is only 0, false, no or off (anything else stays on). The model guard (EVARNESS_GOVERNANCE_PROMPT_GUARD) is separate and stays opt-in. Guarded.
EVARNESS_GOVERNANCE_FS_JAIL bool on restart Registers the governance FSJail (on by default); 0/false/no/off disables it without dropping the rest of the kernel. Guarded.
EVARNESS_GOVERNANCE_GOAL_DRIFT_MAX_DISTANCE float restart Sets the goal_drift signal's max distance (0.0-2.0) before a turn is flagged; unset keeps the signal default of 0.90. Guarded.
EVARNESS_GOVERNANCE_INPUT_SAFETY bool off restart When truthy, screens every user turn for hazards (self-harm, violence, ...) with the output guard's Llama Guard model before anything answers it, deterministic handlers included. Follows config/governance/threat-detection.yaml mode (shadow logs, enforce refuses). Guarded.
EVARNESS_GOVERNANCE_JUDGE_CLOUD_OPT_IN bool off restart Let judge_from_env's judge use tier_3 (cloud); production does not build that judge.
EVARNESS_GOVERNANCE_JUDGE_ENABLED bool off next call After every agent run that used tools, a background judge scores the trace and the answer for hallucination, goal alignment, tool misuse and danger, on the model EVARNESS_GOVERNANCE_JUDGE_TIER picks; a halt recommendation alerts your channels, the rest go to the audit log. Guarded.
EVARNESS_GOVERNANCE_JUDGE_MODEL_TIER enum tier_2 restart Picked a governance tier label for the judge built by judge_from_env, which production does not use.
EVARNESS_GOVERNANCE_JUDGE_TIER str run next call Which model reviews a run: 'run' judges each run on the same route the run used (a run that stayed on local models is judged on local models); any tier name from llm_tiers.yaml (e.g. tier2, private, tier3), local or cloud, judges every run on that tier. An unknown name falls back to 'run'. Guarded.
EVARNESS_GOVERNANCE_JUDGE_TIMEOUT_S float 30.0 next call How long one post-run review may take before it is recorded as a judge failure (non-positive or invalid values fall back to 30).
EVARNESS_GOVERNANCE_LOOP_DETECT_ENABLED bool off restart When truthy, builds an embedder and registers the governance loop-detection signal; off by default. Guarded.
EVARNESS_GOVERNANCE_MCP_ALLOWLIST bool on restart When on, the MCP allowlist hook enforces mcp-servers.yaml governance; 0 disables the hook entirely. Guarded.
EVARNESS_GOVERNANCE_NETWORK_EGRESS bool on restart Enables the governance NetworkEgress control; 0/false/no/off disables it. Guarded.
EVARNESS_GOVERNANCE_OWNER_PII enum off restart Owner-PII masking across the guards (ADR-0125): off (default) or shadow, which audits what each guard would do with the owner's name, email, phone, address and handles and changes nothing (read it with evarness governance pii-shadow). Any other value, enforce included, runs shadow with a startup warning; enforce arrives kind by kind in PR 5. Guarded.
EVARNESS_GOVERNANCE_PROMPT_GUARD bool off restart When truthy, installs the inbound and retrieved-content prompt-injection guard hooks using config/governance/threat-detection.yaml. Guarded.
EVARNESS_GOVERNANCE_REDACTION_ENABLED bool off restart When truthy, builds the vault store the governance kernel uses to redact stored secrets from content. Guarded.
EVARNESS_GOVERNANCE_SIDE_EFFECT_LEDGER bool on restart On (the default, the same as unset) the side-effect ledger (side_effects.db in the governance data dir, $EVARNESS_HOME/governance when EVARNESS_HOME is set, else ~/.local/share/evarness) always covers the high-risk class. A destructive tool's or a pinned write's row is written before the call runs, and plain writes and reads leave no row and open no file; setting this to true or 1 does not widen that, use EVARNESS_GOVERNANCE_SIDE_EFFECT_LEDGER_ALL. Off denies every destructive tool and pinned write, since none may run without a durable record. Guarded.
EVARNESS_GOVERNANCE_SIDE_EFFECT_LEDGER_ALL bool off restart Only meaningful while EVARNESS_GOVERNANCE_SIDE_EFFECT_LEDGER is on. On also records every other non-read call's side effect after it runs (commits, pushes, file writes, sends), on top of the high-risk class the ledger always covers. Off (the default) records the high-risk class only. With the ledger off this has no effect and logs a warning. Before this setting existed, EVARNESS_GOVERNANCE_SIDE_EFFECT_LEDGER=1 meant this; it no longer does.
EVARNESS_GOVERNANCE_SIDE_EFFECT_LEDGER_DB_PATH path restart SQLite path for the governance side-effect ledger; unset uses side_effects.db in the governance data dir ($EVARNESS_HOME/governance when EVARNESS_HOME is set, else ~/.local/share/evarness).
EVARNESS_GOVERNANCE_TRUSTED_CLOUD_FOR list restart Comma-separated data classes ('personal', 'internal') the egress gate lets reach cloud models; other values are dropped. Guarded.
EVARNESS_GOVERNANCE_VAULT_DB_PATH path restart Overrides the database path of the vault used for secret redaction.
EVARNESS_GOVERNOR_AUDIT_DB path restart Path of the governor service's audit database; unset uses the service's repo default.
EVARNESS_GOVERNOR_BASE_URL url restart Where a deployment that runs the standalone governor service says it is (docker-compose sets it). When set, the health check expects the governor to answer; unset, a desktop install that never started it is not reported as broken.
EVARNESS_GOVERNOR_POLICY_PATH path restart Path to the policy file the standalone governor service loads instead of the repository default. Guarded.
EVARNESS_GOVERNOR_PORT url 8080 restart Port the governor service listens on (launcher) and that the health check probes; default 8080.
EVARNESS_HEALTH_ENABLED bool on next run Master switch for the health subsystem; off makes the health heartbeat skip.
EVARNESS_HEALTH_NET_PROBE bool off next run When on, credential health checks make live network probes outside a manual refresh.
EVARNESS_HEALTH_WATCH_ENABLED bool restart Overrides the enabled flag from config/health_watch.yaml (which defaults to true); a falsy value turns the connector health watcher off.
EVARNESS_HOME path ~/.evarness restart Relocates the identity tree, plugin home, session logs and (when set) the governance data/config dirs. Stable.
EVARNESS_INTENTION_ROLLUP bool off restart Turns on the local-tier intention-rollup analyst (digital-twin layer 3) that proposes rolled-up goals for approval; this env value is the default the learning console reverts to on restart.
EVARNESS_INTENT_ROUTER_SEMANTIC bool off restart When on, an embedding classifier becomes the primary intent router (deferring to keyword/LLM when unsure) and calendar create-intent uses it.
EVARNESS_INTENT_ROUTER_SEMANTIC_MARGIN float 0.05 restart How far the winning intent must beat the runner-up for the semantic intent classifier to decide instead of deferring.
EVARNESS_INTENT_ROUTER_SEMANTIC_THRESHOLD float 0.42 restart Sets the minimum similarity the semantic intent classifier needs to decide an intent itself (only used when EVARNESS_INTENT_ROUTER_SEMANTIC=1).
EVARNESS_INTERACTIVE_SESSION bool on next call When set to 0, approval requests are not prompted on the terminal even when stdin is a TTY.
EVARNESS_INTERCEPTS_CONFIG path restart Path to the intercept chain YAML; when unset uses intercepts.yaml in the resolved config directory (EVARNESS_CONFIG_DIR, else the checkout's config/, else the packaged defaults).
EVARNESS_LEARNING_ANALYST bool off restart Turns on the local-tier agentic learning analyst that interprets learning telemetry into a report (never acts); this env value is the default the learning console reverts to on restart.
EVARNESS_LEARNING_CORRECTION_JUDGE bool off restart When on (or outcomes.yaml user_correction.enabled), spends a governed LLM call on turns that look like corrections to judge whether the prior answer was corrected.
EVARNESS_LESSON_CAPTURE_ENABLED bool on restart Enables capturing lessons into memory; 0/false/False disables it.
EVARNESS_LESSON_DOMAIN_ALLOW list restart Comma-separated domains; when set, only lessons whose domain is in the list are captured/recalled.
EVARNESS_LESSON_DOMAIN_BLOCK list restart Comma-separated lesson domains excluded when retrieving lessons for a turn.
EVARNESS_LESSON_TOP_K int 3 restart Default number of lessons LessonCapture retrieves (negative values clamp to 0; invalid falls back to 3).
EVARNESS_LLM_PROVIDER str restart Puts every model tier on this provider, which must be declared in the providers block of llm_tiers.yaml; fake runs everything on the scripted fake model (tests and evarness email demo), offline and deterministic.
EVARNESS_LOG_LEVEL enum INFO restart Sets the root logging level (e.g. DEBUG, INFO, WARNING); unknown names fall back to INFO.
EVARNESS_LOG_PROMPT_CAP int 8192 next call Most characters of each LLM prompt message written to the session log (the middle is cut beyond it). Raise it to capture whole ReAct prompts for a model bake-off; values below 8192 are ignored.
EVARNESS_MCP_KEYS_DIR path ~/.config/evarness/mcp-keys next call Directory where the mcp CLI keeps its signing keys.
EVARNESS_MCP_SERVERS_CONFIG_PATH path config/coding-agent/mcp-servers.yaml restart Path of the mcp-servers.yaml governance map used by the MCP allowlist hook; missing file runs the hook in degraded allow+warn mode. Guarded.
EVARNESS_MEMORY_MAX_PROFILE_CHARS int 8000 restart Maximum characters of the curated USER.md profile injected into the memory context.
EVARNESS_MEMORY_MIN_FACT_CONFIDENCE float 0.35 restart Facts below this confidence are dropped from memory recall; 0.0 stops dropping.
EVARNESS_MEMORY_RECALL_MAX_DISTANCE float 1.45 restart Relevance cutoff for cross-session recall and memory_search fact results; results farther than this distance are dropped.
EVARNESS_MEMORY_RECALL_MODE enum push next call How turns from OTHER conversations reach a prompt. push (default) puts up to 4 related turns in every prompt; pointer puts a one-line note naming up to 2 related conversations that recall_conversation can read on demand, and pushes the nearest 2 turns only when the message clearly refers back (config/memory/recall.yaml). Anything else is push. Switch back at any time.
EVARNESS_MEMORY_UNCERTAIN_BELOW float 0.6 restart Facts recalled with confidence below this value are kept but marked uncertain ('unconfirmed') in the prompt.
EVARNESS_MISSION_AUTOCREATE bool off next call When truthy, successful multi-step turns and recurring episodic patterns are proposed as pending missions awaiting approval.
EVARNESS_MODEL_HOST_RAM_GB float next call The RAM, in GB, of the machine the models run on, when that is not the one Evarness runs on. evarness doctor sizes the model set from it instead of measuring; in Docker against the host's Ollama it would otherwise see only the container VM's memory. Unset measures this machine. setup-windows.ps1 writes it to .env.
EVARNESS_OBSERVABILITY_METRICS_ENABLED bool off next call When on, the /observability/llm-metrics endpoint returns an LLM metrics summary; when off it returns 404.
EVARNESS_OLLAMA_BREAKER bool on next call When on, the circuit breaker applies to local-provider LLM calls; 0/false/no/off disables it.
EVARNESS_OLLAMA_PORT url 11434 next run Port used to reach Ollama for its health probe and the local model inventory.
EVARNESS_OTEL_HTTPX_ENABLED bool on restart When on, instruments httpx calls for OpenTelemetry tracing (only while an OTLP endpoint is set).
EVARNESS_OTEL_LANGCHAIN_ENABLED bool on restart Enables OpenTelemetry instrumentation of LangChain while an OTLP endpoint is set.
EVARNESS_PLAYGROUND_DIR path next call Directory holding playground scenario suites; unset uses playground/ in the resolved config directory (EVARNESS_CONFIG_DIR, else the checkout's config/, else the packaged defaults).
EVARNESS_PLUGINS_DISABLE list restart Comma-separated plugin names removed from the active profile. Guarded.
EVARNESS_PLUGINS_ENABLE list restart Comma-separated plugin names forced on over the profile. Guarded.
EVARNESS_PROFILE str default restart Selects which shipped profile (config/profiles/.yaml) decides which plugins mount, in what order and with what trust. Unset, Evarness runs default, or email when the email plugins are installed. Guarded. Stable.
EVARNESS_PROVIDERS_CONFIG path ~/.evarness/providers.json restart Path to the LLM providers JSON; in iris_code an empty value disables the global provider override.
EVARNESS_PROXY_PORT url 4000 restart Port an LLM failover proxy listens on, when the deployment runs one; the health checks also use it to tell the proxy from LM Studio.
EVARNESS_PUBLIC_URL url next call Absolute base URL the web console is reached at (https://). Its host is one the HTTP services answer to (the Host-header guard), and it is the base of the links Evarness sends out (an OAuth callback, the morning digest's Telegram buttons); empty answers to the built-in names only and sends no such links. Stable.
EVARNESS_RAG_UPLOAD_DIR path <repo>/data/rag_uploads restart Directory where uploaded RAG documents are stored.
EVARNESS_REACT_ASK_USER bool on restart Lets the conversational ReAct loop pause and ask the user a question; 0/false/no/off disables the ask tool.
EVARNESS_REACT_HISTORY_TOKEN_BUDGET int restart Overrides the token budget for the running ReAct transcript; unset, the harness loop derives it from the tier-2 context window and the email agent uses 3000.
EVARNESS_REACT_MAX_ITERATIONS int 10 restart Caps how many tool-use iterations the ReAct loops (general and email) run per turn.
EVARNESS_REACT_MEMORY_TOKEN_BUDGET int restart Overrides the token budget for the memory block admitted into the ReAct loop; unset uses the context controller's window-derived budget.
EVARNESS_REACT_TIER_BUMP_TOOL_COUNT int 6 next call When a tier-1 intent faces more tools than this number (and governance is on), the ReAct loop borrows the multi-step (tier-2) routing intent.
EVARNESS_REACT_TIMEOUT_SECONDS int 120 restart Timeout in seconds for the ReAct agentic loop (general and email agents).
EVARNESS_REACT_TOOL_CAP int 12 next call Maximum number of tools shortlisted into the ReAct tool menu each turn.
EVARNESS_RECENT_TURNS_BUDGET_SHARE float 0.45 restart Sets the share of the memory token budget the live conversation transcript may fill.
EVARNESS_RESEARCH_AGENT bool off restart Registers the dedicated research persona and remaps the 'search' intent to it; off by default.
EVARNESS_RESTART_ON_REQUEST bool on restart Under a supervisor, whether this server exits when the app's Restart harness asks. A deployment whose governor owns the network namespace the other services share sets it off on the governor.
EVARNESS_ROUTINE_REFLECTION bool off next run When on, each routine-reflection heartbeat run posts approval requests proposing changes to failing/stale routines (never mutates a routine).
EVARNESS_RUNTIME_TELEGRAM_POLLER_ENABLED bool off restart When set, explicitly decides whether the runtime's own Telegram poller starts; unset defers to the inverse of EVARNESS_CHANNEL_GATEWAY_TELEGRAM_ENABLED. Guarded.
EVARNESS_SANDBOX_EGRESS_ALLOWLIST list next call Comma-separated hosts the code sandbox may reach; unset uses the built-in default list (PyPI, GitHub, Yahoo quotes). Guarded.
EVARNESS_SANDBOX_PREFLIGHT bool off next run When on, promoted experiments are replayed through an isolated eval runtime under baseline vs variant and the verdict is stamped; the change is never applied.
EVARNESS_SANDBOX_RUNTIME enum restart Overrides the code sandbox runtime with docker, gvisor or firecracker (otherwise config/governance/sandbox.yaml, default docker). Guarded.
EVARNESS_SEARCH_SYNTHESIS_MODEL str gpt-5-mini restart Copilot model used for cloud search synthesis when EVARNESS_SEARCH_SYNTHESIS_PROVIDER=copilot and EVARNESS_ENABLE_COPILOT_BACKEND is set. Guarded.
EVARNESS_SEARCH_SYNTHESIS_PROVIDER enum restart Set to 'copilot' (with EVARNESS_ENABLE_COPILOT_BACKEND) to synthesize search results with a GitHub Copilot cloud model (default gpt-5-mini) instead of the local search tier. Guarded.
EVARNESS_SECRET_BACKEND enum keyring next call Chooses where secrets are stored: the OS keyring or the Fernet-encrypted vault. Guarded.
EVARNESS_SESSION_LOG_DIR path $EVARNESS_HOME/logs (~/.evarness/logs) restart Directory where session logs are written.
EVARNESS_SESSION_MEMORY_MAX_SESSIONS int 256 restart How many conversations keep their live window in the server's memory; the least recently used beyond this are dropped and reload from the memory store on their next turn.
EVARNESS_SETTINGS_SIDECAR_CATALOGS path restart Settings catalogs (YAML files separated by the path separator, each naming its owner) of processes the deployment runs beside the harness, such as an LLM proxy; the app lists their settings and leaves changing them to that process's environment.
EVARNESS_SKILL_HOTRELOAD bool off restart When truthy, watches the skills directory and reloads skills when their files change.
EVARNESS_SKILL_ROUTER_SEMANTIC bool on restart When on, routine authoring and briefing-section extraction use an embedding-based SemanticSkillRouter; off forces the legacy keyword scorer.
EVARNESS_SKILL_ROUTER_THRESHOLD float 0.45 restart Embedding-similarity threshold the semantic skill router uses to match a request to a skill (default 0.45 from semantic_router.py:29).
EVARNESS_SKILL_SYNTHESIS bool off restart When on, the crystallizer uses a local-tier LLM to synthesize skills instead of falling back to a scaffold.
EVARNESS_STANDING_INSTRUCTIONS bool on next call When on, a chat message that teaches a rule is saved as a behavior and honored on later matching turns.
EVARNESS_SUPERVISED bool off restart Set by a deployment whose supervisor restarts every server that exits (a compose file with restart policies, for example); only then may the app's Restart harness ask the servers to exit.
EVARNESS_SYNC_MEMORY_BLOCKING bool off restart When on, the startup memory-to-index sync runs inline before build_runtime returns instead of on a background thread.
EVARNESS_SYNC_WIKI_BLOCKING bool off restart When on (and wiki ingest is enabled), re-indexes wiki pages synchronously at startup instead of in a background thread.
EVARNESS_THREAT_DETECTION_CONFIG path config/governance/threat-detection.yaml restart Overrides the path of the threat-detection (prompt guard) YAML config. Guarded.
EVARNESS_TZ str UTC restart The owner's IANA time zone (e.g. America/Chicago). The morning digest's time, reminders and schedules are read in it; the Docker Compose files also set the container clock (TZ) from it. Unset or not a zone name means UTC. Stable.
EVARNESS_USER_ID str local restart User id under which LLM spend is recorded and summed against the daily cost cap. Guarded.
EVARNESS_VAULT_MASTER_KEY secret restart Fernet master key for the credential vault and the file vault, used instead of the OS keyring. Guarded. Stable.
EVARNESS_VAULT_PASSPHRASE secret next call Passphrase from which the encrypted-file vault key is derived (scrypt) when EVARNESS_SECRET_BACKEND=vault; unset uses a keychain-held key. Guarded.
EVARNESS_WEBUI_ALLOW_WRITES bool off next call Allows gated control writes from callers without a paired device (shared secret or no credentials); paired devices are judged by their own scope regardless. Guarded.
EVARNESS_WEBUI_DIST path /app/webui/dist restart Directory the API serves the built web UI from; without an index.html there the UI is not served.
EVARNESS_WEBUI_PORT int 5181 next call Port the setup wizard's closing "open the web UI" hint shows; it reads this to reflect a custom port mapping but does not itself change which port the web UI binds to.
EVARNESS_WEB_PUSH_SUBJECT url https://github.com/evarness-ai/evarness next call Contact subject (URL or mailto) sent in Web Push VAPID claims.
EVARNESS_WEB_PUSH_VAPID_PRIVATE_KEY secret next call PEM EC private key used to sign web push requests instead of the generated key file; changing it breaks existing subscriptions. Guarded.
EVARNESS_WIKI_INGEST bool off restart When on, chat turns and classified emails are automatically ingested into wiki pages and pages are re-embedded at startup.

From plugin code_exec

Variable Kind Default Applies Description
EVARNESS_CODE_EXEC_MAX_ITERATIONS int 8 next call Sets the base number of loop iterations a code_exec task gets (bounded 1-128; the cap env is raised to match if lower).
EVARNESS_CODE_EXEC_MAX_ITERATIONS_CAP int 14 next call Sets the maximum iteration budget for a code_exec loop (clamped 1-128, never below EVARNESS_CODE_EXEC_MAX_ITERATIONS).

From plugin email_workflows

Variable Kind Default Applies Description
EVARNESS_DEMO_HOME path next call Where evarness email demo keeps its own isolated Evarness home (default ~/.evarness-demo); never the owner's profile. Stable.
EVARNESS_EMAIL_DEFAULT_SENDER str next call Names the connected mail account (address or account id) a new email is sent from when no sender is given; if it names an unconnected account the send is refused, and when unset the first account in sorted order is used.
EVARNESS_EMAIL_JUDGE bool on next run When on (default), the email judge sorts each new non-promo email into Bill, Event, Needs reply, FYI or Unsure three times a day, on a local model only. New email stays hidden until it is judged, so off means new email waits and stays hidden. Stable.
EVARNESS_EMAIL_JUDGE_LABELS bool on next run When on (default), each judged email gets one Evarness/ label in Gmail (never archived, never marked read); off keeps the judgments in Evarness only. Stable.*
EVARNESS_EMAIL_JUDGE_MAX int 100 next run The most emails the judge reads in one run; the rest wait, hidden, and are judged first next run.
EVARNESS_EMAIL_JUDGE_UNSURE_BELOW float 0.7 next run A judgment less sure than this is filed as Unsure and asked on an Action Center card. Stable.
EVARNESS_EMAIL_SEMANTIC_SEARCH bool on restart When on (default), the email tools search by meaning as well as by words, the index follows new mail, and a heartbeat fills in older mail in small batches; 0 turns it off.
EVARNESS_FOLLOWUP_ACTIONABLE_ROOTS list next call Comma-separated email category roots that may create follow-up tasks; unset uses personal, work, finance, jobs, travel, community.

From plugin research

Variable Kind Default Applies Description
EVARNESS_REDIS_URL url redis://localhost:6379/0 restart Redis URL for the research result cache when the Redis backend is selected.
EVARNESS_RESEARCH_CACHE enum sqlite restart Selects the research cache: sqlite (default), redis (falls back to sqlite), or off/none to disable.
EVARNESS_RESEARCH_CRAWLER enum trafilatura next call Selects the research page extraction backend: crawl4ai, otherwise trafilatura fetch-and-extract.
EVARNESS_RESEARCH_NEWS_SOURCES path plugins_builtin/research/news_sources.yaml next call Path of the YAML file giving per-domain trust scores for news search ranking.
EVARNESS_RESEARCH_RERANKER enum restart Set to bge or cross-encoder to rerank research results with a cross-encoder; any other value leaves order unchanged.
EVARNESS_RESEARCH_RERANKER_MODEL str BAAI/bge-reranker-base restart sentence-transformers CrossEncoder model used to rerank research results when EVARNESS_RESEARCH_RERANKER is 'bge' or 'cross-encoder'.
EVARNESS_SEARXNG_URL url next call Base URL of a self-hosted SearXNG instance; when set it becomes the first research search provider.

From plugin web_channel

Variable Kind Default Applies Description
EVARNESS_WEB_SESSION str default restart Web chat session id that channel messages without a recipient (e.g. heartbeat notices) are delivered into.