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.
Metadata
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 | Provenance | Actions |
|---|---|---|---|---|
| harness_memory_hermes-0.3.0.tar.gz | 13.4 kB | Without provenance | Details for harness_memory_hermes-0.3.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| harness_memory_hermes-0.3.0-py3-none-any.whl | Python 3 | none | any | Details for harness_memory_hermes-0.3.0-py3-none-any.whl |
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
|
Security for harness-memory-hermes 0.3.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.