Cross-agent memory

claude-mem-for-all

ShippedCase study

Persistent context for every coding agent — Claude Code, Codex, Cursor, Gemini, OpenClaw, Copilot — from one hook core. Swift Darwin dispatch moat, plugin discovery with SemVer, project-identity resolution. 533/533 tests, proven non-virgin recall (1,540 observations). The repo is the pack.

Every coding agent ships its own memory, so the learning dies with the tool that wrote it. This fork of claude-mem inverts that: one SQLite store, and any writer — Claude Code, Codex, Cursor, Antigravity, Hermes, pi, or a plain shell script — deposits its checkpoint note through the same idempotent bridge, the claude-mem-for-all CLI (tools/claude-mem-for-all.swift).

The store’s provenance is the point. Every deposit is tagged platform_source (pi, hermes, …) — a learning stays attributed to the agent that produced it instead of collapsing into claude just because it landed in the same database.

Swift hook launcher (BIN-283)

Darwin dispatch for plugin hooks with a node fallback — no more anonymous interpreter processes per hook.

Dual-hook Codex SessionStart (BIN-253/254)

Worker bootstrap and memory injection are separate hooks, each observable on its own.

Why Swift

One static binary instead of an interpreter herd. The repo’s own docs/why-swift.md names the cases where Python, bash, or curl would be the right call.

Upstream, not a hard fork

Synced with upstream main through the v13.24.1 line; upstream features merged intact.

Proof, not vibes. 533/533 tests green, and 1,540 observations with proven non-virgin recall — memory written by one agent, actually read back by a different one. A store nobody re-reads is a write-only log, and a write-only log is not memory.

Honesty: the numbers are the fork’s own, from its README and test suite — not independently re-run for this page. The repo is the pack: architecture, data-flow, and integration-matrix diagrams plus per-agent recipes live in the repo, not in this summary.