HarnessMemory for Hermes
Hermes MemoryProvider plugin backed by harness-memory.
For the full server-side OpenClaw + Hermes usage guide, see:
docs/harnessmemory-openclaw-hermes-usage.md
Install
From PyPI — pip install harness-memory-hermes pulls in harness-memory as a normal
dependency, so this one command is enough:
pip install harness-memory-hermes
harness-memory-hermes install \
--hermes-home ~/.hermes \
--hermes-source ~/.hermes/hermes-agent \
--force
harness-memory-hermes doctor \
--hermes-home ~/.hermes \
--hermes-source ~/.hermes/hermes-agent
From a monorepo source checkout, install this plugin package (editable) instead of PyPI:
python3 -m venv ~/.venv/harnessmemory
~/.venv/harnessmemory/bin/pip install -e ~/harness-memory/plugins/hermes
~/.venv/harnessmemory/bin/harness-memory-hermes install \
--hermes-home ~/.hermes \
--hermes-source ~/.hermes/hermes-agent \
--source-dir ~/harness-memory/plugins/hermes/harnessmemory \
--force
~/.venv/harnessmemory/bin/harness-memory-hermes doctor \
--hermes-home ~/.hermes \
--hermes-source ~/.hermes/hermes-agent
--source-dir only matters if you want to install from a specific checkout path rather than
wherever pip put this package; it defaults to this package's own installed location.
The installer copies this provider to:
< HERMES_SOURCE >/plugins/memory/harnessmemory/
and activates it by setting:
memory:
provider: harnessmemory
Manual install shape
If you do not use harness-memory-hermes install (e.g. Hermes' own native plugins install <git-url> flow), copy this directory into Hermes' memory plugin directory as:
< HERMES_SOURCE >/plugins/memory/harnessmemory/
Then activate:
hermes config set memory.provider harnessmemory
or edit ~/.hermes/config.yaml so memory.provider is harnessmemory.
Hermes' Python environment must also be able to import harness_memory. For source deployments, either install the project into Hermes' venv or add the source src/ directory through a .pth file.
Data path and config
By default the provider stores data under the active Hermes profile:
$HERMES_HOME/harnessmemory/memory.sqlite
$HERMES_HOME/harnessmemory.json
Do not hard-code ~/.hermes; Hermes profiles rely on hermes_home isolation.
Host Markdown indexing is separate from HarnessMemory's own SQLite store. By default the provider watches $HERMES_HOME/memories for Hermes built-in memory files:
MEMORY.mdUSER.md- allowlisted topical Markdown such as
topics/*.mdandprojects/*.md
It does not scan $HERMES_HOME/state.db, sessions/, logs/, or arbitrary **/*.md.
harnessmemory.json supports the fields exposed through hermes memory setup:
{
"profile": "balanced",
"namespace": "hermes__default",
"db_path": "$HERMES_HOME/harnessmemory/memory.sqlite",
"recall": {
"default_max_results": 5,
"default_corpus": "all",
"raw_policy": "fallback",
"layer_order": ["atom", "page", "raw"]
},
"capture": {
"include_roles": ["user", "assistant"],
"min_message_chars": 0,
"include_tool_calls": false,
"include_tool_results": false,
"skip_memory_echo": true,
"host_files_watcher": true
},
"host_files_root": "$HERMES_HOME/memories",
"host_files_allow": ["topics/*.md", "projects/*.md"],
"privacy": {
"redact_secrets": true,
"redact_patterns": [],
"store_raw_content": true,
"store_tool_payloads": false
}
}
capture and privacy apply to sync_turn(), on_memory_write(), and on_pre_compress() writes. recall applies to memory_search.
Exposed model tools
memory_searchmemory_get
Provider CLI
When memory.provider=harnessmemory, Hermes exposes:
hermes harnessmemory status
hermes harnessmemory search "query" -n 5 --corpus all
hermes harnessmemory show raw/2026-06-04/evt_xxx.md --lines 40
These commands use the same memory_search / memory_get contract exposed to the model.
Lifecycle
prefetch(query)recalls context before a model call.sync_turn(user, assistant)writes L0 raw events in a background thread.on_memory_write(action, target, content)mirrors built-inMEMORY.md/USER.mdwrites.on_pre_compress(messages)captures context before compression.
Release files for harness-memory-hermes 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| harness_memory_hermes-0.3.0.tar.gz | 13.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| harness_memory_hermes-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 31.5 kB
Release files / harness_memory_hermes-0.3.0.tar.gz
| Download URL | harness_memory_hermes-0.3.0.tar.gz |
|---|---|
| Size | 13.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9347998d0fa52d03b1f59e20a654e032a80d2b9c44dc158fd684fa4cbf6b8ff7
|
|
BLAKE2b-256 checksum How to use checksums |
ae8507a40e846554e449d3dab7a5780f0f116076ffa46a9fae42dd4427118323
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|
Release files / harness_memory_hermes-0.3.0-py3-none-any.whl
| Download URL | harness_memory_hermes-0.3.0-py3-none-any.whl |
|---|---|
| Size | 18.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ff79cdbedb7e76c54b586ff0e59ba53465a92076b06cf109a54dd1e8e67e8975
|
|
BLAKE2b-256 checksum How to use checksums |
6c6def50bb4c9149dd65896d3de24c9ef0005a319296b6d928c759e18c840ec0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|