Skip to content

Configuration overview

Hermes splits configuration across two files in ~/.hermes/:

  • config.yaml: everything non-secret (model, toolsets, approvals, memory, cron settings).
  • .env: secrets only (API keys, bot tokens, passwords).

Rule of thumb from the official docs: secrets go in .env, everything else in config.yaml. When both set the same non-secret value, config.yaml wins.

Core model section

yaml
model:
  default: "qwen3.5-64k"
  provider: "custom"
  base_url: "http://localhost:11434/v1"
  context_length: 65536

Change provider or model with the interactive wizard:

bash
hermes model

Key config areas

SectionControls
modelWhich LLM Hermes talks to
agentToolset enable/disable, retries, agent behavior
terminalCommand backend (local, docker, ssh, etc.)
approvalsDangerous-command approval mode
memoryMemory system behavior
skillsSkill creation and loading
cronScheduled-job settings (jobs themselves live in ~/.hermes/cron/)
delegationSubagent model/provider overrides
auxiliaryVision/TTS/compression sub-tasks (optional)

Environment variables

Useful overrides (put secrets in ~/.hermes/.env, not your shell profile):

bash
export HERMES_HOME=~/.hermes              # config/state directory
export OLLAMA_CONTEXT_LENGTH=65536        # Ollama-side context
export OLLAMA_KEEP_ALIVE=-1               # keep model loaded
export HERMES_STREAM_READ_TIMEOUT=1800    # only if a slow local model still times out

Local timeouts are handled automatically

Hermes auto-detects local endpoints and relaxes streaming timeouts (read timeout raised to 1800s, stale-stream detection disabled). You usually do not need to set anything. For a per-provider limit, use providers.<name>.request_timeout_seconds in config.yaml.

Profiles

Hermes supports profiles for different contexts (work vs. personal):

bash
hermes --profile work        # or -p work
hermes profile create work   # create a new isolated profile
hermes profile list          # see all profiles
hermes profile use work      # set a sticky default
hermes profile alias work    # generate a `hermes-work` wrapper command

Each profile gets its own config, memory, sessions, and skills under ~/.hermes/profiles/.

Inspecting current config

bash
hermes config show
hermes config set OPENROUTER_API_KEY sk-or-...   # write a secret to .env
hermes model

Minimal offline config

This is enough to get started:

yaml
model:
  default: "qwen3.5-64k"
  provider: "custom"
  base_url: "http://localhost:11434/v1"
  context_length: 65536

approvals:
  mode: manual   # prompt before running dangerous shell commands

Add toolsets, memory, and gateway settings as you grow into them.

Next: SOUL.md & personality.

Personal learning notes on Hermes Agent. Not affiliated with Nous Research. Verify against official docs.