Recall logo

Recall

Organization
Parcha-ai
recall

Find prior Claude Code and Codex sessions with an indexed local search engine, then continue the work, repeat it with fresh inputs, or distill it into a skill. Runs from Claude Code, Codex, or pi; the current index covers Claude Code and Codex transcripts. Use when the user names Recall, says "find that conversation where…", "what did we do last time about…", "continue what we did yesterday on X", "what did codex do on this branch", "turn what we did about Y into a skill", or "remember when you…". Not for searching code (use grep on the repo) or for facts already in MEMORY.md.

Overview

PublisherParcha-ai
Repositoryparcha-skills
Skill namerecall
Stars
65
Forks
5
Bundled files
2
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 2 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by Parcha-ai on GitHub. Read the source before you install it.

Installation

Install the Recall AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/Parcha-ai/parcha-skills/tree/main/recall/skills/recall
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/Parcha-ai/parcha-skills.git /tmp/parcha-skills
mkdir -p .claude/skills
cp -r /tmp/parcha-skills/recall/skills/recall .claude/skills/recall
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Recall in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Recall on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Recall is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

/recall: session memory engine

Claude Code and Codex sessions on this machine are indexed into a local SQLite engine. Query the index and read only the best-supported session instead of searching entire transcripts. The Recall engine is distributed separately. This skill contains no executable implementation. Prefer configured Recall MCP tools. For local CLI use, the operator must set RECALL_SCRIPT to the absolute path of the privately installed recall.py. If neither interface is available, report the missing dependency and stop. Do not fetch old source commits or install an archived public package to recover it.

All CLI commands use that installed script:

bash
python3 "$RECALL_SCRIPT" <command>       # absolute path supplied by the operator

If Recall MCP tools are available in the current agent, immediately read references/central-brain.md before running commands and use those tools directly. Do not run the local CLI as a parallel or fallback retrieval path. The same central instructions apply when RECALL_URL is set, RECALL_MODE is remote or shadow, or ~/.config/recall-brain/client.json exists. Otherwise everything below is fully local and nothing touches a network.

No index yet? Search anyway

If search reports the index does not exist (or doctor shows db exists=False), search the raw JSONL transcripts immediately while the first index builds:

bash
rg -l -i "<terms>" ~/.claude/projects ~/.codex/sessions   # candidate files
ls -t <hits>                                              # newest first
rg -n -i -C3 "<terms>" <best-hit>                         # read the window

Choose terms and regular expressions based on the request. Exact identifiers are stronger evidence than general prose. If rg is unavailable, use grep -rl. Start the index in the background at the same time:

bash
setsid nohup python3 "$RECALL_SCRIPT" index >/dev/null 2>&1 &

The first build over a large history can take many minutes; later runs are incremental and fast. Tell the user when an answer came from a cold scan of the raw transcripts. Once doctor shows a healthy db, switch to indexed search, which ranks results, explains the WHY for each match, and matches identifiers exactly.

First: pick the outcome

  1. Find / verify: answer "did we…", "which session…", "how did we…". Search, read the best hit's relevant window, answer with the session path as the receipt.
  2. Continue: resume in-progress work. This needs the session's tail plus its branch and worktree.
  3. Repeat: redo the same kind of task with fresh inputs. This needs the original driving prompts, verbatim.
  4. Skill-ify: turn the recipe into a reusable skill. This needs the steps that worked, minus one-off data. Chain into the harness's skill creator when one is installed; otherwise write the standard SKILL.md package directly.

Ask only if the outcome is genuinely ambiguous.

Search

bash
python3 "$RECALL_SCRIPT" search "<what the user said>" [filters]
  • Pass the user's phrasing plus any identifier you have. Identifiers (job UUIDs, PR numbers, pod names, error strings, filenames) are the strongest evidence and are matched exactly, including inside tool output.
  • Apply filters as flags rather than approximating them in the query text:
    askflag
    "last 48h", "back in May"--since 2026-05-01 --until 2026-06-01 (UTC; both bounds include the specified instant. To cover a full local day, use the NEXT day's date as --until; convert the user's local day first)
    "in the other worktree/checkout"--cwd <any-cwd-substring>
    "what did codex do"--harness codex
    branch-scoped--branch <substring>
  • Output is ranked sessions with date, cwd, slot, branch, a matched snippet, and WHY it matched. Empty output means nothing cleared the evidence gate; it does not prove the work never happened. Retry once with a distinctive identifier or a wider window. If output is still empty, tell the user what you searched and that no supported match was found.
  • --paths prints bare file paths (for scripting); --limit N widens.

Read the best-supported hit

For the remote Brain, open a returned receipt with recall_show using only target, or python3 "$RECALL_SCRIPT" show '<recall://receipt>'. It opens that record, not the entire session. Use the recall_session_context MCP tool for neighboring events and recall_exec with returned logical_document_id values for full-document inspection. See the central Brain guide.

The file paths and --prompts, --around, and --tail examples below are for local sessions. Do not append those flags to a remote Brain receipt.

Check the WHY line on the top few results first. Matches on only generic words are weak evidence. Prefer a result whose WHY includes an identifier, phrase, or exact-entity match rather than selecting rank 1 automatically.

bash
python3 "$RECALL_SCRIPT" show <path> --prompts                    # user prompts only
python3 "$RECALL_SCRIPT" show <path> --around 2026-07-03T14:20    # ±3-turn window; use the date printed in the search result
python3 "$RECALL_SCRIPT" show <path> --tail 30                    # the session's final turns (for Continue)

Pass the session file path from the search output. Use show rather than cat: sessions can reach 80 MB, and show parses and prints only the requested content.

Related work (no query needed)

bash
python3 "$RECALL_SCRIPT" related --cwd "$(pwd)" --branch "$(git branch --show-current)"

This returns sessions that share the project, branch, or touched files, ranked by overlap and recency. Use it at session start when the user references prior work without naming it.

Outcome playbooks

These file-based playbooks are for local sessions. For the remote Brain, use receipt-only recall_show, then the context or document tools described above; do not treat one opened receipt as the full session's final state.

Find / verify: search → show --around the matched timestamp → answer with evidence. This usually requires two commands.

Continue: search → show --tail 30 for the final state (last actions, tool results, open errors) → check the session's branch/slot still exists (git -C <cwd> branch --show-current) → summarize: "Found <session> in <cwd> on <date>, last action <x>, branch <b>; resume there or here?"

Repeat: search → show --prompts → present the driving prompts verbatim and confirm fresh inputs (dates, scope) before re-running.

Skill-ify: search → show the working window → separate the durable recipe (commands, endpoints, auth patterns) from one-off data (specific IDs, dates) → invoke the available skill creator with the recipe and a proposed name, or create a standard Agent Skills directory when none is installed.

Export one exact session for another skill

Use the machine-readable session export when /recap or another evidence consumer needs complete, ordered coverage rather than a human window:

bash
python3 "$RECALL_SCRIPT" session-export --current --limit 1000
python3 "$RECALL_SCRIPT" session-export --target <exact-path-or-receipt> --limit 1000
python3 "$RECALL_SCRIPT" session-export --cursor <opaque-next-cursor> --limit 1000

Each JSON page contains stable evidence IDs, redacted text and digests, sanitized typed entities (including native tool identity when observed), native session identity, projection/privacy versions, a boundary receipt, a content-free page receipt, and complete plus next_cursor. Consume pages in sequence and accept immutable-snapshot completeness only on the final page; inspect source_snapshot_stable before claiming a live source did not advance. Cursors are stored owner-private under ~/.recall and never encode transcript text or a path.

--current resolves Codex only through exact CODEX_THREAD_ID, and Claude through exact CLAUDE_SESSION_ID when the harness exposes it. Otherwise it fails closed with content-free ranked candidate receipts; pass the exact path found by Recall rather than guessing. Child and continuation sessions are separate boundaries by default. A standalone local export stamps an explicit local:<harness> source.

To resolve a local native relationship graph for Recap without reading transcript prose, use:

bash
python3 "$RECALL_SCRIPT" session-relations --current --include-children
python3 "$RECALL_SCRIPT" session-relations --target <exact-path> --chain
python3 "$RECALL_SCRIPT" session-relations --target <exact-path> --chain --include-children

The closed recall.session-relations.v1 JSON uses Claude sessionId/agentId sidechain metadata and Codex parent_thread_id/forked_from_id metadata. It excludes merely adjacent or similar sessions and fails when a requested native link is missing or ambiguous. This command is local-only.

Index health

bash
python3 "$RECALL_SCRIPT" index      # incremental; run if results look stale
python3 "$RECALL_SCRIPT" doctor     # coverage, index age, retention watchdog

Never run index --rebuild without the user's explicit request; large session histories can require gigabytes of temporary WAL and substantial CPU time.

doctor warning about cleanupPeriodDays means transcript retention got re-enabled. Surface that to the user immediately because history is being deleted.

Gotchas

  • The engine indexes user text, assistant text, and tool input/output, but reasoning/thinking blocks are never stored, and secret-shaped lines are redacted at ingest. If the only trace of something was a thinking block, it is not findable.
  • Codex sessions are one file per rollout under a date tree; show handles both schemas transparently.
  • Running Recall from pi is supported, but pi's own session format is not yet indexed. Do not claim that a cold result proves no pi session exists.
  • A query about work that never happened can still return lexically-adjacent sessions. The ranked WHY line tells you what actually matched; read it before asserting the session answers the question.
  • Subagent and workflow transcripts are indexed as their own sessions and live under the parent session's directory (<session-uuid>/subagents/…); the path itself tells you which main session spawned them.

Upgrade: central Recall Brain (optional)

Recall can sync into a private central Brain service that provides deliberate memory writes, cross-device search, consented ChatGPT-export import, a Cowork collector, pull connectors, and MCP capture. The service is off unless explicitly configured. Setup, mode routing, and all Brain commands are in references/central-brain.md; doctor prints the current mode.

References

  • references/query-cookbook.md: worked examples per stratum: identifiers, error strings, time windows, cross-worktree, cross-harness, paraphrase.
  • references/central-brain.md: optional central Brain upgrade: setup, modes, deliberate writes, connectors, privacy, export inbox, MCP capture.

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Recall AI skill do?

Find prior Claude Code and Codex sessions with an indexed local search engine, then continue the work, repeat it with fresh inputs, or distill it into a skill. Runs from Claude Code, Codex, or pi; the current index covers Claude Code and Codex transcripts. Use when the user names Recall, says "find that conversation where…", "what did we do last time about…", "continue what we did yesterday on X", "what did codex do on this branch", "turn what we did about Y into a skill", or "remember when you…". Not for searching code (use grep on the repo) or for facts already in MEMORY.md.

Why use Recall on TypingMind?

Because you install it once and use it with any model. Recall is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Recall in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/Parcha-ai/parcha-skills/tree/main/recall/skills/recall. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Recall?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Recall?

As many as you like. As long as a model supports skills, you can use Recall with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Recall AI skill free?

Yes. It is published on GitHub by Parcha-ai under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇