Every new Claude Code session starts from a blank page. The architecture you settled on two weeks ago, the bug you already fixed, the convention you agreed on — gone.
So you become the AI's long-term memory, re-explaining the same context every single time.
Those conversations didn't disappear — they're sitting in ~/.claude/projects/ as JSONL, and nothing ever reads them back. ccFamily is two local tools that do: one reads them back to the AI, one reads them back to you.
npm install -g @tznthou/ccrecall
Same JSONL, two ways to read it. ccRecall distills it into memory the AI can use; ccRewind lays it out as history you can browse. They're independent — install either one, or both.
helps the AI remember · CLI · APACHE-2.0
After a session ends it distills the conversation into structured memories, then brings up to 5 of them back when you start the next one. You stop re-explaining what you already decided. ~/.ccrecall/
See how ccRecall works →helps you look it up · DESKTOP APP · GPL-3.0
Turns scattered JSONL into an indexed field notebook: searchable, branch-aware, and honest about where your tokens actually went. ~/.ccrewind/
See how ccRewind works →You want Claude to remember why you picked SQLite last week
You want to dig up how that conversation three days ago actually ended
You're tired of re-explaining project context every new session
You want to know which conversations ate this month's tokens
Not a pipeline, not a central daemon — two peer products that install, upgrade, and remove independently, plus one extension plugin that reads the shared schema.
DESIGN NOTE
ccReason (the ADR reasoning tool) is an independent npm package that reads ccRecall's shared schema — making it a plugin, not a subcommand and not a peer.
The reason: ccReason's core action is reading ccRecall's memories and knowledge_map tables to derive ADRs — its read/write path depends entirely on ccRecall's SQLite schema. Promoting it to a peer would mean reinventing storage from scratch; folding it in as a subcommand would pollute ccRecall's codebase. The plugin model (independent npm package + shared schema) keeps both advantages.
// Complements the V2 ADR CLI direction; doesn't overturn it. Still a CLI, still ADR markdown, still Apache-2.0.
// PLUGIN (READS SHARED SCHEMA) · not started
EXTENSION · ADR CLI · INDEPENDENT NPM · SHARED SCHEMA
Independent npm package, architecturally an extension of ccRecall. Reads ccRecall's memories and knowledge_map tables to derive ADR markdown, committable to docs/adr/.
ccreason adr "why did we switch to NATS"
ASSERT #04
Each peer product installs, upgrades, and removes independently. Uninstalling ccRecall doesn't affect ccRewind, and vice versa. The ccReason plugin is opt-in.
ASSERT #05
The shared DB always stays local under ~/.ccfamily/ — no cloud sync planned, ever. Compliance-sensitive teams can fold it straight into their existing backup policy.
ASSERT #06
Schema migration ships with a reversible path and the docs to back it up (forward + rollback SQL). Integrators always have a way out.
// INVARIANTS: LOCAL-FIRST · OPEN-SOURCE · CLAUDE-CODE-NATIVE · INDEPENDENT-INSTALL · REVERSIBLE-MIGRATION