Remember what you worked on across sessions.
kindling automatically captures your Claude Code sessions and injects prior context when you start a new one. All data is stored locally in SQLite with full-text search.
Prerequisite — the kindling binary. The capture/injection hooks run
kindling hook <type>, so the kindling binary must be on your PATH.
Install it via any channel:
# prebuilt binary (recommended; Linux/macOS — no Node.js or Rust needed)
curl -fsSL https://raw.githubusercontent.com/eddacraft/kindling/main/install.sh | sh
# or from crates.io (the published crate is `eddacraft-kindling`; the binary is `kindling`)
cargo install eddacraft-kindlingVerify with kindling --version. (Hooks fail open — if the binary is missing
they no-op and never block your session.)
Add the marketplace, then install the plugin:
/plugin marketplace add eddacraft/kindling
/plugin install kindling@kindling-plugins
Or load directly for development/testing:
claude --plugin-dir ./plugins/kindling-claude-codeThe plugin has no build step and no npm dependencies — both the capture
hooks and the /memory slash commands shell out to the kindling binary, so
all you need is that binary on your PATH (see the prerequisite above).
When you start a Claude Code session, kindling:
- Opens a session capsule to track all activity
- Injects prior context from previous sessions in this project
- Captures tool calls (Read, Write, Edit, Bash, etc.)
- Captures your messages as observations
- Closes the capsule when the session ends
All captured data is stored in a project-scoped SQLite database with FTS5 full-text search.
| Command | Description |
|---|---|
/memory search <query> |
Search past sessions |
/memory status |
Show database stats |
/memory pin [note] [--ttl 7d] |
Pin last observation (optional TTL) |
/memory pins |
List all pins |
/memory unpin <id> |
Remove a pin |
/memory forget <id> |
Redact an observation |
/memory search authentication
Shows your recent work on auth, including files edited and commands run.
/memory pin "Root cause: token expiry check was off by one"
Pins the last observation for quick retrieval.
/memory forget a3f2b1c4
Redacts an observation from search results while preserving referential integrity.
Environment variables:
| Variable | Default | Description |
|---|---|---|
KINDLING_INJECT_CONTEXT |
true |
Enable context injection on session start |
KINDLING_MAX_CONTEXT |
10 |
Maximum results for context injection |
KINDLING_DB_PATH |
auto | Override database path |
Data is stored locally per-project:
~/.kindling/projects/<project-hash>/kindling.db
Each project gets its own isolated database. No data is shared between projects by default.
- Local only — no data leaves your machine
- Secret filtering — API keys and tokens are automatically masked
- Per-project isolation — projects don't share data
- You control it — delete
~/.kindling/to clear all memory, or use/memory forgetfor individual items
- Claude Code
- The
kindlingbinary on yourPATH(powers both the capture/injection hooks and the/memoryslash commands — see Install) - Node.js >= 18 (already required by Claude Code; the
/memoryslash commands are thin Node wrappers that shell out to thekindlingbinary)
Apache-2.0