Skip to main content

Config files

Hermes stores all configuration in ~/.hermes/: The .env file is created at setup and secured with owner-only permissions. Never put API keys directly in config.yaml.

Managing config

You can also change many settings in-session with slash commands:

Model and provider selection

Select your model interactively:
Or set it directly:
In-session:

Supported providers

The official Nous Research model portal. Authenticate via OAuth:
The OAuth flow opens your browser for authentication and stores credentials locally in ~/.hermes/auth.json. No API key needed — Hermes handles credential refresh automatically.

Other supported providers

config.yaml reference

Below is a representative ~/.hermes/config.yaml with the most commonly tuned options:

Configuration sections

Environment variables vs config.yaml

Hermes uses two distinct systems:
  • ~/.hermes/.env — API keys, tokens, and passwords. Never exposed to the agent. Loaded on startup and overrides stale shell exports.
  • ~/.hermes/config.yaml — All behavioral settings. The authoritative source for model, terminal, display, and memory configuration.
When both set the same value, config.yaml wins for terminal settings; .env wins for API keys.
Use hermes config set key value with dot notation to set nested values without manually editing YAML:

Config version migration

Hermes uses a _config_version field in config.yaml (currently 10) to track schema changes. When you update Hermes, it automatically:
  1. Detects that your config is on an older version
  2. Merges any new default fields into your config
  3. Prompts for any new optional API keys that were added
  4. Bumps _config_version to the latest value
You can trigger migration manually:
No existing config values are overwritten during migration — only missing keys are added.