Hermes Agent Memory: Built-in Notes, Plugins, and Reliable Recall

A compact memory stack connected to an agent workspace and a larger external knowledge archive

Learn how Hermes Agent stores useful facts, retrieves past work, and connects memory plugins. Compare nine options and test recall across fresh sessions.

Hermes Agent can carry preferences and working knowledge between conversations. The useful question is where each kind of information belongs, and how to check that it was actually saved.

This guide was checked against public documentation on October 29, 2026, with the Hermes repository at commit 780d5a3. Commands below are documented setup examples; this is not a hands-on benchmark of the services.

1. Separate the five kinds of memory

LayerWhat belongs here?
Current conversationThe task you are working through now
MEMORY.md and USER.mdShort, durable facts and user preferences
Session historyEarlier messages that can be searched when needed
Context files and SkillsProject rules and reusable procedures
External memory providerA larger store with provider-specific retrieval

The built-in files live under the active Hermes home’s memories/ directory. Default limits are 2,200 characters for MEMORY.md and 1,375 for USER.md. They enter the system prompt as a snapshot at session start. A successful write persists immediately, while that prompt snapshot stays unchanged until a new session. A write that exceeds capacity fails; the agent must shorten or remove entries. Persistent memory documentation

Official Hermes table separating agent notes from user preferences and listing their character limits

Captured public Hermes documentation: the two core stores and their default limits. (Source: Hermes, captured 2026-10-29. Open the image to enlarge.)

Past conversations are stored in SQLite, normally ~/.hermes/state.db, with FTS5 text search. session_search retrieves history on demand. /compress reduces active context; /new starts a fresh conversation. Neither operation is a request to erase stored history. Session documentation

2. Keep durable facts small and procedures reusable

For example, save “Use concise Korean answers and show the decision first” as a user preference. Keep a monthly report’s full source data in its source document, and turn its repeatable preparation steps into a Skill. Hermes loads Skills when relevant; project instructions belong in the supported context files. Skills documentation, Context files

A useful memory entry has a clear subject, an actionable fact, and enough context to avoid applying it everywhere. “Project Atlas uses the staging endpoint” is more useful than “use staging.” Add a date when the fact can expire.

If automatic writes produce assumptions you would rather review, the built-in gate can help:

memory:
  memory_enabled: true
  user_profile_enabled: true
  memory_char_limit: 2200
  user_char_limit: 1375
  write_approval: true

Merge this into the active profile’s existing configuration. With approval enabled, interactive foreground writes ask for approval; other writes can wait in /memory pending. Review them with /memory approve <id> or /memory reject <id>. This gate concerns built-in memory writes; check each external plugin’s capture settings separately. Memory write controls

3. What an external plugin adds

Hermes selects one external memory provider at a time, normally alongside its built-in stores. Providers can supply recalled context and memory tools. The integration supports lifecycle callbacks for turns, session boundaries, pre-compression extraction, and built-in writes; the plugin decides which to implement. An arbitrary search tool does not automatically gain those lifecycle behaviors. Provider guide, Provider developer contract

Official Hermes quick-start commands for configuring, inspecting, and disabling an external memory provider

Captured public Hermes documentation: setup, status, and off manage the external provider. (Source: Hermes, captured 2026-10-29.)

The documentation is in transition. Honcho, OpenViking, Mem0, Hindsight, Holographic, and Supermemory have catalog installation commands. RetainDB and ByteRover are still described as bundled in the introduction, while the migration section says they leave core on October 15, 2026 and need maintainers. Check your installed version and current catalog rather than relying on a fixed plugin count. Memori has a separate external installation contract. Current installation and migration notes

4. Nine providers worth understanding

The following describes design differences, not a ranking of measured recall quality. Official links lead to the product or its maintained project.

ProviderFocus and deployment
HonchoUser modeling and reasoned cross-session context; cloud or self-hosted
Mem0Fact extraction and semantic recall; cloud, self-hosted HTTP server, or in-process OSS
HindsightEntity-aware memory and retain/recall/reflect operations; cloud or local configurations
OpenVikingFilesystem-style context hierarchy and tiered retrieval; self-hosted server
SupermemoryProfile and semantic recall, with session capture; cloud or self-hosted
HolographicLocal SQLite facts, trust feedback, and compositional retrieval
RetainDBManaged agent memory with hybrid retrieval; verify Hermes plugin maintenance
ByteRoverCLI-based project knowledge with optional cloud sharing; verify Hermes plugin maintenance
MemoriTool-aware, structured cloud memory through the external hermes-memori integration

Mem0’s three modes differ operationally: its OSS mode still needs an extraction model, an embedder, and storage. A local database alone does not make those model calls local. Mem0’s Hermes integration

Holographic is useful to investigate when you want inspectable local facts. Its current README defaults auto_extract and mirror_memory_writes to false; installing it does not mean every conversation will be extracted automatically. Maintainer’s settings

For structured resources, inspect OpenViking’s architecture. For session ingestion and configurable memory containers, see Supermemory’s Hermes plugin. Select a candidate by the work you need it to perform, then test that work with your own material.

5. Configure one provider in one profile

Profiles have separate Hermes homes, configurations, memories, and sessions. Give independent agents their own profiles instead of sharing a writable home. Remote storage also needs the correct bank, workspace, user, or container identifiers; a local profile name alone is not proof of cloud isolation. Profile documentation

For an existing profile named work, a documented Hindsight setup looks like this:

hermes --version
hermes profile list
hermes -p work plugins install hindsight
hermes -p work memory setup
hermes -p work memory status
hermes -p work plugins list

Choose Hindsight and its deployment mode in the wizard. Configure the required service credentials there. Restart the running Hermes process when dependency or configuration changes require it, then start a fresh chat. The active provider is selected by memory.provider; installation and a generic plugin enable action are not sufficient evidence that it is active. Hindsight setup instructions

For another provider, use its actual catalog identifier and upstream instructions. OpenViking needs a running server; ByteRover needs its CLI. Memori requires its publisher’s external integration, with dependencies admitted through Hermes’ supported installation path. Do not substitute a guessed catalog command. Provider-specific prerequisites

hermes -p work memory off switches off the external provider. Treat deletion as a separate operation and verify it in each store that retained the information.

6. Verify recall across a real session boundary

Use a harmless, invented fact so the expected answer is unambiguous. This is a proposed acceptance test, not a reported benchmark:

  1. In session A, ask Hermes to store “Demo project Cedar uses release channel amber” through the provider’s explicit storage tool. Inspect the tool result and stored record.
  2. End the session and wait for any asynchronous ingestion to finish. Start session B in the same profile without resuming A.
  3. Ask “Which release channel does Cedar use?” without including the answer. Inspect the retrieved evidence as well as the response.
  4. Change the channel to violet. In another fresh session, check that the current decision wins and the earlier value is identifiable as superseded.
  5. Ask the same question in a separate test profile with a separate remote namespace. It should not retrieve Cedar.
  6. Delete the test record using the provider’s documented method and verify deletion. Check built-in notes and retained transcripts separately.

Test an unrelated question too. Excessive irrelevant recall can be just as disruptive as a missing fact. Record answer correctness, retrieved sources, time to first useful response, and cost across several runs.

7. Control retrieval size and operating cost

External memory creates a retrieval budget as well as a storage budget. Hindsight exposes recall_budget and recall_max_tokens; its documentation also distinguishes raw recall from LLM-based reflection. These are useful controls when a small question retrieves a large block of context. Hindsight recall configuration

Hindsight's official settings table showing recall budget, recall versus reflect, token limit, and query size

Captured public Hindsight integration documentation, cropped to the recall-budget settings. (Source: Hindsight, captured 2026-10-29. Open the image to enlarge.)

My starting recommendation is a modest recall budget and a small set of representative questions. Increase it only when inspecting missed evidence shows that the limit is the problem. More retrieved text does not establish that the answer is better.

When comparing costs, account for the memory service, extraction and embedding calls, any reflection model, added chat input, and hosting. Check current official pricing rather than treating an open-source license as a zero-cost deployment. For Mem0, the memory models are configured separately from Hermes’ main chat model. Mem0 deployment configuration

8. Diagnose missing or incorrect memories

SymptomFirst check
“Saved” but nothing persistsActual tool result and stored entry, not the assistant’s wording
CLI remembers, messaging does notActive profile and remote namespace
Old preference still appearsExisting prompt snapshot, then stale copies in other stores
Installed plugin has no recallActive provider, credentials, service availability, capture settings
Incorrect assumption keeps returningCorrect the source record and inspect competing copies

Use the fresh-session test to narrow the failure to writing, ingestion, retrieval, or answer generation. For built-in notes, inspect the active home’s memories/MEMORY.md and memories/USER.md, and check pending approvals. Official troubleshooting

9. Back up the stores you actually use

A sensible recovery plan includes the active profile’s notes, Skills, configuration, session database, and any local provider store, plus an independent export or backup of remote memory. Use the database’s supported backup method, or stop writers before a filesystem copy. Keep credentials protected and out of source control. Test restoration into an isolated environment before trusting the backup.

Also define what “forget this” means in your workflow: stop future recall, delete one provider record, remove a built-in note, delete conversation history, or expire backups. These are different recovery and retention decisions. Session compression is specifically not a privacy deletion. Session storage behavior

10. When to extend beyond memory plugins

A context engine changes how active conversation context is compressed. A memory provider manages knowledge across sessions. Hermes has separate plugin interfaces for the two, so check which problem an extension actually addresses. Context engine documentation

If your organization needs a custom backend, Hermes exposes the MemoryProvider interface. Implement only the lifecycle behaviors you need, with clear namespace rules, bounded recall, and a deletion path. Build a memory provider

For a personal assistant, I would start with concise built-in notes, searchable history, and reusable Skills. Add one external provider when a concrete recall test exposes a gap. For the surrounding setup, see Hermes CLI profiles and workflows.