memorysync-hermes
v1.0.1
Published
MemorySync as a native Hermes Agent memory provider — persistent profiles, background turn synchronization, and zero-latency prefetched recall. Zero pip dependencies.
Maintainers
Readme
memorysync-hermes
MemorySync as a native memory provider for Hermes Agent — select it once and Hermes remembers you across every session: persistent profiles, background turn synchronization, and zero-latency prefetched recall.
Pure Python standard library: pip_dependencies: []. Installing this
provider can never disturb the Hermes runtime's environment.
Install
npx -y memorysync-hermes install
hermes memory setup # select "memorysync", paste your API key
hermes memory status # confirm "memorysync" is activeGet a key at app.memorysync.io. The installer
copies the provider into $HERMES_HOME/plugins/memorysync; the setup
wizard writes the key to ~/.hermes/.env (MEMORYSYNC_API_KEY) and
non-secret settings to ~/.hermes/memorysync.json.
What runs when
| Moment | What happens |
| --- | --- |
| System prompt assembly | A short static block announces the active identity and the memory tools. |
| Between turns (queue_prefetch) | Recall for the next turn runs on a background thread. |
| Before each turn (prefetch) | The cached recall injects with zero added latency (hard 2.5s cap if the background call is still in flight — then the turn proceeds memoryless). Hermes shows its deterministic "🧠 recalled N memories" indicator via recall_status. |
| After each turn (sync_turn) | The verbatim exchange queues onto a bounded daemon worker and persists with cross-adapter fnv1a64 idempotency seeds — replays converge on one stored row, and the conversation thread is never blocked. |
| Built-in memory writes | MEMORY.md / USER.md entries mirror to MemorySync (on_memory_write) so nothing lives in only one place. |
| Subagent completion | The parent observes delegated task + result (on_delegation). |
| Session switch / reset | Scoping follows /resume, /branch, /reset and compression correctly (on_session_switch). |
| Cron / subagent / flush contexts | The provider goes fully passive — background system prompts must never corrupt a user's profile. |
| Any failure — no key, network down, monthly quota exhausted | Silent skip. A circuit breaker (5 failures → 2-minute pause) stops repeat pain. Nothing ever raises into Hermes. |
Tools
memorysync-search, memorysync-save (refuses credential-looking text
client-side), memorysync-profile (the durable cross-session profile),
memorysync-forget (single-id only — deliberately no delete-all).
Snake_case aliases remain supported. Failures answer with friendly JSON,
never tracebacks.
Configuration
hermes memory setup walks every field. Manually: secrets in
~/.hermes/.env, the rest in ~/.hermes/memorysync.json:
| Key | Default | Meaning |
| --- | --- | --- |
| MEMORYSYNC_API_KEY (env) | — | Required. |
| user_id | OS username | Memory identity. |
| base_url | https://api.memorysync.io | Self-hosted / regional override. |
| memory_mode | hybrid | hybrid = injection + tools · context = injection only · tools = tools only. |
| top_k | 8 | Memories recalled per turn. |
| prefetch_enabled | true | Background prefetch between turns. |
| api_timeout | 5.0 | Per-request budget in seconds. |
Multi-identity setups scope transcripts per Hermes identity
(hermes::<identity>) while sharing the user's memories with every other
MemorySync surface (Claude Code, Cursor, OpenClaw, OpenCode, …).
Docs
Full guide: docs.memorysync.io/guides/hermes-agent
