~/.hermes/config.yaml. Missing keys fall back to built-in defaults. The file is created automatically on first run.
The current config schema version is 10. Running
hermes config migrate adds any new fields introduced since your last update and bumps the _config_version key.Complete example
Model
string | object
default:"anthropic/claude-opus-4.6"
The default model. Can be a plain string (model slug) or an object with
default, provider, and base_url.string
default:"auto"
Inference provider. Options:
auto, openrouter, nous, openai-codex, copilot-acp, copilot, anthropic, zai, kimi-coding, minimax, minimax-cn, kilocode, opencode-zen, opencode-go, ai-gateway, alibaba, custom. Can also be overridden with --provider flag or HERMES_INFERENCE_PROVIDER env var.string
API base URL. Used to point at custom OpenAI-compatible endpoints.
Agent
integer
default:"90"
Maximum tool-calling iterations per conversation. Higher values allow more complex tasks at the cost of more tokens. Recommended: 20–30 for focused tasks, 50–100 for open exploration.
string
Reasoning effort level for models that support extended thinking (OpenRouter, Nous Portal). Options:
xhigh, high, medium, low, minimal, none. Toggle at runtime with /reasoning [level].Terminal
string
default:"local"
Terminal execution backend. Options:
local— runs commands on your machinessh— runs commands on a remote serverdocker— isolated Docker containersingularity— Singularity/Apptainer container (HPC environments)modal— Modal cloud sandboxdaytona— Daytona cloud dev environments
string
default:"."
Working directory. For
local: . means the directory where hermes was launched. For remote backends, use an absolute path inside the target environment.integer
default:"180"
Default command timeout in seconds.
boolean
default:"true"
Keep a long-lived bash shell across
execute() calls so cwd, environment variables, and shell state survive between commands. Enabled by default for non-local backends.string
default:"nikolaik/python-nodejs:python3.11-nodejs20"
Docker image for the
docker backend.boolean
default:"false"
Explicitly mount the launch
cwd into /workspace inside Docker. Off by default for isolation.list
List of environment variable names to forward from the host into the Docker container.
list
Docker volume mounts. Each entry is
host_path:container_path (standard Docker -v syntax).integer
default:"1"
CPU cores for container backends (docker, singularity, modal, daytona). Ignored for
local and ssh.integer
default:"5120"
Memory in MB for container backends. Default is 5120 (5 GB).
integer
default:"51200"
Disk space in MB for container backends. Default is 51200 (50 GB).
boolean
default:"true"
Persist the container filesystem across sessions. Set to
false for ephemeral (fresh) containers.backend: ssh):
Browser
integer
default:"120"
Seconds of agent inactivity before browser sessions are automatically closed.
boolean
default:"false"
Automatically record browser sessions as WebM videos.
Memory
boolean
default:"true"
Enable the agent’s persistent memory store (
MEMORY.md). The agent can save facts about the environment, coding conventions, and things it has learned.boolean
default:"true"
Enable the user profile store (
USER.md). The agent saves preferences, communication style, and expectations.integer
default:"2200"
Maximum character count for the agent memory store (~800 tokens at 2.75 chars/token).
integer
default:"1375"
Maximum character count for the user profile store (~500 tokens).
Compression
When a conversation approaches the model’s context limit, middle turns are automatically summarized.boolean
default:"true"
Enable automatic context compression.
number
default:"0.85"
Trigger compression at this fraction of the model’s context limit (e.g.
0.85 = 85%). Lower values compress earlier.string
default:"google/gemini-3-flash-preview"
Fast, cheap model used to generate conversation summaries. Must support a context length at least as large as your main model.
string
default:"auto"
Provider for the summary model. Options:
auto, openrouter, nous, main.Display / Skin
string
default:"default"
Visual theme for the CLI. Built-in skins:
default (gold/kawaii), ares (crimson/bronze), mono (grayscale), slate (blue developer), poseidon (ocean blue), sisyphus (austere grayscale), charizard (volcanic orange). Drop custom YAML skins in ~/.hermes/skins/<name>.yaml and activate with /skin <name>.string
default:"all"
Tool activity display level:
off— silent, only show the final responsenew— show a tool indicator only when the tool changesall— show every tool call with a short previewverbose— full args, results, and debug logs
/verbose.boolean
default:"false"
Use compact banner mode.
boolean
default:"false"
Show the model’s reasoning/thinking before each response. Toggle with
/reasoning show or /reasoning hide.boolean
default:"false"
Stream tokens to the terminal as they arrive instead of waiting for the full response.
boolean
default:"false"
Ring the terminal bell when the agent finishes a response.
boolean
default:"false"
Show estimated cost in the status bar.
string
default:"kawaii"
Default personality preset.
string
default:"all"
Gateway-only. Controls watcher verbosity for
terminal(background=true) calls:all— running output + final messageresult— final completion message onlyerror— final message only when exit code ≠ 0off— no watcher messages
Approvals
string
default:"manual"
Approval mode for dangerous terminal commands:
manual— always prompt the usersmart— use an auxiliary LLM to auto-approve low-risk commands, prompt for high-riskoff— skip all prompts (equivalent to--yolo)
list
default:"[]"
Permanently allowed dangerous command patterns (added via the “always” approval option during a session).
Tools / Toolsets
list
default:"[hermes-cli]"
List of toolsets to enable. Use
all to enable everything, or specify individual toolset names.object
Per-platform toolset configuration. Keys:
cli, telegram, discord, whatsapp, slack, signal, homeassistant.Delegation
string
Model for subagents spawned by
delegate_task. Empty inherits the parent’s model.string
Provider for subagents. Empty inherits the parent’s provider.
integer
default:"50"
Maximum tool-calling turns per child agent.
list
default:"[terminal, file, web]"
Default toolsets available to subagents.
Auxiliary models
Hermes uses lightweight auxiliary models for side tasks (vision analysis, web extraction, context compression, session search). Each task has its ownprovider + model pair.
openrouter:google/gemini-3-flash-preview if the configured provider is unavailable.
TTS / STT
string
default:"edge"
Text-to-speech provider:
edge (free, no API key), elevenlabs (premium), openai, or neutts (local).string
default:"local"
Speech-to-text provider:
local (faster-whisper, no API key), groq, or openai.boolean
default:"true"
Enable automatic voice transcription for messaging platforms.
Checkpoints
boolean
default:"true"
Take automatic filesystem snapshots before destructive file operations. Use
/rollback to restore.integer
default:"50"
Maximum number of checkpoints to keep per directory.
Session reset (gateway)
string
default:"both"
When to auto-clear messaging sessions:
both (idle or daily), idle, daily, or none.integer
default:"1440"
Inactivity timeout in minutes before a session is reset. Default is 1440 (24 hours).
integer
default:"4"
Hour of the day (0–23) for the daily reset.
boolean
default:"true"
In group/channel chats, maintain a separate session per user. Set to
false for a single shared context.Security
boolean
default:"true"
Redact API keys, tokens, and passwords from tool output before sending to the LLM.
boolean
default:"false"
When
true, hash user IDs and strip phone numbers from the LLM context. Names and usernames are not affected.Other
string
default:""
IANA timezone string, e.g.
America/New_York or Asia/Kolkata. Empty uses server-local time.string
Path to a JSON file containing ephemeral
{role, content} messages injected at every API call for few-shot priming. Never persisted.object
Hermes-specific overrides for Honcho integration. Most Honcho config lives in
~/.honcho/config.json (shared with Claude Code, Cursor, etc.).object
Custom personality presets. Supports string format (
{"name": "system prompt"}) or dict format with description, system_prompt, tone, and style keys.object
User-defined quick commands that bypass the agent loop entirely (type:
exec only).object
MCP (Model Context Protocol) server connections. See the MCP documentation for full configuration options.