https://github.com/mnemos-dev/mnemos
Mnemos turns Claude Code session history (the .jsonl files under
~/.claude/projects/) into a folder of refined markdown notes that
your next Claude Code session reads as a briefing. Plain text,
Obsidian-compatible, no cloud.
Architectural bit worth talking about: Mnemos does not call any LLM
API of its own. All refinement happens inside the user's existing
Claude Code session via `claude --print --dangerously-skip-permissions
"/<skill> <args>"`. Cost to the user is zero on top of their existing
subscription. CI grep blocks accidental `anthropic` imports;
`_child_env()` strips `ANTHROPIC_API_KEY` from every spawned
subprocess. Subscription quota is the hard line.
The project pivoted hard between v0.x and v1.0. v0.x copied the
MemPalace/mem0 hypothesis: chunk conversations into atoms, embed,
top-K, RRF merge. Phase 0 hit 90% Recall@5 on LongMemEval. Then I
measured the corpus and the bet broke:
- RRF score band stuck at 0.014–0.017. Small chunks didn't produce
sharp embeddings on conversational data.
- LLM synthesis fed better from whole sessions than from fragments.
- A 600-node graph nobody — me or the AI — actually traversed.
- 663 fragments carrying ~860 entity instances; ~50% were just
folder names.
v1.0 deleted ~3,000 lines of mining pipeline + ~200 tests, pivoted
to whole-Sessions-as-memory-units plus an "Identity Layer" that
distills the user over time.
v1.1 (today) inverts the trigger: refine when the session ends.
SessionEnd hook + detached worker that survives Claude Code
termination via CREATE_BREAKAWAY_FROM_JOB on Windows /
start_new_session=True on POSIX. SessionStart sync fallback for
missed cases (mid-stream X-close, kill -9). Three sequential stages
in the worker: refine -> brief regen -> identity refresh.
527 tests pass; ChromaDB and sqlite-vec backends produce identical
recall to four decimals on LongMemEval.
Full pivot write-up:
https://github.com/mnemos-dev/mnemos/blob/main/HISTORY.md
Happy to answer questions about the architecture or the
v0.x -> v1.0 -> v1.1 path.