Skip to main content

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.md
  • USER.md
  • allowlisted topical Markdown such as topics/*.md and projects/*.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_search
  • memory_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-in MEMORY.md / USER.md writes.
  • on_pre_compress(messages) captures context before compression.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

harness_memory_hermes-0.3.0.tar.gz (13.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

harness_memory_hermes-0.3.0-py3-none-any.whl (18.1 kB view details)

Uploaded Python 3

File details

Details for the file harness_memory_hermes-0.3.0.tar.gz.

File metadata

  • Download URL: harness_memory_hermes-0.3.0.tar.gz
  • Upload date:
  • Size: 13.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for harness_memory_hermes-0.3.0.tar.gz
Algorithm Hash digest
SHA256 9347998d0fa52d03b1f59e20a654e032a80d2b9c44dc158fd684fa4cbf6b8ff7
MD5 76d16eaa2e046c65a68f49f2a8745df5
BLAKE2b-256 ae8507a40e846554e449d3dab7a5780f0f116076ffa46a9fae42dd4427118323

See more details on using hashes here.

File details

Details for the file harness_memory_hermes-0.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for harness_memory_hermes-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ff79cdbedb7e76c54b586ff0e59ba53465a92076b06cf109a54dd1e8e67e8975
MD5 c24ccb961c32513367c4976d0277d1d9
BLAKE2b-256 6c6def50bb4c9149dd65896d3de24c9ef0005a319296b6d928c759e18c840ec0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page