claude-mem Shipped Three Releases in Seven Hours, All About Not Being in the Way
A memory plugin with 96,000 stars spent the weekend fixing the one thing memory plugins get wrong: making the agent slower. claude-mem, the Apache-2.0 tool that captures what a coding agent does in a session, compresses it and injects it into later ones, is back on GitHub Trending with 534 stars in a day after three releases between Sunday night and Monday morning UTC.
v13.30.0 changes how hooks work. They used to wait on a background worker in the middle of a session. Now each hook writes its event to a spool file on disk and returns immediately, and the worker picks the files up moments later. The observer that writes memories got cheaper as well: a user prompt no longer triggers a model call of its own, and the observer's prompts now begin with the same fixed instructions so provider prompt caches can reuse them.
v13.30.1 is a small fix with a good lesson in it. Resuming a Claude Code conversation used to inject a freshly rendered memory timeline. That changed the conversation's prompt prefix, which broke prompt-cache reuse, so a helpful feature was quietly making every resumed session more expensive. Resume now injects nothing.
v13.31.0 goes after session start. On a 1.2 GB database the SessionStart hook took about 3 seconds and up to 44 at worst, because it loaded roughly 21,700 rows (63 MB) just to keep the newest 50. New indexes get the same result in about 4 ms, and nothing at startup waits on the network anymore.
Put together, the three releases read like a spec for what a memory layer owes its host: never block the agent loop, never disturb the cache prefix, never scale startup cost with history size. The release from two days earlier added something more ambitious, a work-state to-do list the agent keeps inside claude-mem, since Claude Code gives Claude 5 models no native to-do tool. It supports Claude Code, Codex, Gemini, OpenClaw, Hermes, Copilot and OpenCode.
Link: github.com/thedotmack/claude-mem
← Back to all articles
v13.30.0 changes how hooks work. They used to wait on a background worker in the middle of a session. Now each hook writes its event to a spool file on disk and returns immediately, and the worker picks the files up moments later. The observer that writes memories got cheaper as well: a user prompt no longer triggers a model call of its own, and the observer's prompts now begin with the same fixed instructions so provider prompt caches can reuse them.
v13.30.1 is a small fix with a good lesson in it. Resuming a Claude Code conversation used to inject a freshly rendered memory timeline. That changed the conversation's prompt prefix, which broke prompt-cache reuse, so a helpful feature was quietly making every resumed session more expensive. Resume now injects nothing.
v13.31.0 goes after session start. On a 1.2 GB database the SessionStart hook took about 3 seconds and up to 44 at worst, because it loaded roughly 21,700 rows (63 MB) just to keep the newest 50. New indexes get the same result in about 4 ms, and nothing at startup waits on the network anymore.
Put together, the three releases read like a spec for what a memory layer owes its host: never block the agent loop, never disturb the cache prefix, never scale startup cost with history size. The release from two days earlier added something more ambitious, a work-state to-do list the agent keeps inside claude-mem, since Claude Code gives Claude 5 models no native to-do tool. It supports Claude Code, Codex, Gemini, OpenClaw, Hermes, Copilot and OpenCode.
Link: github.com/thedotmack/claude-mem
Comments