Feature
Persistent Memory — The Feature That Makes Hermes Different
Quick answer
Hermes persistent memory keeps concise durable facts in ~/.hermes/memories/MEMORY.md and stable user preferences in USER.md. The separate SQLite session store preserves full conversations, compression lineage, resume history, and FTS5 session search. Optional providers such as Honcho, OpenViking, Mem0, or Hindsight run alongside built-in memory rather than replacing it.
Key Points
- ✓Stores durable facts in MEMORY.md and USER.md
- ✓Learns your preferences
- ✓FTS5 search across sessions
- ✓Keeps full conversation history in the SQLite session store
- ✓Dashboard visibility helps confirm which profile and memory state an agent is actually using before diagnosing “Hermes forgot” as a model or memory failure.
- ✓Dashboard profile verification: confirm the selected profile and memory backend in Web UI before diagnosing a restart or new-session memory failure.
- ✓Automatic session resets rotate the active session ID but do not delete already-persisted messages from the SQLite history.
How It Works
- 1First interaction: Hermes builds your profile
- 2Subsequent sessions: Context restored
- 3New sessions: Built-in memory snapshot restored
- 4Search: FTS5 finds actual messages in session history
Real-World Use Cases
Project Context Retention
Tell Hermes your stack, conventions, and team norms once. It stores them in MEMORY.md and restores that context every session — no more repeating 'we use TypeScript, tabs, and Google-style docstrings' every time.
Preference Learning
Hermes notes that you prefer concise bullet points, dislike emoji-heavy responses, or always want code examples included. These preferences persist and shape every future response automatically.
Cross-Session Task Continuity
Pick up mid-task days later by resuming the named session or using FTS5 session search. Promote only reusable lessons from that history into durable memory.
Team Environment Documentation
Store non-secret team conventions and stable preferences in profile-scoped memory. Keep credentials in .env or a secret manager, and use separate profiles when teams or bots need isolation.
Session Recovery Without Memory Bloat
Use `hermes sessions stats` and FTS5 session search to recover historical task details. Keep MEMORY.md for compact reusable facts instead of copying entire transcripts into every prompt.
Under the Hood
Hermes separates active context, durable memory, and session history. The active conversation is managed by context compression; `/compress` reduces the current context but does not delete stored sessions. Built-in durable memory lives in ~/.hermes/memories/: MEMORY.md holds concise environment facts and reusable lessons, while USER.md holds stable user preferences. Hermes injects a frozen snapshot at session start so changes appear reliably in a new session without breaking prompt caching.
Full conversations live in the SQLite session store under ~/.hermes/state.db, including messages, tool calls, titles, token counters, and compression lineage. The built-in `session_search` tool uses SQLite FTS5 to return actual historical messages. That makes session history the right place for temporary task progress; durable memory should stay small and reusable.
External memory providers are optional. `hermes memory setup` can enable one provider such as Honcho, OpenViking, Mem0, Hindsight, Holographic, RetainDB, ByteRover, or Supermemory. The provider adds semantic search, knowledge graphs, extraction, or user modeling alongside MEMORY.md and USER.md; it does not replace built-in memory. Memory is profile-scoped, and secrets should remain in .env or an approved secret store rather than MEMORY.md or USER.md.
Frequently asked questions
Why does Hermes Agent not remember something I told it?
Check whether memory is enabled, whether the fact is durable enough to be saved, whether you are in the same profile, and whether the current session is too long and needs /compress. Also inspect provider or auxiliary-model failures, because memory and context maintenance can fail even when normal chat still works.