Hermes
A memory provider for Hermes agents that recalls before each turn, captures after it, and adds a read-only search tool.
The Hermes integration is a memory provider. It reuses the m3m0s binary, so the relevance gates and the secret redaction behave exactly as they do for other tools.
- Recall (
prefetch): runsm3m0s hook claude-code --injectwith the user message. Hermes wraps the result in its own<memory-context>fence. - Capture (
sync_turnasStop,on_session_endasSessionEnd): appends each turn to a per-session transcript and hands it tom3m0s hook claude-code. Memories carrysource: "hermes", filed underM3M0S_HOOK_DOMAIN(defaultpersonal:hermes). - Tool
m3m0s_search(read-only):query,limit,domain, orrecentto list the newest memories of a domain.
Cron and webhook turns are skipped. Failures are silent and never block the agent.
Install
Hermes allows one external memory provider.
With the Hermes CLI
The binary must be on PATH, or at <plugin dir>/bin/m3m0s:
hermes plugins install rafaelvieiras/m3m0s/integrations/hermes/m3m0s-memory
hermes memory setup # pick m3m0s-memory
Manual install
The steps below assume the agent runs in a container with a data volume mounted at <data>.
- Build a static binary for the agent’s platform:
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o m3m0s ./cmd/m3m0s
- Copy the plugin and the binary into the data volume, owned by the agent user:
cp -r integrations/hermes/m3m0s-memory <data>/plugins/m3m0s-memory
install -m 755 m3m0s <data>/plugins/m3m0s-memory/bin/m3m0s
- Add the credentials to
<data>/.env:
M3M0S_URL=https://memory.example.com
M3M0S_API_KEY=<your API key>
M3M0S_HOOK_DOMAIN=personal:hermes # optional
- Select the provider in
<data>/config.yamland restart the agent:
memory:
provider: m3m0s-memory
hermes memory status should show it as active. State (checkpoints, spool, transcripts) lives in <data>/m3m0s/.