Skip to content

Where Hermes stores skills, SOUL.md, memories, and context files

Hermes (Nous Research’s self-improving agent) keeps everything under one home directory — ~/.hermes by default ($HERMES_HOME) — and borrows its per-project context files from other tools’ conventions rather than defining its own dotfolder in your repos. ~ is your home directory.

ArtifactGlobalPer-projectFormat
Skills~/.hermes/skills/<category>/<skill>/SKILL.md + category-level DESCRIPTION.md— (external dirs via config.yaml)Markdown + YAML frontmatter
Persona~/.hermes/SOUL.mdMarkdown
Memories~/.hermes/memories/MEMORY.md, USER.mdMarkdown
Context filesfirst match of .hermes.md/HERMES.mdAGENTS.mdCLAUDE.md.cursorrulesMarkdown
Session history~/.hermes/state.dbSQLite (FTS-searchable)
Config~/.hermes/config.yamlYAML

~/.hermes/skills/ is the source of truth — the built-in skill library is copied there on install, and when Hermes creates or improves a skill (it does this autonomously after complex tasks), it writes there too. SKILL.md frontmatter takes name, a deliberately short description, and optional version, platforms, and metadata.hermes.* fields; the format is compatible with the open Agent Skills standard, so skills written for Claude Code or Cursor generally work. Extra skill directories (a team share, ~/.agents/skills) plug in via skills.external_dirs in ~/.hermes/config.yaml.

~/.hermes/SOUL.md is the persona file — global personality and tone, loaded into every session regardless of project. It is never read from the working directory, which makes it the one rules-like file on this page that can’t be committed to a repo.

Hermes’s curated memory is two small Markdown files under ~/.hermes/memories/: MEMORY.md (the agent’s notes — environment, project conventions, lessons learned) and USER.md (your profile and preferences). Both are hard-capped in size (roughly 800 and 500 tokens) and injected into the system prompt at session start; when a write would exceed the cap, the memory tool errors rather than silently dropping entries. Unbounded recall lives in ~/.hermes/state.db, a SQLite store of past sessions with full-text search.

Hermes defines no .hermes/ folder inside your repos. Instead it checks the working directory for the first match of .hermes.md/HERMES.md, AGENTS.md, CLAUDE.md, or .cursorrules — only one is loaded — and repeats the same lookup up through parent directories as it touches files. It also reads .cursor/rules/*.mdc modules. One well-maintained AGENTS.md therefore serves Hermes, Codex, Cursor, and Claude Code at once.

Quartermaster’s scanner walks every location on this page — including the nested skill categories and their DESCRIPTION.md files — and indexes the artifacts into one searchable registry alongside Claude Code, Cursor, Codex, and 8 more tools. SQLite memory stores like state.db are skipped by design (the curated Markdown is the source), and it can convert skills between Hermes and the flat-layout tools. Secrets are never indexed — env/header key names kept, values dropped. See the full discovery map or the quickstart.