-
Notifications
You must be signed in to change notification settings - Fork 2
deployment
hermes-cashew supports multiple deployment methods depending on the use case.
The standard installation method clones the repository to the Hermes plugins directory:
hermes plugins install magnus919/hermes-cashewThis clones the repository to $HERMES_HOME/plugins/cashew/. The flat-entry loader in the root __init__.py bridges the directory layout to the nested plugins/memory/cashew/ implementation module.
After install, set cashew as the active memory provider and restart the gateway:
hermes config set memory.provider cashew
hermes gateway restarthermes memory statusExpected output shows Provider: cashew with Plugin: installed and Status: available.
If the plugin shows NOT installed, cashew-brain may not be installed in the Hermes venv:
~/.hermes/hermes-agent/venv/bin/python3 -m pip install cashew-brainIf the plugin shows Status: not available, verify dependencies are importable:
~/.hermes/hermes-agent/venv/bin/python3 -c "from core.context import ContextRetriever; print('ok')"The package is published to PyPI as hermes-cashew:
pip install hermes-cashewThis installs the wheel with the PEP 420 namespace layout (plugins/memory/cashew/). When installed via PyPI, the Hermes entry-point loader discovers the plugin via the hermes_agent.plugins entry point declared in pyproject.toml:
[project.entry-points."hermes_agent.plugins"]
cashew = "plugins.memory.cashew"
For local development:
git clone https://github.com/magnus919/hermes-cashew
cd hermes-cashew
pip install -e ".[dev]"When developing with a local Hermes Agent install, a symlink is also needed because Hermes inserts ~/.hermes/hermes-agent/ at the front of sys.path:
~/.hermes/hermes-agent/venv/bin/python3 -m pip install -e ".[dev]"
ln -sf "$PWD/plugins/memory/cashew" ~/.hermes/hermes-agent/plugins/memory/cashewReleases are triggered by pushing a v* tag to the repository:
# After PR is merged to main
git checkout main && git pull
# Update version in pyproject.toml and CHANGELOG.md
git commit -s -m "chore: bump to vX.Y.Z"
git tag vX.Y.Z && git push origin main --tags
# Create GitHub Release with notes:
gh release create vX.Y.Z --title "vX.Y.Z -- Title" --notes "..."The release workflow (.github/workflows/release.yml):
- Validates the tag matches
pyproject.tomlversion - Runs tests
- Syncs both
plugin.yamlfiles to matchpyproject.tomlversion - Builds wheel and sdist
- Publishes to PyPI via OIDC trusted publishing (no API token needed)
Three files must have matching versions:
| File | Role | Who Bumps |
|---|---|---|
pyproject.toml |
PyPI package version | You (release commit) |
plugin.yaml (root) |
hermes plugins install manifest |
CI auto-syncs |
plugins/memory/cashew/plugin.yaml |
Bundled-loader manifest | CI auto-syncs |
The CI workflow reads the version from pyproject.toml and patches both plugin.yaml files with sed before building.
hermes plugins remove cashew
hermes config set memory.provider built-in
rm -rf ~/.hermes/cashew # optional: remove the local graph data