Agent Recall
Makes past agent sessions searchable and points each result back to the original work, so useful context is easier to trust and reuse.
Project overview
Agent Recall overview
A short overview of the problem, solution, and result.
Starting Point
Useful decisions, blockers, commands, and implementation details were scattered across local agent session archives.What Shipped
Built a Rust CLI that streams supported transcript archives, redacts common secret patterns, parses high-signal events, and indexes them into a disposable SQLite FTS5 database.Why It Mattered
Shipped a public, installable tool for local recall across Codex, OMP, Pi, Claude, and optional archived Codex log sources.Summary
Agent Recall is a local memory layer for agent work.
It indexes Codex, OMP, Pi, and Claude session archives into SQLite FTS5. That gives agents and humans a way to find prior decisions, commands, blockers, and facts without pasting raw transcript blobs into the next conversation.
The situation
Agent work leaves a lot of useful history behind.
The useful parts are usually buried in JSONL archives: why a decision was made, which command proved something, where a blocker appeared, or what the next thread should know. Plain “memory” is not enough if nobody can verify where it came from.
How it works
Keep local archives as the source of truth.
The index is disposable. Agent Recall can delete and rebuild SQLite state from raw transcript archives, while pins live outside the index so important anchors survive rebuilds.
Return evidence, not loose summaries.
Search, recent, show, bundle, memory, related, and resource commands expose source labels, session keys, event kinds, file paths, line numbers, snippets, and JSON output so another agent can inspect the receipt.
Make freshness visible.
The watcher avoids live-write churn with a quiet window, reports pending and waiting files, handles SQLite refresh locks, and exposes doctor/status output when the index is missing, stale, blocked, or healthy.
Product surface
The public surface is a CLI for humans and agents: readable grouped receipts by default, structured JSON when another tool needs to consume the result.

What I built
A parser for real agent archives.
The parser reads JSONL line by line, accepts supported Codex, OMP, Pi, and Claude record shapes, extracts high-signal user, assistant, shell-command, and tool events, dedupes repeated content, and skips malformed records without aborting a full import.
SQLite as the retrieval layer.
The store keeps sessions, events, source-file state, FTS rows, memory objects, evidence rows, deltas, and resource records. Indexing skips unchanged files by source metadata and batches session writes for large archives.
Recall commands for agents.
Search supports repo, cwd, kind, date-window, phrase, NEAR, duplicate, and exclude-current filters. Memories, memory-show, delta, related, resources, and read-resource turn transcript history into addressable context objects.
Long-running local operations.
The watcher can run once or continuously, install a macOS LaunchAgent, scope refreshes by repo and date, wait for quiet files, retry transient SQLite locks, and fall back to a stale-index state when refresh is blocked.
Local handling for sensitive data.
The tool reads local source roots, writes local XDG-style data/state files, and runs best-effort secret redaction before indexing common token, key, DSN, cookie, authorization, bearer, and private-key patterns.
What shipped
Agent Recall handles a practical problem in AI-assisted engineering: useful memory needs local control, fast retrieval, and receipts strong enough for another agent to trust.
Local index
Transcript archives became searchable without becoming the database.
Agent Recall builds a disposable SQLite FTS5 index from local JSONL archives while keeping raw transcript files as the source of truth.
Agent sources
Recall works across more than one runtime.
The parser supports Codex, OMP, Pi, and Claude transcript roots with explicit source labels in search, recent, show, bundle, and related-context output.
Receipts
Search results point back to evidence.
Results group by session and carry the source kind, event kind, file path, line number, cwd, repo, and snippet needed to inspect the original transcript.
Memory objects
Memories are durable records, not loose summaries.
Indexing extracts deterministic decision, task, fact, open-question, and blocker objects with stable ids, evidence counts, resource URIs, and delta cursors.
Health checks
The tool reports freshness and index health.
The watcher, status, and doctor commands expose pending files, stale indexes, LaunchAgent status, SQLite checks, FTS integrity, and duplicate-source counts.
Verification
The repo includes CLI tests for indexing, search receipts, help output, LaunchAgent defaults, watcher behavior, recent/day views, pins, memories, deltas, resources, and missing-database behavior.
It also includes retrieval-quality fixtures that protect agent-workflow queries, plus redaction fixtures for bearer tokens, common API-key formats, private keys, webhook secrets, cookies, DSNs, and password-like values.
Public repo
The project is public and installable as a Rust CLI.
View GitHub repo →
Tech Stack
Have a workflow ready to become software?
I design and build internal tools, automations, dashboards, integrations, and AI-assisted workflows around the people who need to use them.