Hermes Agent memory provider plugin backed by Cashew thought-graph memory.
Project description
hermes-cashew
A Hermes Agent memory provider plugin that stores conversation context in a local Cashew thought graph. Get from zero to a working install in under five minutes.
Prerequisites
- Hermes Agent installed
cashew-brain— installed automatically byhermes plugins installor manually:~/.hermes/hermes-agent/venv/bin/python3 -m ensurepip # bootstrap pip if missing ~/.hermes/hermes-agent/venv/bin/python3 -m pip install \ "cashew-brain @ git+https://github.com/rajkripal/cashew.git@90d1c73"
Install
hermes plugins install magnus919/hermes-cashew
This clones the repository to ~/.hermes/plugins/cashew/ and registers the
plugin entry point. After install, restart the gateway:
hermes gateway restart
Register with Hermes
After installing, set cashew as the active memory provider:
hermes config set memory.provider cashew
hermes gateway restart
Note:
hermes memory setupshows a hardcoded list of providers and does not yet include cashew in the interactive picker. Usehermes config setto activate it directly.
Configure
Create ~/.hermes/cashew.json with your settings:
cat > ~/.hermes/cashew.json << 'EOF'
{
"cashew_db_path": "cashew/brain.db",
"embedding_model": "sentence-transformers/all-MiniLM-L6-v2",
"recall_k": 5,
"sync_queue_timeout": 30
}
EOF
| Key | Default | Description |
|---|---|---|
cashew_db_path |
cashew/brain.db |
Path to the SQLite DB, relative to hermes_home |
embedding_model |
sentence-transformers/all-MiniLM-L6-v2 |
Embedding model for retrieval |
recall_k |
5 |
Maximum nodes returned per recall query |
sync_queue_timeout |
30 |
Seconds to wait for the sync worker to drain on shutdown |
Verify the Install
hermes gateway restart # ensure gateway picks up the new plugin
hermes memory status
Expected output shows Provider: cashew with Plugin: installed and Status: available.
How It Works
hermes-cashew provides two LLM-accessible tools:
cashew_query— searches the local thought graph for context relevant to the current conversation. The agent calls this automatically duringprefetch().cashew_extract— explicitly persists a conversation turn into the graph. The agent can call this when it judges a turn contains worth-remembering knowledge.
Both tools are registered automatically when Hermes loads the plugin.
Uninstall
hermes plugins remove cashew
hermes config set memory.provider built-in # revert to built-in memory
rm -rf ~/.hermes/cashew # optional: remove the local graph data
Troubleshooting
Plugin: NOT installed in hermes memory status
This has two common causes:
-
cashew-brainnot installed in Hermes venv —hermes plugins installdoes not automatically install Python package dependencies into Hermes's venv. Install it manually:~/.hermes/hermes-agent/venv/bin/python3 -m ensurepip ~/.hermes/hermes-agent/venv/bin/python3 -m pip install \ "cashew-brain @ git+https://github.com/rajkripal/cashew.git@90d1c73"
-
Stale pycache or entry point not registered — If
cashew-brainis installed but the plugin still shows NOT installed, the entry point may not be registered:cd ~/.hermes/plugins/cashew && \ ~/.hermes/hermes-agent/venv/bin/python3 -m pip install -e . hermes gateway restart
Plugin: installed but Status: not available
Ensure ~/.hermes/cashew.json exists. The plugin's is_available() checks for this
file's presence. Create it with the default config shown above.
Hermes-agent venv has no pip
Hermes-agent creates a minimal venv without pip. Bootstrap it first:
~/.hermes/hermes-agent/venv/bin/python3 -m ensurepip
~/.hermes/hermes-agent/venv/bin/python3 -m pip install <package>
Do not run pip install from outside the venv targeting the hermes python,
or the package will land in the wrong environment.
Embedding model download on first use
cashew-brain bundles sentence-transformers. The first retrieval operation may
trigger a ~500 MB embedding model download. To avoid this in automated environments:
HF_HUB_OFFLINE=1 TRANSFORMERS_OFFLINE=1 HF_DATASETS_OFFLINE=1 hermes ...
Development
# Clone the repo first
git clone https://github.com/magnus919/hermes-cashew
cd hermes-cashew
pip install -e ".[dev]" # macOS
python3 -m pip install -e ".[dev]" # Linux
pytest # run the test suite
Tests require no network access and mock the embedding model automatically
(HF_HUB_OFFLINE=1 is set by tests/conftest.py).
Architecture Notes
The plugin uses a dual-path loading strategy to support both pip install -e .
(development) and hermes plugins install (flat-entry loader):
- pip / test path: Python's namespace package mechanism resolves
plugins.memory.cashewtoplugins/memory/cashew/__init__.pyviasys.path - flat-entry path: Hermes loads
~/.hermes/plugins/cashew/__init__.pyas_hermes_user_memory.cashew. The root__init__.pydetects this context and exec's the nested implementation withsys.modulespatched so relative imports resolve correctly
License
See LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file hermes_cashew-0.1.4.tar.gz.
File metadata
- Download URL: hermes_cashew-0.1.4.tar.gz
- Upload date:
- Size: 54.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1df1099f7f39d0801e392cd32d3d47ccd201aba9522ab6e8d22f60e8f912e261
|
|
| MD5 |
a73c455e151226b2ffc14f22c083d767
|
|
| BLAKE2b-256 |
885d5ccbfc263842e5239a6d04d6f16ef477fa4676ef43257867adfc4123faaa
|
Provenance
The following attestation bundles were made for hermes_cashew-0.1.4.tar.gz:
Publisher:
release.yml on magnus919/hermes-cashew
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
hermes_cashew-0.1.4.tar.gz -
Subject digest:
1df1099f7f39d0801e392cd32d3d47ccd201aba9522ab6e8d22f60e8f912e261 - Sigstore transparency entry: 1351827055
- Sigstore integration time:
-
Permalink:
magnus919/hermes-cashew@a5f30050f0841675d40c48b175b390c75e1c3409 -
Branch / Tag:
refs/tags/v0.1.4 - Owner: https://github.com/magnus919
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@a5f30050f0841675d40c48b175b390c75e1c3409 -
Trigger Event:
push
-
Statement type:
File details
Details for the file hermes_cashew-0.1.4-py3-none-any.whl.
File metadata
- Download URL: hermes_cashew-0.1.4-py3-none-any.whl
- Upload date:
- Size: 28.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a204b25e55bca3da8e1b548e4e4fadf663ddd3d09499613787ce21087501fb22
|
|
| MD5 |
2064cc3b926b326c6495c0c49e230910
|
|
| BLAKE2b-256 |
915632c77437c8ac7615ac9f0a643c65446722fa577c4a2a0d29364d15538c54
|
Provenance
The following attestation bundles were made for hermes_cashew-0.1.4-py3-none-any.whl:
Publisher:
release.yml on magnus919/hermes-cashew
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
hermes_cashew-0.1.4-py3-none-any.whl -
Subject digest:
a204b25e55bca3da8e1b548e4e4fadf663ddd3d09499613787ce21087501fb22 - Sigstore transparency entry: 1351827119
- Sigstore integration time:
-
Permalink:
magnus919/hermes-cashew@a5f30050f0841675d40c48b175b390c75e1c3409 -
Branch / Tag:
refs/tags/v0.1.4 - Owner: https://github.com/magnus919
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@a5f30050f0841675d40c48b175b390c75e1c3409 -
Trigger Event:
push
-
Statement type: