{"slug": "recall-local-search-across-your-cursor-claude-code-codex-chat-history", "title": "Recall – Local search across your Cursor/Claude Code/Codex chat history", "summary": "A new open-source tool called Recall allows developers to search across their AI chat history from Cursor, Claude Code, OpenAI Codex CLI, and pi directly from the terminal without copying or modifying their data. The tool builds a local searchable index from native storage locations and can be used as a standalone CLI, an MCP server for AI coding agents, or a native extension for pi. Recall aims to solve the problem of lost context by enabling developers to quickly retrieve past conversations and continue work without manual copy-pasting.", "body_md": "Your AI chat history, searchable. Across Cursor, Claude Code, Codex, and pi. Really fast. Read-only. No copies.\n\n`recall`\n\nindexes the conversations you've already had with Cursor, Claude Code,\nOpenAI Codex CLI, and pi — straight from their native storage. It does not move,\ncopy, or modify your data. It builds a tiny searchable index over excerpts and\nmetadata, and lets you grep the lot from your terminal.\n\n*Above: the pi extension lets an agent call recall_search\nto find a past conversation and read it back — no copy-paste.*\n\n``` bash\n$ recall doctor\nrecall 0.1.0\n\nsources:\n  ✓ cursor  ~/Library/Application Support/Cursor/User/globalStorage/state.vscdb\n  ✓ claude  ~/.claude/projects\n  ✓ codex   ~/.codex/sessions\n\nindex: ~/.recall/index.sqlite (69.5 MiB)\n  cursor  1514 sessions\n  claude    25 sessions\n  codex   1058 sessions\n  total   2597 sessions\n\n$ recall \"import cycle\" --limit 3\n2025-09-02 18:36  cursor  ~/code/acme-api    Fix import cycle in proto files\n    id=cursor:94dc8775-5fd3-41e9-93d7-43d7dff795b6  msg=1  role=assistant\n    I'll help you fix the «import» «cycle» in the request logging…\n\n$ recall last --repo ~/code/acme-api | claude -p \"continue this\"\n# Homebrew\nbrew install pratikgajjar/tap/recall\n\n# one-line installer (downloads the right prebuilt binary)\ncurl -fsSL https://raw.githubusercontent.com/pratikgajjar/recall/main/install.sh | sh\n\n# …or with Go\ngo install github.com/pratikgajjar/recall@latest\n\n# …or grab a binary from https://github.com/pratikgajjar/recall/releases\n```\n\nThen build the index once:\n\n```\nrecall index           # one-time, ~1 minute on real data\nrecall doctor\nrecall <query>\n```\n\nPure Go, no CGO. Builds a single static binary.\n\n`recall mcp`\n\nis a [Model Context Protocol](https://modelcontextprotocol.io)\nserver over stdio, so any MCP-capable harness can search your past chats. It\nexposes `recall_search`\n\n, `recall_transcript`\n\n, `recall_sessions`\n\n, and\n`recall_related`\n\n, and keeps the index warm in the background.\n\n**Claude Code**\n\n```\nclaude mcp add recall -- recall mcp\n```\n\n**Codex** — add to `~/.codex/config.toml`\n\n:\n\n```\n[mcp_servers.recall]\ncommand = \"recall\"\nargs = [\"mcp\"]\n```\n\n**Cursor / Cline / Windsurf** — add to the client's `mcp.json`\n\n(e.g. `~/.cursor/mcp.json`\n\n):\n\n```\n{\n  \"mcpServers\": {\n    \"recall\": { \"command\": \"recall\", \"args\": [\"mcp\"] }\n  }\n}\n```\n\n**pi** — use the native extension instead (no MCP needed):\n`pi install npm:@pratikgajjar/pi-recall`\n\n([packages/pi-recall](/pratikgajjar/recall/blob/main/packages/pi-recall)).\n\n**As a skill** — for any agent with a skills system + shell access (Claude Code\nAgent Skills, pi skills), install the [ recall skill](/pratikgajjar/recall/blob/main/skills/recall) instead of\na server. It teaches the agent to shell out to the CLI directly:\n\n```\nnpx skills add pratikgajjar/recall          # via the skills CLI (skills.sh)\n# or manually:  cp -r skills/recall ~/.claude/skills/recall\n```\n\nOnce connected, ask the agent things like *\"use recall to find how we fixed the\nimport cycle\"* and it will search and read the relevant past session.\n\n```\nrecall index                       (re)build the index from all sources\nrecall <query>                     search; prints ranked hits\nrecall find <query> [--repo P]     same, with filters\nrecall last [--repo P]             dump the most recent session as transcript\nrecall show <session-id>           dump one session as transcript\nrecall sessions [--repo P]         list recent sessions\nrecall related <session-id>        sessions on the same topic\nrecall mcp                         run an MCP server (Claude Code, Codex, Cursor, …)\nrecall doctor                      health check\n```\n\nFlags can appear anywhere on the line:\n\n```\n--repo PATH      restrict to a project folder\n--source NAME    cursor | claude | codex\n--since DURATION e.g. 24h, 7d, 30d\n--limit N        default 30\n--json           machine-readable output\n```\n\n| Tool | Storage | Notes |\n|---|---|---|\n| Cursor | `~/Library/Application Support/Cursor/User/globalStorage/state.vscdb` and per-workspace `state.vscdb` |\nWalks `composerData:*` + `bubbleId:*` blobs; joins to workspace folder via `workspaceStorage/*/workspace.json` |\n| Claude Code | `~/.claude/projects/<sanitized-cwd>/*.jsonl` |\nOne file per session, append-only JSONL |\n| Codex CLI | `~/.codex/sessions/YYYY/MM/DD/rollout-*.jsonl` |\nFirst line is `session_meta` ; rest are `response_item` payloads |\n| pi | `~/.pi/agent/sessions/<sanitized-cwd>/*.jsonl` |\nFirst line is the `session` event; rest are `message` events |\n\nThe index lives at `~/.recall/index.sqlite`\n\n. It contains:\n\n`sessions(id, source, source_id, project, title, started_at, msg_count, …)`\n\n`messages_fts(session_pk, idx, role, ts, text)`\n\n— SQLite FTS5 over excerpts (trimmed to ~1.5 KB per message)\n\nNuke `~/.recall/`\n\nand re-run `recall index`\n\nany time. The index is disposable.\n\n**Read-only.** Sources stay the source of truth.**No materialization.** No markdown copies, no canonical schema migrations.**One binary.** Single Go executable, ~10 MB, no CGO.**SQLite + FTS5** for search.`bm25`\n\nranking with a small recency lift.**Adapter trait.** Add a new tool = implement one interface (`Adapter`\n\nin`types.go`\n\n).\n\nInspired by [ fff](https://github.com/dmtrKovalenko/fff)'s pattern: thin index,\nlive source reads, MCP-as-peer.\n\nv0.1. Incremental indexing (append-only), an MCP server, and the pi extension all work. A filesystem watcher and a TUI are next.\n\nMIT.", "url": "https://wpnews.pro/news/recall-local-search-across-your-cursor-claude-code-codex-chat-history", "canonical_source": "https://github.com/pratikgajjar/recall", "published_at": "2026-06-03 00:46:49+00:00", "updated_at": "2026-06-03 01:17:00.402023+00:00", "lang": "en", "topics": ["ai-tools", "ai-products", "large-language-models"], "entities": ["Cursor", "Claude Code", "Codex", "pi", "recall", "Pratik Gajjar"], "alternates": {"html": "https://wpnews.pro/news/recall-local-search-across-your-cursor-claude-code-codex-chat-history", "markdown": "https://wpnews.pro/news/recall-local-search-across-your-cursor-claude-code-codex-chat-history.md", "text": "https://wpnews.pro/news/recall-local-search-across-your-cursor-claude-code-codex-chat-history.txt", "jsonld": "https://wpnews.pro/news/recall-local-search-across-your-cursor-claude-code-codex-chat-history.jsonld"}}