Configuration
What this is for. Configuration is how you change listen address, modules, autonomy, memory capture, and agent verify commands without rebuilding. Edit local.yaml and EYAS_* env — not config/default.yaml if you can avoid it (upgrades overwrite shipped defaults). This chapter assumes you already chose native, Docker, or Kubernetes.
When to use it
Section titled “When to use it”- Change host/port, log level, or disable a module.
- Turn durable memory capture off (
memory.capture.enabled: false) — default is on. - Import extra skill or persona markdown folders (
skills.importRoots/agent.importRoots) without turning host Claude config on. - Add
agent.verifyCommandsso a coding run is not “done” until tests pass. - Point Search at several Odoo checkouts via
EYAS_ODOO_SOURCES_JSON.
Typical workflow
Section titled “Typical workflow”- Copy or create
local.yamlnext to the shipped defaults (or setEYAS_HOMEso it lives with that instance). - Change only the keys you need. Validate:
eyas config validate. - Restart (
eyas restart) oreyas config reloadwhere supported. - Confirm in Settings and with
eyas doctor.
Features
Section titled “Features”| File | Role |
|---|---|
config/default.yaml |
Shipped defaults |
local.yaml |
Overlay merge |
.env |
Optional secrets (never commit) |
Precedence: CLI flags → EYAS_* env → local YAML → default YAML.
Example keys in default.yaml: server.host/port, database.path, log.level, modules.disabled, autonomy.identitySelfUpdate, memory.capture.enabled.
Durable memory capture
Section titled “Durable memory capture”memory: capture: enabled: true # set false to stop post-turn vault writes minUserChars: 40 maxPerConversation: 20Default on. A small model call attaches after a qualifying turn — never in the reply’s critical path. See Memory and FAQ.
Extra skill and persona roots
Section titled “Extra skill and persona roots”Host Claude / Cursor skill folders are not a live store. Isolation stays on. To copy procedures into EYAS, list directories on this instance:
skills: importRoots: [] # extra markdown skill folders; empty = noneagent: importRoots: [] # extra persona markdown folders; empty = noneShipped default is an empty list. Put paths in local.yaml, never in product source. Imported skills win over bundled copies of the same id. See Skills.
Agent verify & coding (0.8.6+)
Section titled “Agent verify & coding (0.8.6+)”agent: criticEnabled: true criticMaxRounds: 1 # Deterministic checks after a background run (empty = disabled) verifyCommands: - name: bun-test command: bun args: [test] # verifyCwd: /absolute/path/to/repo # default: process.cwd()| Key | Meaning |
|---|---|
agent.verifyCommands |
List of { name, command, args?, timeoutMs? } — no shell; failures re-open the agent with the error summary |
agent.verifyCwd |
Working directory for those commands |
EYAS_ODOO_SOURCE_PATHS |
Colon- or semicolon-separated local Odoo checkout roots for lightweight odoo_search_* and optional source bootstrap |
EYAS_ODOO_SOURCES_JSON |
Preferred multi-version bootstrap: JSON array of { "path", "label?", "version?", "edition?", "family?", "name?", "tags?" } — creates idle Search Sources on start if those paths are not already registered |
EYAS_AUTO_FAILOVER |
Opt-in fill of empty routing-tier fallbacks from a second live provider |
EYAS_BROWSER_USER_DATA_DIR |
EYAS-owned Chromium profile for headless browser_* (default data/browser/profile). Daily Chrome/Edge profiles are rejected |
EYAS_AGENT_BROWSER_BIN |
Optional Vercel agent-browser CLI path. Empty = PATH. Set-but-missing is fail-closed (no PATH fallback). Profile: data/browser/agent-browser/profile |
Multi-version Odoo example
Section titled “Multi-version Odoo example”export EYAS_ODOO_SOURCES_JSON='[ {"path":"/path/to/odoo-18-community","label":"18c","version":"18","edition":"community","family":"odoo"}, {"path":"/path/to/odoo-18-enterprise","label":"18e","version":"18","edition":"enterprise","family":"odoo"}, {"path":"/path/to/custom-addons","label":"addons","version":"18","edition":"custom","family":"odoo"}]'Then open Search Sources, Reindex each source, and set Default code sources on each Project. Conversations pin sources on the Sources tab — see Search.
Tool policy hooks run on every tool call (PreToolUse / PostToolUse) via the ToolExecutor — see Tools.