A local knowledge base built from your Claude Code, Codex, OpenCode, and Pi conversations.
Recall indexes your coding-agent sessions in SQLite so you can rediscover past work, resume sessions, and preserve important context in plain Markdown. Everything stays on your machine.
- Indexes conversations across Claude Code, Codex, OpenCode, and Pi.
- Searches with fuzzy matching, regular expressions, or optional local semantic search.
- Browses recent conversations and resumes supported sessions.
- Preserves reusable project context as plain Markdown context banks.
- Runs as a standalone Python CLI or as an extension inside Pi.
Recall reads local transcripts and indexes them with SQLite FTS5. Core indexing and search use only the Python standard library and do not send your conversations anywhere. Optional semantic search downloads and runs an embedding model locally.
Recall stores its index at ~/.recall/recall.db and context banks under ~/.recall/contexts/.
Install the published recall-pi package:
pi install npm:recall-piThe extension adds the /recall dashboard and the recall_search and recall_context tools. In Pi, you can ask naturally:
Search my recent sessions for the retry backoff change.
Attach my migration-safe-notsafe context before we continue.
Create a safe-notsafe context from source at ~/source/github/viggy28/safe-not-safe.
Source-aware context creation asks before bounded repository inspection, discloses which selected Pi provider/model receives source excerpts, and separately asks before saving. See the usage and privacy guide.
Core search has no required third-party dependencies:
python3 recall.py index
python3 recall.py search "retry backoff"
python3 recall.py recentYou can also install the recall command from this checkout. See the usage guide for setup and all available commands.
recall graph extracts named entities locally with a deterministic, dependency-free
heuristic and connects entities mentioned in the same message. JSON output contains
nodes, weighted co-occurrence edges, and references to the source session, message,
path, and transcript line. DOT output can be opened by Graphviz and other graph tools.
# D3/Cytoscape-friendly JSON on stdout
recall graph --max-nodes 75 --min-edge-weight 2 > graph.json
# Scope the graph and create a Graphviz artifact
recall graph --source pi --project recall --since 2026-01-01 \
--entity-type organization --format dot --output graph.dot
dot -Tsvg graph.dot > graph.svgAvailable scopes include --since, --until, --source, --project, and
--entity-type. Use --max-nodes and --min-edge-weight to keep dense graphs
readable. Entity extraction is deterministic and dependency-free, and recognizes a
small set of precise token classes rather than every capitalized word: @people,
#topics, issue references (#123, gh-123), domains, file paths, and a curated
technology gazetteer (Postgres, React, GraphQL, …). Add --ner to layer on spaCy
named-entity recognition for people, organizations, and places in prose:
pip install spacy && python -m spacy download en_core_web_sm
recall graph --nerFor an interactive explorer, render a self-contained HTML file (no server or network needed — open it directly in a browser):
recall graph --format html --output graph.html
open graph.htmlContext banks turn useful material from past conversations into reusable Markdown documents. Create, review, update, and attach them to future Pi sessions without moving your project context to a hosted service.
# Discover matching indexed sessions locally, select evidence, then choose a focus.
recall context create streambed-internals
# Or select evidence and focus explicitly.
recall context create streambed-internals \
--session 019fcf9a \
--session 019fd039 \
--focus "Architecture, code paths, invariants, and technical debt"
recall context show streambed-internals
recall context update streambed-internals "Record the latest implementation decisions"Use recall context create NAME --blank for an intentional empty template. Model-backed creation separately reviews evidence transmission and the generated document before saving.
