Rekindle
About
A local MCP continuity engine that helps Claude Code pick up the thread across sessions.
Details
- Author
- skitchy
- Categories
- AI, Productivity
Jump to
Setup
Install Rekindle in your MCP client (Claude Desktop, Cursor, Windsurf, and others).
Repository: https://github.com/skitchy/rekindle
Follow the installation instructions in the repository README, then restart your MCP client.
For Claude Code users who lose time re-explaining project context every session.
Your AI forgets everything between sessions. Rekindle fixes that.
Rekindle is an MCP continuity engine that solvessession orientation, not just storage. Orient at session start, capture at session end, survive mid-session compaction. All local, all SQLite, zero API keys.
v0.3.3— version-consistent MCP metadata and package documentation, on top of v0.3.2's one-command session-start delivery installer.Release notes
This creates.rekindle/in your project with a SQLite database, identity template, captures directory, and transcript directory. Then add the MCP server config for your client:
{ "mcpServers": { "rekindle": { "command": "npx", "args": ["-y", "rekindle"] } } }
Enable PreCompact protection (captures context before mid-session compaction):
Enable session-start orientation delivery — the budgeted orientation packet arrives automatically at startup, resume,/clear, and/compact, so the model re-orients at every context boundary without being asked:
Both hooks are opt-in; plaininitnever installs either.npx rekindle init --with-hooks --with-deliverydoes everything in one line.
Add toclaude_desktop_config.json(macOS:~/Library/Application Support/Claude/, Windows:%APPDATA%\Claude\):
{ "mcpServers": { "rekindle": { "command": "npx", "args": ["-y", "rekindle"] } } }
Add to.cursor/mcp.jsonin your project root:
{ "mcpServers": { "rekindle": { "command": "npx", "args": ["-y", "rekindle"] } } }
Then fill in.rekindle/identity.mdand paste the boot instructions into your project'sCLAUDE.md.
Session 1 stores. Session 2 remembers. Session 10 anticipates.
Over 43 sessions, we measured what an AI assistant failed to load at session start:
Existing memory tools (Mem0, Letta, Zep) optimize for retrieval accuracy: can the AI find what it stored? That's necessary but not sufficient. None of them address whether the AI loaded therightcontext forthissession, or whether it can detect what it missed.
Rekindle solves session orientation: loading identity, recent context, memory health, and missing-context warnings before the assistant starts work.
Seedocs/gap-analysis.mdfor the full research dataset.
boot_reportruns an orientation pipeline before any work begins:
boot_report +-- Read identity document (who am I working with?) +-- Scan memory stats (what do I know?) +-- Find latest checkpoint (where did we leave off?) +-- Read last transcript (what actually happened?) +-- Surface open loops (what needs follow-up?) +-- Surface PreCompact captures (what survived compaction?) +-- Detect gaps (what am I missing?) +-- Calculate orientation score (how oriented am I?) --> "Carrying forward: [context loaded, gaps identified, score: 80/100]"
Survive the Long Middle: PreCompact capture (v0.3)
Mid-session compaction destroys reasoning chains, failed approaches, relational texture, and tone. The PreCompact hook fires automatically before compaction and saves what would otherwise be lost:
PreCompact hook fires +-- Parse JSONL transcript (last N messages) +-- Write raw Markdown capture (.rekindle/captures/) +-- Write structured JSON snapshot (decisions, open loops, files) +-- Update manifest for cheap listing --> boot_report surfaces captures on next session start --> end_session warns if captures exist but weren't reviewed
- summary— one paragraph, cheap
- structured— decisions/loops/warnings, moderate
- raw— full transcript excerpt, expensive (only when needed)
end_sessionstores structured continuity records — not just a summary:
All records stored withtype,source, andsession_idmetadata. Nextboot_reportloads the checkpoint automatically.
Categories:preferencelessoncontextrelationshipgeneral
A static file is passive. Your AI reads it, but it can't search it, rank it, track what's been retrieved, or tell you what's missing. Rekindle adds:
- Search— full-text with importance-weighted ranking
- Structure— category and project scoping across memories
- Orientation— proactive context loading at boot, not just on-demand retrieval
- Gap detection— flags missing identity, empty categories, stale data
- Scoring— transparent checklist so you knowhow orientedthe AI is
- Session capture— structured close with checkpoints, decisions, and open loops
- Compaction survival— PreCompact captures preserve what summaries flatten
- Version-consistent protocol metadata— the MCP initialize response derives its version from the shipped package metadata, preventing release-version drift
- Package-page accuracy— the README shipped to npm identifies the current release before the tag and package are created
- 148 automated tests, plus a packed-artifact check that compares MCP metadata to the installed package version
- One-command delivery install—npx rekindle setup-delivery(orinit --with-delivery) configures the SessionStart hook opt-in: idempotent, preserves other tools' hooks, refuses corrupted settings files
- 147 automated tests
v0.3.1 — "Five Measured Gates"
- Session-start delivery—rekindle session-startemits a budgeted orientation packet via the SessionStart hook at startup, resume,/clear, and/compact
- Budgeted packets, truthful receipts— packets cap at 8,000 valid UTF-8 bytes with an in-packet truncation marker; receipts attest emission only and never claim model visibility
- Desktop-safe storage— storage root never derives from the spawn point (Claude Desktop spawns MCP servers at/); explicit resolution order, fail-loud
- Dual-channel guidance— workflow guidance rides both tool descriptions and MCP instructions, drift structurally impossible
- Cursor adapter—session-start --client cursorwith whitelist stdin parsing; email and workspace paths never reach receipts
- Measured, not assumed— every claim above is backed by a published measurement (evidence,spike results)
v0.3.0 — "Survive the Long Middle"added the PreCompact capture system, open loops, and review tracking —v0.3.0 release notes
git clone https://github.com/Skitchy/rekindle.git cd rekindle npm install npm run build node dist/init/cli.js init
Thesetup-hookscommand writes this to.claude/settings.local.json:
{ "hooks": { "PreCompact": [ { "matcher": "auto", "hooks": [ { "type": "command", "command": "npx rekindle precompact-capture", "timeout": 60 } ] }, { "matcher": "manual", "hooks": [ { "type": "command", "command": "npx rekindle precompact-capture", "timeout": 60 } ] } ] } }
The hook receives session context on stdin (session_id, transcript_path, cwd, hook_event_name) and writes captures to.rekindle/captures/.
Storage root resolution.All Rekindle entry points (server, PreCompact hook) resolve the directory holding.rekindle/through one rule, in order:
- REKINDLE_BASE_DIR, if set — explicit always wins
- Derived fromREKINDLE_DB_PATH, when it points at a canonical<base>/.rekindle/db/layout
- An existing.rekindle/in the current working directory (never when cwd is the filesystem root)
- An existing.rekindle/in your home directory
- Otherwise: your home directory — never the spawn point
Rules 3 and 5 exist because some hosts (e.g. Claude Desktop) spawn MCP servers atcwd=/; a spawn point is not a storage location. If storage cannot be created, the server exits with a message naming the fix instead of a stack trace.
- All data is local.Nothing is sent to external servers.
- No network calls.The MCP server communicates via stdio. No HTTP, no telemetry, no analytics.
- Transcripts contain conversation text.Do not enable transcript capture if your sessions contain secrets or credentials.
- Hook installation is opt-in.Both the capture hook (setup-hooks) and the delivery hook (setup-delivery) must be requested explicitly, by command or by flag. Plaininitnever installs either.
- SQLite database is a regular file.Not encrypted. Use OS-level disk encryption if needed.
- .rekindle/is gitignored.The init command handles this automatically.
- boot_report reads local files.Paths are not sandboxed. Only use with MCP clients and prompts you trust.
"Full delivery" means the orientation packet arrives automatically at session boundaries and the model demonstrably sees it — measured with canary probes at both the receipt layer and the model layer, not assumed. Details and evidence:compatibility spike results.
Claude Code: session-start orientation (opt-in)
writes this to.claude/settings.local.json:
{ "hooks": { "SessionStart": [ { "matcher": "startup|resume|clear|compact", "hooks": [ { "type": "command", "command": "npx rekindle session-start", "timeout": 60 } ] } ] } }
The packet is capped at 8,000 valid UTF-8 bytes — measured: when hook output exceeds the host's limit, the model sees only the leading portion, with no error surfaced. If sections are dropped to fit the budget, an in-packet marker says so, and the receipt in.rekindle/receipts/session-start.jsonlrecords exactly what was emitted without ever claiming the model saw it.
Cursor: session-start orientation (opt-in)
Cursor's hook system can deliver the budgeted orientation packet at session start, measured working in the v0.3.1 compatibility spike. Setup is manual and opt-in — Rekindle never installs hooks without being asked. Add to.cursor/hooks.jsonin your project:
{ "version": 1, "hooks": { "sessionStart": [ { "command": "rekindle session-start --client cursor" } ] } }
Privacy:Cursor's hook payload includes your account email and workspace paths. The adapter treats that payload as personal by default: it extracts only the session ID and workspace root (used in-process for storage resolution), and neither the raw payload, the email, nor any path is ever written to receipts or any other artifact. Background agents are bypassed by default (truthfully receipted); opt in withREKINDLE_ORIENT_BACKGROUND_AGENTS=1.
rekindle/ src/ index.ts MCP server entry point server.ts Server setup, tool registration (10 tools) storage/ sqlite.ts SQLite + FTS5, schema migration, sessions orientation/ types.ts OrientationResult, Gap, ScoreItem GapDetector.ts Structural gap detection (8 codes) Scorer.ts Orientation scoring (6 criteria, 100pts) OrientationService.ts Orchestrator OrientationRenderer.ts Markdown + JSON output captures/ types.ts CaptureEntry, StructuredSnapshot, HookInput CaptureManager.ts Parse, capture, list, read, review tracking discover-transcript.ts Auto-discover session transcripts precompact-capture.ts CLI hook entry point capture-now.ts Manual capture CLI tools/ boot-report.ts Orientation + open loops + capture awareness end-session.ts Structured session close + capture warning list-captures.ts List PreCompact captures read-capture.ts Read captures in 3 modes capture-now.ts Model-triggered manual capture store.ts search.ts list.ts delete.ts update.ts delivery/ budget.ts 8000-byte UTF-8 packet construction, truncation marker receipts.ts Emission receipts (never claim model visibility) session-start.ts SessionStart hook adapter cursor.ts Cursor hook adapter (privacy-whitelisted stdin) guidance.ts Canonical workflow guidance, both channels init/ cli.ts scaffold.ts setup-hooks.ts setup-delivery.ts templates/
Storage:SQLite + FTS5 viabetter-sqlite3. BM25 ranking boosted by importance. Typed records withtype,source,session_id.
Transport:stdio (standard MCP). Works with Claude Code out of the box.
148 tests: storage CRUD + FTS5 ranking, orientation domain (gap detection, scoring, service, rendering), capture manager (parsing, limits, review tracking, formatting), delivery (packet budget, receipts, guidance channels, Cursor privacy sentinels), hook setup for both hooks (schema, idempotency, corruption refusal), and MCP integration (all 10 tools plus package-derived server metadata).
v0.4: "It thinks in networks"— Spreading activation, semantic search via embeddings, gap analysis tooling, eval harness.
Save your AI chat's working state and load it in any other model, client or provider. Verified on save, secrets stripped.
Persistent AI memory across tools — remember your preferences, code standards, and decisions across Claude Code, Cursor, Codex, and any MCP tool. Local-first, zero-cloud.
PyPI launcher that exposes the presence Claude Code plugin's living project model and outcome telemetry as MCP resources for Claude Desktop, Cursor, and Continue.
One memory URL. Every AI tool. Your rules, lessons, and context — recalled automatically, every conversation.
Portable knowledge layer about you, connected to AI tools via MCP. Learns from how you work. Travels across Claude, ChatGPT, Cursor, and more.
Gives your AI persistent context across every chat and session, so it always knows where your projects stand and what's next.
Provides AI assistants with advanced task management and memory capabilities using local JSON file storage.
Portable, cloud-hosted AI memory you own - structured memories, tasks, goals, and notes that work across Claude, ChatGPT, Gemini, and any MCP client.
Hebbian memory for AI agents — learns file access patterns, builds neural pathways, predicts next tools/files, saves tokens
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.

