ccFamily
[ MENU ]
SECT. 00 // THE PROBLEM

ccFamily/
Memory · History
Two local-first tools for Claude Code

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.

▲ NOW · CMD · INSTALL

npm install -g @tznthou/ccrecall

[ ⭐ GITHUB → ]
SECT. 01 // TWO TOOLS · TWO DIRECTIONS

One helps the AI remember.
The other helps you look it up.

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.

▲ NOW
ccRecall LIVE · v0.5.6

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 →
▲ NOW
ccRewind LIVE · v1.19.2

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 →
WHICH ONE · pick by what you need
ccRecall

You want Claude to remember why you picked SQLite last week

ccRewind

You want to dig up how that conversation three days ago actually ended

ccRecall

You're tired of re-explaining project context every new session

ccRewind

You want to know which conversations ate this month's tokens

SECT. 02 // ARCHITECTURE · PEER PRODUCTS + PLUGIN · SCHEMA 6/20 ALIGNED

Two peers,
plus a plugin nobody has written yet.

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.

FIG. C · ARCH SIMPLIFIED

// TWO PEER PRODUCTS · INDEPENDENT

ccRewind

history GUI · dark-mode

PHASE 02 · LIVE · ~/.ccrewind/

ccRecall

memory layer · CLI

PHASE 01 · LIVE · ~/.ccrecall/

[+ ccreason plugin · PLANNED]

↕ peer · independent · schema 6/20 aligned ↕

~/.ccfamily/db.sqlite

FUTURE TARGET · 20 unified tables (10 baseline + 7 ccRecall + 3 ccRewind)

// Currently independent DBs · merge is opt-in · reversible migration

DESIGN NOTE

Why a plugin?

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

ccReason designed · not written yet

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"

FAMILY COMMITMENT

ASSERT #04

Independent Lifecycle

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

Local Data

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

Reversible Migration

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

SECT. 03 · FINAL

STEP 1 · INSTALL
Five seconds for this line. Three more steps in the tutorial.

npm install -g @tznthou/ccrecall

[ ⭐ STAR ON GITHUB ]