Config files
Hermes stores all configuration in~/.hermes/:
| File | Purpose |
|---|---|
~/.hermes/config.yaml | All settings — model, terminal, display, memory, tools |
~/.hermes/.env | API keys and secrets (mode 0600, never committed) |
.env file is created at setup and secured with owner-only permissions. Never put API keys directly in config.yaml.
Managing config
Model and provider selection
Select your model interactively:Supported providers
- Nous Portal
- OpenRouter
- OpenAI / Anthropic
- Custom endpoint
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
| Provider | Key(s) |
|---|---|
| Z.AI / GLM | GLM_API_KEY |
| Kimi / Moonshot | KIMI_API_KEY |
| MiniMax | MINIMAX_API_KEY |
| DeepSeek | DEEPSEEK_API_KEY |
| Alibaba DashScope (Qwen) | DASHSCOPE_API_KEY |
| OpenCode Zen | OPENCODE_ZEN_API_KEY |
| OpenCode Go | OPENCODE_GO_API_KEY |
config.yaml reference
Below is a representative~/.hermes/config.yaml with the most commonly tuned options:
Configuration sections
- Model
- Terminal
- Display
- Memory
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.
config.yaml wins for terminal settings; .env wins for API keys.
Config version migration
Hermes uses a_config_version field in config.yaml (currently 10) to track schema changes. When you update Hermes, it automatically:
- Detects that your config is on an older version
- Merges any new default fields into your config
- Prompts for any new optional API keys that were added
- Bumps
_config_versionto the latest value