How-To Series · Episode 58 / 59 · Module 9: Locking It Down

Hermes · Configuration Deep Dive

Where settings live, how they resolve, and the one pattern that repeats across every model slot.

After this videoYou can now find, set, and resolve any Hermes setting with confidence.

Config looks sprawling, but the system is small. Everything lives in ~/.hermes/: config.yaml for non-secret settings, .env for secrets, plus SOUL.md, memories, skills, cron, sessions. Manage it with hermes config, config edit, and config set KEY VAL, which auto-routes (keys → .env, everything else → config.yaml); config check / migrate add new options after an update. Precedence resolves conflicts: CLI flags > config.yaml > .env > built-in defaults. Inside config.yaml you can reference any env var with ${VAR}. The pattern that repeats: every model slot (auxiliary, compression, fallback) uses the same three knobs, provider / model / base_url. A few knobs worth knowing: compression.* hot-reloads on a live gateway, tool_output / file_read_max_chars match your context window, agent.max_turns is the iteration budget, and agent.disabled_toolsets kills a toolset everywhere.

About these resources. Every command comes from the Configuration doc; per-feature config lives in its own episode.

Sources · What this video distills

1 docs page · every command below traces to one of them
Primary · directory, config commands, precedence, env substitution, universal pattern, tuning knobs
Configuration
Read ↗

Commands shown · Copy and paste

each shows the source doc it came from
View / editfrom source ↗
hermes config · hermes config edit
Set (auto-routed)from source ↗
hermes config set model anthropic/claude-opus-4 · hermes config set OPENROUTER_API_KEY sk-or-...
After an updatefrom source ↗
hermes config check · hermes config migrate

Going deeper · Related Hermes docs

further reading · not sources of facts shown above

Next in the series · Episodes that build on this

E59
Environment Variables
E55
Configuring Models
E57
Hermes in Docker