{
  "markdown": "<div align=\"center\">\n\n<img src=\"https://clauderecall.com/wordmark-light.svg\" alt=\"Claude Recall\" width=\"400\">\n\n<br />\n<br />\n\n**Stop re-explaining your project to Claude every morning.**\n\nClaude Recall indexes every Claude Code session you've ever run, surfaces what matters,<br />and pipes the right context back in with one command.\n\n<br />\n\n<img src=\"https://clauderecall.com/hero/brand-morph.gif\" alt=\"Claude Recall, memory tree morphing into the wordmark\" width=\"700\">\n\n<br />\n<br />\n\n[![npm](https://img.shields.io/npm/v/@clauderecallhq/cli?style=flat-square&color=f97316&labelColor=f97316&label=npm)](https://www.npmjs.com/package/@clauderecallhq/cli)\n[![Downloads](https://img.shields.io/npm/dm/@clauderecallhq/cli?style=flat-square&color=f97316&labelColor=f97316&label=downloads)](https://www.npmjs.com/package/@clauderecallhq/cli)\n[![License](https://img.shields.io/badge/license-proprietary-f97316?style=flat-square)](#license)\n\n<br />\n\n<sub>Your session content stays on your machine. No cloud. No account. Opt-in telemetry, off by default.</sub>\n\n</div>\n\n<br />\n\n---\n\n<br />\n\n## The Problem\n\nClaude Code is incredible until the conversation ends. Then you hit three walls:\n\n<table>\n<tr>\n<td width=\"33%\" valign=\"top\">\n\n### Context Amnesia\n\nEvery new `claude` invocation starts from zero. You re-explain the architecture, re-paste the key files, re-describe the bug you already fixed yesterday.\n\nYou built that context pyramid once. Now you're building it again.\n\n</td>\n<td width=\"33%\" valign=\"top\">\n\n### Cost Blindness\n\nClaude Code tells you nothing about spend after a session ends. Which session burned through tokens? Which project is quietly eating half your Anthropic bill?\n\nYou're guessing.\n\n</td>\n<td width=\"33%\" valign=\"top\">\n\n### Session Sprawl\n\nClaude Code scatters conversations into `~/.claude/projects/**/*.jsonl`. No titles. No search. No way to find the session where you finally got the auth flow right.\n\nDozens of projects. Hundreds of sessions. Zero discoverability.\n\n</td>\n</tr>\n</table>\n\n<br />\n\n## The Fix\n\n```bash\nnpm install -g @clauderecallhq/cli\nrecall start\nrecall open\n```\n\nThat's it. Recall indexes every past and future Claude Code session into a searchable local database, gives you a beautiful web UI to explore them, and lets you pipe any session back into a new conversation:\n\n```bash\n# The moat: past session -> new conversation\nrecall context abc12345 | claude\n```\n\nClaude picks up where you left off instead of asking you to explain it again.\n\n<br />\n\n<div align=\"center\">\n\n<img src=\"https://cdn.clauderecall.com/marketing/product-ui.png?v=hd3\" alt=\"Claude Recall web UI: every Claude Code session you have ever run, with full transcripts, tool calls, threading, and search\" width=\"900\">\n\n<sub>Every Claude Code session you have ever run. Searchable. Threaded. Re-injectable.</sub>\n\n</div>\n\n<br />\n\n---\n\n<br />\n\n## Features\n\n### Context Re-injection (the moat)\n\nPipe any past session straight into a new Claude Code conversation as condensed markdown. Claude picks up where you left off instead of asking you to re-explain it. **Nothing else in this category has it.**\n\n```bash\nrecall context <id> | claude\nrecall context <id> --prelude \"continue this\" | claude\nrecall context <id> --since 2h | claude\n```\n\n### Threads\n\nGroup related sessions into a DAG you can see, rename, and walk. Drag-to-reparent in the graph view. Right-click rename. Bulk-generate coherent titles across an entire thread with one click.\n\n```bash\nrecall thread list\nrecall thread create \"auth-refactor\"\nrecall thread add <thread> <session>\n```\n\n### Full-Text Search\n\nFTS5 BM25 ranking across every message, every session, in milliseconds. Highlighted snippets, inline `#tag` filters, project + date scoping.\n\n```bash\nrecall search \"zod schema\"\nrecall search \"auth #auth-fix\" -p MyProject\n```\n\n### On-Device Vector Search (Pro)\n\nLocal **768-dimension embeddings** via `bge-base-en-v1.5` ONNX. Three-lane RRF fusion (BM25 + summary + vectors) finds sessions by *meaning*, not keywords. Your code never leaves your laptop.\n\nThe embedder model (~110MB) is opt-in: install on demand with `recall semantic install`. Keeps `npm install -g` quick and avoids forcing the download on users who never touch vector search.\n\n**One-click vectorization from the web UI.** Each project header has a `🧠 Vectorize` button. Click → pre-flight dialog shows scope (X of Y eligible sessions), three-✓ cost guarantees (free, on-device CPU only, no network), depth selector (Quick / Standard / Full / Custom chunks-per-session), and a **depth-aware ETA** computed server-side per cap level so Standard and Full give honest, different numbers. **Counters are per-repository:** the Queued, Throughput, and ETA tiles only count chunks from the project you opened the dialog from, with a separate small disclosure line surfacing how many chunks are queued from other projects ahead of yours (the worker drains FIFO globally). While running, the dialog flips to monitor mode with a live progress bar, ETA tick countdown, observed-throughput (drained-in-this-session) feeding the estimate, and visible **warm-up** (yellow) + **wind-down** (red) progress bars with timing context for the parts that have no deterministic ETA (embedder load is 5-60s by hardware; worker batch wind-down is 5-15s). **Three explicit confirmation states close every run:** green `✓ Vectorization complete — N chunks embedded in Xs` banner when the queue drains naturally, green `✓ Already vectorized — N{project} is already done` pre-flight callout (replacing the gray \"Nothing to do\" text) when there's nothing to vectorize, and the existing green `✓ Stopped — worker halted and queue cleared` badge for Stop. Stop itself is a **global kill switch**: it clears every project's queue and halts the worker. The vector worker **does not auto-resume on daemon restart** by default; enable `semantic.autoResumeWorker: true` in `~/.recall/config.json` if you want background draining without a click. Free tier doesn't see the button; endpoint is Pro-gated.\n\n**Anonymous install ping (opt-in, off by default).** On first run we ask once whether you want to send a single anonymous message per month so we can count real installs vs bots. No PII, no fingerprint, no cross-month linkage. Full payload at [clauderecall.com/telemetry](https://clauderecall.com/telemetry). Toggle any time with `recall telemetry on` / `off` / `view`.\n\n```bash\nrecall similar <session-id>\nrecall semantic install                  # one-time model download (~110MB, on-device)\nrecall semantic reindex                  # vectorize on local CPU (idempotent, resumable)\nrecall semantic verify-spawn             # diagnostic — confirms claude CLI honors the no-persistence flag\n```\n\n**Two lanes.** Tier-2 (the commands above: `install`, `reindex`, `verify-spawn`) is free, local, and never sends anything anywhere. Tier-1 (`recall semantic on / backfill / auto-extract`) shells out to your local `claude` CLI to summarize sessions and **costs plan tokens at ~30 sessions/min**: opt-in for users who want LLM-generated summaries on top of vectors. Default-off.\n\n**Switching backends in place.** Pro users running an older ONNX-based vector index who upgrade to the llama.cpp backend can run `recall semantic migrate` to re-embed the existing corpus under the new backend. The command is resumable (SIGINT-safe), atomic at switchover, and retains a 30-day rollback window via `recall semantic rollback-migration`.\n\n### Document Buckets\n\nPoint Recall at a folder of your own documents and search them by meaning from\n**any** repo, including from inside a Claude Code session over MCP.\n\n```bash\nrecall bucket create my-books\ncp ~/Documents/notes/*.md ~/.recall/buckets/my-books/\nrecall bucket ingest my-books\nrecall bucket search my-books --query \"how does retry backoff work\"\n```\n\nBuckets are global. One created while working in project A is searchable from\nproject B, so a reference library follows you everywhere instead of living in\none repo.\n\n**Three ways Claude uses a bucket over MCP**, cheapest first, so a large corpus\nnever floods the context window:\n\n| Tool | Cost | What it returns |\n|---|---|---|\n| `bucket_list` | ~200 tokens | What buckets exist, how big, what topics |\n| `bucket_search` | a few thousand | The best-matching passages |\n| `bucket_expand` | negligible | The surrounding text, in original document order |\n\nMeasured on a 20-book, 2.86M-token corpus with ground truth taken from the\ncorpus rather than from our own search results: **75 to 90% of questions put a\ncorrect passage in the top 5, in 74ms**. The lower end is the hardest case,\nfinding one exact phrase among 6,565 passages; ordinary questions land at the\nhigher end. Everything runs on-device with the same `bge-base-en-v1.5` model\nused for session search, plus classic keyword search. Nothing is uploaded and\nthere is no per-query cost.\n\nv1 reads `.md`, `.markdown` and `.txt`. Your source files are never modified,\nand deleting a bucket keeps them unless you pass `--delete-files`. Embedding\nonly ever happens when you run `recall bucket ingest` - nothing indexes in the\nbackground.\n\n### Cost Analytics\n\nPer-session and per-project token + dollar totals. Daily sparkline. Top-10 heaviest sessions. Know exactly where your Anthropic bill is going.\n\n```bash\nrecall stats <id>\nrecall stats --project Tools --days 7\n```\n\n<div align=\"center\">\n\n<img src=\"https://cdn.clauderecall.com/marketing/cost-analytics.gif?v=hd4\" alt=\"Cost analytics dashboard: daily spend bars, top sessions ranked by cost, primary model breakdown\" width=\"540\">\n\n<sub>Hover any day. Exact cost. Exact tokens.</sub>\n\n</div>\n\n### Usage Caps in the Status Line\n\nYour 5-hour and weekly limits at the bottom of every Claude Code session, for **every account you use**, not just the one you are signed into right now.\n\n```\n● work   5h  31% ██░░░  3h55m │ 7d  89% ████░ 18h25m │ live\n○ side   5h  ~0% ░░░░░  fresh │ 7d  77% ████░  1d12h │ 1h55m ago\n```\n\n`●` is the account you are signed into; `○` is a stored snapshot, with its age. Colour is keyed on what you have actually spent, so it does not cry wolf at 30%.\n\nRecall offers this once, the first time you run it in a terminal. Say no and it never asks again.\n\n```bash\nrecall statusline on                    # or off, which restores exactly what you had\nrecall statusline list                  # every account and where its label came from\nrecall statusline name side personal    # rename one\nrecall statusline ascii                 # for terminals that render block glyphs double-wide\n```\n\nYour 5-hour and weekly numbers come from the `rate_limits` field Claude Code already hands the status line: **no network calls, no credential reads, no endpoint.**\n\nThe optional **Fable weekly column is the one exception, and it is off by default.** Turn it on with `recall statusline fable on` and it does two things the rest of the status line never does: it reads your Claude Code OAuth credential from the macOS login keychain, and it calls `api.anthropic.com/api/oauth/usage` at most once every 15 minutes to fetch your Fable budget. It is macOS-only, it asks before enabling, and `recall statusline fable off` stops it. See [Privacy & Security](#privacy--security) for the exact payload.\n\nIf you already have a status line, yours is kept and wrapped: `statusLine` is a single command slot, so Recall never claims it without giving it back.\n\n### Git Correlation\n\nEvery session links to commits authored in its working directory during its time window. Reverse-map any commit back to the session that produced it.\n\n```bash\nrecall correlate\nrecall blame <sha>\n```\n\n### Auto-Tagging\n\nLet Claude label your sessions automatically. Two modes: **MCP mode** (zero-setup, runs through your existing Claude Code subscription at no extra cost) or **BYOK** (paste your own Anthropic API key). Off by default, fully opt-in.\n\n### MCP Server (38 tools)\n\nExpose Recall to Claude Desktop, Claude Code, or any MCP client as native tools. **16 read tools always on**, **22 write tools** opt-in with rate limiting and append-only audit logging.\n\n```bash\nrecall mcp\nrecall mcp --allow-writes\n```\n\n<div align=\"center\">\n\n<img src=\"https://cdn.clauderecall.com/marketing/mcp-server-demo.gif?v=hd3\" alt=\"Claude calling Recall as native MCP tools: search and get_session executing live\" width=\"900\">\n\n<sub>Claude searches your history, pulls context, and decides: no copy-paste.</sub>\n\n</div>\n\n### Collections, Tags and Notes\n\nHand-curated hierarchical collections that cut across projects. Flat tags. Markdown notes per session. Aliases. Pins. Cross-session diff. Every write is reversible: three-layer durability with plain-text mirrors on disk.\n\n<div align=\"center\">\n\n<img src=\"https://cdn.clauderecall.com/marketing/collections.gif?v=hd3\" alt=\"Collections panel: Auth System, Database Migrations, React Refactor, API Design, Deployment Issues; drag a session card into a collection\" width=\"540\">\n\n<sub>Drag-to-organize. Collections cut across projects.</sub>\n\n</div>\n\n### Web UI\n\nDark-mode three-pane layout. **Virtualized transcript** (10,000-message sessions open instantly). `Cmd+K` command palette. Cross-session diff. First-60-seconds onboarding tour. Export to markdown, HTML, or print-ready PDF.\n\n<div align=\"center\">\n\n<img src=\"https://cdn.clauderecall.com/marketing/tui-demo.gif?v=hd3\" alt=\"Full-screen terminal UI: sessions list with live preview pane, slash-to-filter\" width=\"900\">\n\n<sub>Or stay in the terminal. <code>recall tui</code> ships the same library as a full-screen terminal app: slash to filter, arrow keys to navigate, live preview.</sub>\n\n</div>\n\n### Rediscovery (\"For you\")\n\nThree rotating cards in the left pane surface forgotten sessions worth revisiting: a 60+-day-old session that overlaps with what you've been working on, your top-cost session this week, and the session that authored your current `HEAD`.\n\n```bash\nrecall digest\n```\n\n### IDE Extension\n\n**VS Code, Cursor, Windsurf, VS Code Insiders.** Tag terminal tabs from inside your editor; terminal names sync to Recall so sessions get meaningful aliases with zero CLI ceremony, live as you rename tabs.\n\n```bash\nrecall install-extension\n```\n\n<br />\n\n<details>\n<summary><strong>More: secrets redaction, memory health, audit log, keyboard shortcuts...</strong></summary>\n\n<br />\n\n- **Secrets redaction.** API keys, auth tokens, passwords, private-key blobs are detected by pattern and replaced with placeholders **before** text lands in the searchable index or any export. Original JSONLs untouched.\n- **Memory health scores.** Every session gets a freshness score; surfaces stale data so you know when to re-run a backfill.\n- **MCP audit log.** Every write tool call lands in `mcp_audit_events` with status (ok / error / rate_limited). Pure local, no telemetry.\n- **First-60-seconds onboarding.** 3-step modal demos the moat (`recall context <id> | claude`) the moment you open the web UI.\n- **Cmd+K command palette.** Jump to any session, action, or setting in one keystroke.\n- **Multi-select sessions.** `Cmd+Click` toggle, `Shift+Click` range, right-click to copy IDs.\n- **Three-layer durability.** Every write goes to SQLite + an append-only history column + a plain-text mirror on disk. Source JSONLs at `~/.claude/projects/` are strictly read-only.\n\n#### Keyboard Shortcuts\n\n| Key | Action |\n|---|---|\n| `/` | Focus search |\n| `?` | Open Command Center |\n| `Cmd+K` / `Ctrl+K` | Command palette |\n| `Esc` | Close / clear / dismiss |\n| `n` / `p` | Next / previous search match |\n| `c` | New collection |\n| `Cmd+Shift+A` | Add session to collection |\n| `Cmd+Enter` | Save note |\n\n</details>\n\n<br />\n\n---\n\n<br />\n\n<div align=\"center\">\n\n<img src=\"https://cdn.clauderecall.com/marketing/vs-obsidian.gif?v=hd4\" alt=\"Side-by-side: Obsidian vault on the left, Claude Recall TUI on the right showing 247 sessions across 8 projects with live preview\" width=\"900\">\n\n<sub>People sometimes ask if this is \"Obsidian for Claude Code.\" It is not. A general note-taking app cannot watch your filesystem for new sessions, index JSONLs into FTS5 + vector search, expose those sessions as MCP tools, or pipe a session back into Claude with one command. Claude Recall is built specifically for the loop you actually run.</sub>\n\n</div>\n\n<br />\n\n## Quick Start\n\n### Install\n\n```bash\nnpm install -g @clauderecallhq/cli\n```\n\n### Update\n\n`recall update` has **two modes**: `--global` installs the latest published package, `--local` rebuilds a source checkout.\n\n```bash\nrecall update --global   # install the latest PUBLISHED package\nrecall update --local    # rebuild a SOURCE CHECKOUT (pull + build + restart)\nrecall update            # auto: checkout -> local, anything else -> global\n\nrecall update --yes      # skip the prompt (scripts, CI)\nrecall update -n         # show the plan, run nothing\nrecall --version         # confirm what you are on\n```\n\n#### Global mode\n\nThe normal one. Recall reads the path this copy resolved through and runs the one command that matches your package manager:\n\n| How you installed | What `--global` runs |\n|---|---|\n| npm (including nvm / fnm / volta) | `npm install -g @clauderecallhq/cli@latest` |\n| pnpm | `pnpm add -g @clauderecallhq/cli@latest` |\n| yarn | `yarn global add @clauderecallhq/cli@latest` |\n| bun | `bun add -g @clauderecallhq/cli@latest` |\n| Claude Code plugin | `npm`, with a warning that `/plugin` is the real fix |\n| anything unrecognised | `npm`, as the safe default |\n\n**`--global` works from anywhere, including inside a source checkout.** Detection chooses the default; it is never a wall. Inside a checkout it warns that a global install replaces an `npm link` symlink to your working tree, then does what you asked.\n\nAfter a global update, restart the daemon so it picks up the new build. A running daemon keeps executing the code it started with:\n\n```bash\nrecall stop && recall start\n```\n\n#### Local mode\n\nFor a clone of the repo. One step instead of four:\n\n```bash\nrecall update --local\n#  git pull --ff-only\n#  npm run build\n#  recall stop && recall start\n```\n\nIt refuses before touching anything if the checkout has uncommitted changes, if HEAD is detached, if the branch has no upstream, or if the branch has diverged. **It never stashes**, because a stash pop can apply another session's work over your tree. When there is nothing to pull it still rebuilds and restarts, because local commits that were never built are the most common cause of \"my change didn't take\".\n\nUpdating never touches your data in either mode. The SQLite index at `~/.recall/` survives, schema migrations run on the next daemon start, and `~/.claude/projects/` is read-only to Recall in every version.\n\n> `recall update` installs a newer CLI build. `recall upgrade` opens the Pro pricing page. Pro is a one-time purchase with lifetime updates, so `recall update` behaves identically on Free and Pro.\n\n### Start\n\n```bash\n# Start the background daemon (file watcher + local HTTP server)\nrecall start\n\n# Open the web UI\nrecall open\n```\n\nThe daemon watches `~/.claude/projects/` for new and changed session files, indexes them into a local SQLite database at `~/.recall/db.sqlite`, and serves the web UI on a random `127.0.0.1` port.\n\n### Browse\n\nTwo interactive surfaces, both work without the daemon (they read SQLite directly):\n\n```bash\nrecall                    # smart welcome dashboard with status + slash command palette\nrecall tui                # full terminal UI: arrow-key browse, live search, preview pane\n```\n\n`recall` (no args) prints a branded splash with version / daemon / sessions / license status and drops into a slash-aware prompt; type `/` to browse 49 commands across 69 rows, grouped by purpose (Setup, Browse, Pipe to Claude, Threads, Inference, Analytics, Daemon, Sharing, Diagnostics, Maintenance, Integrations, Pro & License, Feedback). The palette is kept in lockstep with the CLI by `test/cli-palette-parity.test.mjs`, which diffs it against Commander's registry in both directions.\n\n`recall tui` mounts a full-screen terminal app modeled on `lazygit` and `k9s`. Arrow keys to navigate, `/` to filter, `enter` to view the full transcript, `o` to open the selected session in the browser, `q` to quit.\n\n### Explore\n\n```bash\nrecall projects           # list projects with session counts\nrecall list               # 30 most-recent sessions\nrecall list -p Tools      # filter by project\nrecall show <id>          # pretty-printed transcript\nrecall search \"auth bug\"  # full-text search\n```\n\n### The Moat\n\n```bash\n# Pipe a past session into a new Claude Code conversation\nrecall context abc12345 | claude\n\n# With a custom instruction\nrecall context abc12345 --prelude \"continue where we left off\" | claude\n\n# Just the last 2 hours\nrecall context abc12345 --since 2h | claude\n```\n\n<br />\n\n<div align=\"center\">\n\n<img src=\"https://cdn.clauderecall.com/marketing/product-demo.gif?v=hd3\" alt=\"Pipe past session context back into Claude with one command\" width=\"720\">\n\n<sub>Claude resumes with full prior context. One command. No re-explaining.</sub>\n\n</div>\n\n### How Claude Recall integrates with Claude Code\n\nDon't think of Claude Recall as a *separate* tool you context-switch to. It's **Claude Code's memory layer**: you reach it from inside any session through four surfaces, in increasing power:\n\n**1. Bash tool: always available, zero setup.**\n\nInside any Claude Code conversation, just say *\"run `recall search auth bug`\"* (or any other recall command). The Bash tool executes it; output lands in the conversation. Works the moment you `npm install -g @clauderecallhq/cli`. No config.\n\n**2. Slash commands (skills): one-tap workflows.**\n\nWhen Claude Recall is installed as a Claude Code plugin, typing `/` in Claude Code surfaces ready-made workflows:\n\n| Slash command | What it does |\n|---|---|\n| `/claude-recall:recall <query>` | Search past sessions and pull relevant ones in as context |\n| `/claude-recall:context <id>` | Load one specific session's full transcript |\n| `/claude-recall:neighborhood <id>` | Bundle parents + children + citations + similar |\n| `/claude-recall:tag <id> <tag>` | Tag a session for later retrieval |\n| `/claude-recall:alias <id> <name>` | Rename a session |\n| `/claude-recall:threads-sync` | Capture currently active terminals into a thread |\n| `/claude-recall:thread-scan` | Auto-detect threads across historical sessions |\n| `/claude-recall:setup` | Verify installation and MCP connection |\n\n**3. MCP server: the model calls Recall directly.**\n\nThe most powerful surface. With `recall mcp` registered as an MCP server in Claude Code, the model itself decides when to call Recall mid-conversation. Ask *\"have I solved this auth bug before?\"* and Claude calls `search` autonomously, gets results, and uses them. Ask *\"pull yesterday's context\"* and it calls `context_for_session`. No commands, no slash menu, pure intent.\n\n**4. Piping into a fresh `claude`: start tomorrow with yesterday's context.**\n\nThe cross-session continuation pattern, run from your shell:\n\n```bash\nrecall neighborhood abc12345 | claude   # bundle related sessions, start fresh chat\nrecall context abc12345 | claude        # one specific session, start fresh chat\n```\n\nUse case: you finish work Monday night, restart Tuesday morning with a clean Claude Code window, and want it to know what happened yesterday without re-explaining.\n\n### MCP Server\n\nPoint any MCP client at Recall and the model calls it as native tools:\n\n```json\n{\n  \"mcpServers\": {\n    \"recall\": {\n      \"command\": \"claude-recall-mcp\"\n    }\n  }\n}\n```\n\n<details>\n<summary><strong>Available MCP tools (38 total)</strong></summary>\n\n<br />\n\n**Read tools (16, always available):**\n\n| Tool | Purpose |\n|---|---|\n| `list_projects` | Every indexed project with session/message counts |\n| `list_sessions` | Recent sessions; filters: project, tag, date range |\n| `list_tags` | Tag cloud with counts, most popular first |\n| `search` | Full-text search with `#tag` support; BM25 + optional vector fusion |\n| `find_similar_sessions` | Semantic similarity via vector embeddings (Pro) |\n| `semantic_status` | Health snapshot: model, worker, queue depth (Pro) |\n| `get_session` | Full transcript (accepts 8+ char id prefix) |\n| `context_for_session` | Condensed markdown export, ready to inject |\n| `recall_neighborhood` | Bundle parents/children/citations/similar as one budget-bounded markdown blob |\n| `doctor` | Read-only health snapshot: db size, WAL, FTS5 fragmentation, integrity check |\n| `thread_list` | All threads, newest first; can exclude archived |\n| `thread_get` | Full thread detail with every session edge |\n| `thread_for_session` | Non-archived threads referencing a session |\n| `bucket_list` | Inventory of local document buckets: names, document/chunk counts, top headings |\n| `bucket_search` | Semantic search inside one bucket; best-matching passages with heading path |\n| `bucket_expand` | Chunks surrounding a search hit, in original document order |\n\n**Write tools (22, opt-in via `--allow-writes`):**\n\n| Tool | Purpose |\n|---|---|\n| `list_sessions_to_tag` | Surface untagged sessions for review (auto-tag flow) |\n| `apply_tags` | Add tags to a session (merge-mode, never deletes) |\n| `add_tag` / `remove_tag` | Tag management; removals logged in append-only log |\n| `set_alias` | Human-friendly session name; previous alias archived |\n| `append_note` | Add markdown to session note; separated by `---` |\n| `create_collection` | New collection; optional parent, icon, color |\n| `add_session_to_collection` | Idempotent collection membership |\n| `remove_session_from_collection` | Remove session; logged in append-only log |\n| `thread_create` | Create thread, optionally seed with origin session |\n| `thread_add_session` | Attach session; role=origin or child |\n| `thread_set_parent` | Change parent within thread; null clears parent |\n| `thread_remove_session` | Detach session from thread |\n| `thread_rename` | Change thread display name |\n| `thread_close` / `thread_reopen` | Mark thread as closed or reopen |\n| `thread_archive` | Soft-delete thread; hidden by default |\n| `thread_merge` | Move all edges from source to dest, delete source |\n| `thread_split` | Peel sessions into new thread |\n| `sync_active_sessions` | Capture every Claude Code terminal currently open in a repo into one thread, so parallel sessions stay organized |\n| `generate_thread_titles` | Generate coherent titles for sessions in thread DAG |\n| `optimize` | WAL checkpoint, FTS5 segment merge, planner stats refresh; optional VACUUM |\n\nAll writes are rate-limited (default 60/min), zod-validated, and audited to `~/.recall/audit/`.\n\n</details>\n\n<br />\n\n---\n\n<br />\n\n## How It Works\n\n```text\n~/.claude/projects/**/*.jsonl   <-- Claude Code session files (read-only to Recall)\n        |\n        v  chokidar file watcher\n~/.recall/db.sqlite             <-- indexed database (FTS5 + sqlite-vec 768d)\n        |\n        +-- background embedding worker (idle-aware, transactional)\n        +-- git correlator (read-only 'git log' scoped to session cwd)\n        +-- semantic / auto-tag scanner (opt-in, off by default)\n        |\n  +-----+-----+\n  |           |\n  CLI         HTTP server (Hono, 127.0.0.1 only)\n  |           |\n  recall ...  Web UI (React + Tailwind SPA, Vite-bundled)\n              MCP server (stdio, 38 tools, opt-in writes)\n```\n\n### Data stays local\n\n| Path | What |\n|---|---|\n| `~/.recall/db.sqlite` | Indexed database (projects, sessions, messages, FTS5, vectors, aliases, notes, tags, collections, threads, semantic summaries, commit links, usage rollups, audit logs) |\n| `~/.recall/aliases.json` | Plain-text mirror of every alias with full edit history |\n| `~/.recall/notes/<session>.md` | One markdown file per session note |\n| `~/.recall/tags.json` | Current tag state + append-only event log |\n| `~/.recall/collections.json` | Current tree state + append-only event log |\n| `~/.recall/semantic/<id>.json` | Per-session summary + keywords (semantic mode) |\n| `~/.recall/license.jwt` | Activated Pro license (offline-validatable, dead-man clause) |\n\n<br />\n\n---\n\n<br />\n\n## Privacy & Security\n\n<div align=\"center\">\n\n<img src=\"https://cdn.clauderecall.com/marketing/privacy-trust.gif?v=hd4\" alt=\"Local-first design: daemon binds to 127.0.0.1, session content stays on your machine\" width=\"640\">\n\n</div>\n\n<br />\n\nClaude Recall is **local-first by design**, not as an afterthought.\n\n- **The daemon binds to `127.0.0.1` only.** Never `0.0.0.0`, never a public interface.\n- **Indexing, search, and context re-injection are fully local.** The file watcher, indexer, and search engine send nothing anywhere. Session-derived content can leave your machine through exactly three features, all listed in the table below and all idle until you use them: sharing a recap card (uploads the rendered card with its title and description), optional AI tagging (sends session excerpts to Anthropic using your own API key), and ✨ Generate title/synopsis (spawns `claude -p` on your own account with the session text). A fourth path, the optional Fable status-line column, sends a credential but **no** session content.\n- **No cloud. No account.** Your data lives at `~/.recall/` and nowhere else.\n- **Source sessions are never modified.** Claude Code's JSONL files at `~/.claude/projects/` are strictly read-only to Recall.\n- **Never-delete-data invariant.** Every write enforces three independent durability layers: SQLite with history columns, plain-text mirror on disk, and source JSONLs untouched. Renaming, clearing, or removing anything is always additive; the prior value is archived, never destroyed.\n\nEverything Recall can send over the network, and exactly what triggers it:\n\n| Trigger | Endpoint | Exact payload | What it gets | Automatic? |\n|---|---|---|---|---|\n| `recall activate <key>` | `clauderecall.com/api/license/activate` | `license_key`, `machine_fingerprint` (SHA-256 of hostname + username + OS + arch), `instance_name` (your hostname plus a random suffix) | A signed JWT for offline validation | No - only when you activate |\n| `recall trial <CODE>` / activating a promo code | `clauderecall.com/api/trial/cli-redeem` | `promo_code`, **`email`** (the address you type at the prompt), `machine_fingerprint`, `instance_name`, `referral_source` | A trial license | No - only when you redeem |\n| Pro license revocation check | `clauderecall.com/api/license/check` | `license_key` - the key itself, not a fingerprint | OK / revoked status | Yes - 30s after daemon start, then every 24h, once licensed |\n| `recall semantic install` (or the Vectorize dialog's install button) | `registry.npmjs.org`, then `huggingface.co` → `us.aws.cdn.hf.co` | Nothing about you | The `bge-base-en-v1.5` model files. **The four model files and the GGUF are SHA-256 pinned and deleted on mismatch.** On linux/x64 only, npm additionally pulls CUDA binaries for `onnxruntime-node` from `api.nuget.org` / `aiinfra.pkgs.visualstudio.com` - that transitive download is **not** hash-verified by us | No - only when you opt in to vector search |\n| Anonymous install ping | `clauderecall.com/api/install-ping` | `event`, `version`, `platform`, `arch`, `month`, `nonce` (rotating; no cross-month linkage, no fingerprint, no PII) | Nothing | Yes - once a month, only after `recall telemetry on` (off by default; auto-declines in CI and non-TTY) |\n| Share a recap card | `clauderecall.com/api/cards` | `kind`, `title`, `description`, `width`, `height`, `pngBase64` (the rendered image). A session card's title, and text drawn into the image, can derive from your first message | A public recap URL | No - only when you click Share |\n| Social share buttons | The network you pick | The recap URL and caption | Nothing | No - only when you click |\n| Feedback form | `clauderecall.com/api/feedback` | `score`, `comment` (your message, verbatim), `surface`, `version`, `os`, `trigger_kind`, **`license_jwt`** - so Pro feedback is attributable to your license | Nothing | No - only when you submit |\n| AI tagging with your own Anthropic API key | `api.anthropic.com/v1/messages` | Your top-50 tag vocabulary **across the whole database**, the session's `current_tags`, the project **folder name** (not the full path), `alias`, `git_branch`, `first_user_message` (**in full - not truncated**), and `message_sample` (5 messages sampled across the session, first 400 chars of each). Note `alias` carries your VS Code tab name, which may contain client or project names | Suggested tags | Off by default; needs your key and an explicit enable. With autopilot also switched on, tagging then runs in the background and is kicked on daemon start |\n| Fable weekly column in the status line | `api.anthropic.com/api/oauth/usage` | `Authorization: Bearer <your Claude Code OAuth token, read from the macOS login keychain>`. No session content is sent | Your Fable weekly usage | **Off by default, macOS only.** After `recall statusline fable on`, at most once every 15 minutes while a session renders |\n| ✨ Generate title / synopsis | Your own `claude` CLI | The session text being summarized, via a locally spawned `claude -p` under your own account | The generated text | No - only when you click Generate |\n| `recall update` | Your own package manager → `registry.npmjs.org` | Nothing about you. Recall spawns `npm` / `pnpm` / `yarn` / `bun` with `@clauderecallhq/cli@latest`; the package manager makes the request under its own config and registry settings | A newer CLI build | No - only when you run it, and it prompts before spawning anything unless you pass `--yes` |\n| `recall upgrade` / `recall trial` with no code | Opens your browser at `clauderecall.com/pricing` | Nothing is sent by Recall. Your browser makes the request | The pricing page | No - only when you run it |\n\nActivate is required for Pro features. Telemetry is opt-in. On a fresh install with nothing activated, enabled, or clicked, Recall makes no network calls at all; every call above is unlocked only by the action named in its Trigger column. Indexing, search, and context re-injection stay fully local either way. Full telemetry disclosure: [clauderecall.com/telemetry](https://clauderecall.com/telemetry).\n\n<br />\n\n---\n\n<br />\n\n## Full CLI Reference\n\n<details>\n<summary><strong>Click to expand</strong></summary>\n\n<br />\n\n```bash\n# Surfaces\nrecall                    # smart welcome dashboard + slash command palette (no args)\nrecall tui                # interactive terminal UI for browsing and search\n\n# Lifecycle\nrecall start              # start daemon (watcher + local HTTP)\nrecall stop               # stop daemon\nrecall open               # open web UI (starts daemon if needed)\nrecall status             # db + daemon health\n\n# Indexing\nrecall index              # scan for new/changed session files\nrecall index --force      # reindex everything\n\n# Explore\nrecall projects           # list projects with session counts\nrecall list               # 30 most-recent sessions\nrecall list -p Tools      # filter by project substring\nrecall list -n 100        # higher limit\n\n# Read\nrecall show <id>          # pretty transcript, auto-paged\nrecall show <id> --raw    # raw JSONL\nrecall show <id> --no-pager\n\n# Search\nrecall search \"zod schema\"\nrecall search \"auth\" -p MyProject\nrecall search bug -n 50\n\n# Context re-injection\nrecall context <id>                              # condensed markdown\nrecall context <id> | pbcopy                     # to clipboard (macOS)\nrecall context <id> | claude                     # into new Claude session\nrecall context <id> --full                       # full transcript\nrecall context <id> --since 2h                   # last 2 hours only\nrecall context <id> --prelude \"continue this\"    # prepend instruction\nrecall context <id> --subagents                  # include subagent messages\n\n# Stats\nrecall stats <id>              # tokens + dollars for one session\nrecall stats --project Tools   # per-project rollup\nrecall stats --days 7          # 7-day overview\nrecall stats --backfill        # one-shot usage backfill\n\n# Git correlation\nrecall correlate               # link sessions to commits\nrecall blame <sha>             # commit -> session reverse lookup\n\n# Semantic / vector search (Pro)\n# Embedder model is opt-in — `npm install` does NOT auto-download it.\nrecall semantic install        # download on-device embedding model (~110MB)\nrecall semantic status         # model + backfill progress + auto-extract state\nrecall semantic reindex        # re-embed everything\nrecall semantic migrate        # re-embed existing corpus under a different backend (Pro)\nrecall semantic rollback-migration --force  # restore prior corpus within 30-day window\nrecall semantic prune-rollback --force      # drop backup table early\nrecall extract-outputs --project <name>  # extract on demand through Claude (Pro); manual-only — background spend is hard-blocked\nrecall similar <id>            # cosine kNN over session chunks\n\n# Threads  (`recall thread` and `recall threads` are the same command)\nrecall threads list            # all threads, newest first\nrecall threads new <name>      # new thread\nrecall threads link <session-id> --thread <id>   # attach a session to a thread\nrecall threads sync            # capture sessions running in this repo right now\nrecall threads scan            # auto-detect parent-child links\nrecall threads show <id>       # header + session tree\nrecall threads merge <src> --into <dest>\nrecall threads split <id> --sessions s1,s2 --name \"New\"\n\n# Rediscovery\nrecall digest                  # today's \"For you\" picks\nrecall digest --json           # machine-readable\n\n# MCP server\nrecall mcp                     # stdio, read-only\nrecall mcp --allow-writes      # opt-in write tools\n\n# Pro license\nrecall activate <key>          # one-time activation, offline forever\nrecall activate RECALL7DAY     # CLI-direct 7-day trial — prompts for email, no browser\nrecall trial RECALL7DAY        # same, alternative entry point\nrecall license                 # show license status\n\n# IDE extension\nrecall install-extension       # auto-install for VS Code / Cursor / Windsurf\n\n# Document buckets\nrecall bucket create <name>              # a searchable bucket of your own local docs\nrecall bucket ingest <name> --path ./docs   # explicit and manual; nothing embeds in the background\nrecall bucket search <name> \"query\"      # search it from any repo\nrecall bucket list                       # buckets and their sizes\n\n# Live terminals\nrecall fleet                   # context-window usage for every open terminal, by repo\nrecall statusline              # Claude usage caps (5h + weekly) in the Claude Code status line\nrecall correlator debug        # how the daemon is matching terminals to sessions\nrecall correlator audit --fix  # clear bad terminal-name aliases\nrecall name <id> <name>        # rename a session (or its terminal tab)\n\n# Sharing\nrecall share <id>              # session as a PNG card\nrecall wrapped <month>         # monthly recap card\n\n# Keeping the CLI current\nrecall update --global         # install the latest published package (works from anywhere)\nrecall update --local          # rebuild a source checkout: pull + build + daemon restart\nrecall update                  # auto: checkout -> local, anything else -> global\nrecall update --dry-run        # show the plan, run nothing\nrecall upgrade                 # NOT an update: opens the Pro pricing page\n\n# Maintenance\nrecall health                  # memory health scores per project\nrecall doctor                  # DB + pipeline + tab-name invariant audit\nrecall optimize                # WAL checkpoint + FTS5 merge (--vacuum to reclaim pages)\nrecall paste                   # archive clipboard content into Recall (opt-in)\nrecall audit-secrets           # scan index for residual secrets\nrecall archive list            # retention: what would be archived\nrecall archive run --before 2026-01-01 --dry-run\nrecall archive restore <id>    # archiving is reversible; nothing is deleted\nrecall purge-phantoms          # drop rows from historical background `claude -p` spawns\nrecall db drop-table <name>    # only tables `recall doctor` flagged as reclaimable\nrecall mcp-prune               # kill stuck MCP children holding SQLite open\nrecall telemetry status        # the opt-in install ping; OFF unless you turned it on\nrecall titles                  # audit session titles in the current project\nrecall import-vscode-state     # backfill tab names from editor workspace state\nrecall feedback                # send a 1-5 rating to the team\n```\n\n</details>\n\n<br />\n\n---\n\n<br />\n\n## Tech Stack\n\n| Layer | Technology |\n|---|---|\n| CLI + daemon | TypeScript (strict), Node 22+, ESM |\n| HTTP server | Hono + @hono/node-server |\n| Database | `node:sqlite` (Node's built-in SQLite) with FTS5 full-text search |\n| Vector store | sqlite-vec (768d, on-device) |\n| Embeddings | @huggingface/transformers (`bge-base-en-v1.5` ONNX) |\n| File watcher | chokidar |\n| CLI parsing | commander |\n| MCP server | @modelcontextprotocol/sdk (stdio) |\n| Validation | zod |\n| Auth | jose (offline-validatable signed JWT licenses) |\n| Web UI | Vite 8 + React 19 + Tailwind CSS |\n| Data fetching | @tanstack/react-query |\n| Virtualization | @tanstack/react-virtual |\n| Markdown | marked + highlight.js + DOMPurify |\n\n<br />\n\n---\n\n<br />\n\n## Supported Platforms\n\nClaude Recall is a Node.js CLI with a handful of native dependencies: `sqlite-vec` (vector search) and `sharp` (share-card image rendering), plus the optional `@huggingface/transformers` for semantic search. Each ships as a family of per-architecture packages (for example `sqlite-vec-darwin-arm64`, `@img/sharp-linux-x64`) that npm resolves at install time to match the machine running the install. No compile toolchain required.\n\nBecause the binding is chosen at install time, not at runtime, the thing that breaks Recall is reusing an existing `node_modules` after switching Node's architecture, not switching Node itself. If you move a checkout between an Intel Node and an Apple Silicon Node (or between x64 and arm64 generally), reinstall dependencies with the new Node on PATH rather than carrying the old `node_modules` over. `recall doctor` detects the mismatch and points back here.\n\n| Platform | Tier | Status |\n|---|---|---|\n| **macOS** arm64 (Apple Silicon, M1+) | Tier 1 | Tested in pre-publish smoke test |\n| **macOS** x64 (Intel) | Tier 1 | Tested in pre-publish smoke test |\n| **Linux** x64 (glibc, kernel 4.x+) | Tier 1 | Tested on every CI run (Node 22, 24) |\n| **Linux** arm64 (glibc) | Tier 2 | Best-effort. Native deps ship arm64 prebuilds; report issues if you hit one |\n| **Windows** x64 (Windows 10+) | Tier 1 | Tested in pre-publish smoke test |\n| Windows arm64 / Linux musl (Alpine) / 32-bit | Unsupported | Native deps lack reliable prebuilds; install will be rejected |\n\n**Node:** 22 LTS or 24 LTS. Node 20 and earlier are unsupported (declared in `engines.node`).\n\n**Semantic search is optional.** The on-device embedder is the only feature that loads the native ONNX runtime. The model (~110MB) is opt-in: install on demand with `recall semantic install`. Core CLI features (search, list, context, daemon, MCP) work on every supported platform regardless of whether the embedder is installed. If the embedder fails to load on your platform, you get a clear error pointing here, and the rest of Claude Recall keeps working.\n\n<br />\n\n---\n\n<br />\n\n## Distribution\n\nClaude Recall ships on every surface a developer already works in.\n\n| Surface | Identity | Install |\n|---|---|---|\n| **npm** (CLI + MCP) | [`@clauderecallhq/cli`](https://www.npmjs.com/package/@clauderecallhq/cli) | `npm i -g @clauderecallhq/cli` |\n| **VS Code Marketplace** | [`clauderecallhq.clauderecall-vscode`](https://marketplace.visualstudio.com/items?itemName=clauderecallhq.clauderecall-vscode) | Search \"Claude Recall\" in Extensions |\n| **MCP Registry** | [`com.clauderecall/recall`](https://registry.modelcontextprotocol.io/v0/servers?search=clauderecall) | Auto-discovered by MCP clients |\n| **Claude Code plugin** | `claude-recall` | `/plugin marketplace add …claude-recall-plugin.git` then `/plugin install claude-recall@claude-recall` |\n| **Website** | [clauderecall.com](https://clauderecall.com) |   |\n\nThe npm package ships **the CLI and the MCP server**. The VS Code extension is a thin companion that talks to the local daemon over `127.0.0.1`. The MCP Registry and Claude Code plugin both point back to the npm package: one source of truth, one update pipeline.\n\nTo install the Claude Code plugin, add the marketplace then install (the `.git`\nsuffix is required: Claude Code git-clones the marketplace; a bare URL will not\nresolve):\n\n```\n/plugin marketplace add https://gitlab.com/clauderecallhq/claude-recall-plugin.git\n/plugin install claude-recall@claude-recall\n```\n\n<br />\n\n---\n\n<br />\n\n## Pricing\n\nOne tier is free forever. One tier is a **one-time** purchase that works offline for life, even if we disappear. One tier is a conversation.\n\n### Free\n\n**$0.** Forever. No signup. No credit card.\n\n- Full indexing of every `~/.claude/projects/` JSON-L\n- CLI: `list`, `show`, `projects`, `status`\n- Web UI: browse projects, read transcripts, copy code\n- Three-layer durability\n\n```bash\nnpm install -g @clauderecallhq/cli\n```\n\n### Pro (daily driver)\n\n**$49.69 one-time.** Pay once. Offline forever. Lifetime updates. Dead-man clause included. Never a subscription.\n\n- Full-text search (FTS5 BM25)\n- On-device semantic vector search (768d, RRF fusion)\n- `recall context` re-injection, **the moat**\n- MCP server (Claude Desktop / Claude Code native tools)\n- VS Code / Cursor / Windsurf extension\n- Aliases, tags, markdown notes, pins, date filters, cross-session diff\n- Export: clean markdown, self-contained dark-mode HTML, print-ready\n- Virtualized transcript (10k+ message sessions open instantly)\n- Auto-tagging (API-key + MCP modes)\n- Secrets redaction (client-side scrub of keys, tokens, passwords pre-index)\n- **Every future personal-use feature.** One price, lifetime updates.\n\n[**Buy Pro for $49.69 (one-time, lifetime)**](https://clauderecall.com/pricing)\n\n### Enterprise\n\n**Contact us.** Built for 50+ developer organizations.\n\n- Shared session library with end-to-end encrypted team sync\n- Team-wide tag conventions\n- Local audit log (compliance-grade, not surveillance)\n- SSO + per-project access control\n- Priority support, named engineer\n- Optional on-prem deployment\n\n[hello@clauderecall.com](mailto:hello@clauderecall.com)\n\n<br />\n\n### How it compares to what you already pay\n\n| Tool | Price |\n|---|---|\n| **Claude Recall** | **$49.69 one-time** |\n| Claude Code | $20 / mo |\n| Cursor | $20 / mo |\n| Raycast Pro | $8 to $16 / mo |\n| GitHub Copilot | $10 / mo |\n\n<sub>Competitor prices subject to change.</sub>\n\n<br />\n\n### The dead-man clause\n\nYour Pro license validates against our server exactly once, at activation. After that, Recall works **offline forever**. If `clauderecall.com` ever disappears, every existing license stays valid; we'll publish the validation secret if we ever shut down, so you're never stranded.\n\nFull pricing FAQ: **[clauderecall.com/pricing](https://clauderecall.com/pricing)**\n\n<br />\n\n---\n\n<br />\n\n## Roadmap\n\n- [x] CLI, daemon, web UI, full-text search\n- [x] Context re-injection (the moat)\n- [x] Aliases, notes, tags, pins\n- [x] Cross-session diff\n- [x] VS Code / Cursor / Windsurf extension\n- [x] MCP server (read-only)\n- [x] Collections (hierarchical, cross-project)\n- [x] Auto-tagging (MCP + BYOK modes)\n- [x] Cost / token analytics\n- [x] Git correlation\n- [x] Cmd+K command palette\n- [x] Bidirectional MCP write tools (rate-limited + audited)\n- [x] First-60-seconds onboarding\n- [x] Rediscovery surface (\"For you\" cards)\n- [x] **On-device vector search** (768d ONNX embeddings, RRF fusion)\n- [x] **Threads.** DAG view, drag-to-reparent, bulk title generation\n- [x] **Pro license + dead-man clause** (offline-validatable JWT)\n- [x] Memory health scores\n- [x] Claude Code plugin manifest\n- [x] Public launch at clauderecall.com\n- [ ] Team features (E2E-encrypted sync, SSO, audit log)\n- [ ] Enterprise tier (on-prem, named-engineer support)\n\n<br />\n\n---\n\n<br />\n\n<div align=\"center\">\n\n<a href=\"https://gitlab.com/clauderecallhq/clauderecallhq/-/blob/main/CHANGELOG.md\">\n<img src=\"https://clauderecall.com/og/changelog.png\" alt=\"Recent Releases\" width=\"640\">\n</a>\n\n</div>\n\n<br />\n\nThe highlights below are the user-facing changes from recent versions. The CLI, MCP server, and daemon ship together in the npm package and are versioned independently; see the [**full changelog**](https://gitlab.com/clauderecallhq/clauderecallhq/-/blob/main/CHANGELOG.md) for every entry, including dependency and internal updates.\n\n**0.124 to 0.127** - **Survives an architecture switch.** Changing Node architecture under an existing `node_modules` used to crash *every* `recall` command at module load, including `recall stop` and `recall doctor` - the two commands you need to recover. Now you get a plain-English warning before each command, `doctor` reports a full Architecture section even when the database cannot open, and image commands explain the mismatch instead of surfacing a native library's own advice. **Security:** the `RECALL_API_BASE` development override is now pinned to loopback, so a hostile environment variable can no longer redirect license traffic off-machine, and the daemon's `claude -p` spawns no longer pass `--permission-mode bypassPermissions` - they run under your own permission configuration instead of overriding it. New optional **Fable weekly column** in the status line (off by default, macOS only; it reads your Claude Code credential from the keychain and calls Anthropic - see the network table above). Also: a crashing panel no longer blanks the whole web UI, and Vectorize can be cancelled promptly. **Correction:** the network-activity table above has been rewritten to name every payload field exactly; several earlier rows understated what they send, and the optional Fable column was missing entirely.\n\n**0.123** - Security hardening: the embedder runtime can now only be installed or repaired from the CLI (`recall semantic install`); the web UI can no longer trigger a runtime install. The Vectorize dialog still detects a missing or broken runtime, but now shows the exact command with a copy button instead of running the install itself. Vectorizing also got faster: a real embedder thread cap (about half your cores by design), no more dead two-second pauses between sessions, and Stop responds within seconds instead of after everything in flight.\n\n**0.122** - Usage caps in the Claude Code status line: your 5-hour and weekly limits at the bottom of every session, for every account you use, not just the one you are signed into. Built entirely from the `rate_limits` data Claude Code already hands the status line; as shipped in 0.122 this involved no network calls and no credential reads. (0.124 later added an optional Fable column that does both, off by default - see above.)\n\n**0.120** - Transcript toggles that actually hide: tool calls, tool results, and plumbing rows each cycle through shown, collapsed, and fully hidden, with a receipt bar naming exactly what is withheld (\"447 hidden: 295 tool calls, 152 plumbing\") and one click to restore everything. PDF export got a fidelity overhaul: it now prints what the transcript is actually showing, honors your toggles, and typesets tables, symbols, timestamps, and spacing properly instead of producing a wall of monospaced text.\n\n**0.115 to 0.121** - The **Decisions** tab answers a question the product could not answer before: how many prompts did you personally type? Pick Today, 7d, 30d, or All time, per repository or across all of them, and get the count, a per-repo table, a sparkline, and a median active-hours-per-day tile. Claude Code writes tool results, notifications, and other machinery into the same `user` role your typing lands in (a raw count overcounted by about 14x on one measured day), so the filtering is the whole feature.\n\n**0.103** - One-click PDF export: any session view can now produce a clean, conversation-only PDF. MCP search responses include a short tip when results look thin, nudging the agent to retry with more specific wording or a project scope, so multi-turn lookups converge on the right session faster. License signing rotated to a fresh key; existing licenses keep validating unchanged, no action needed.\n\n**0.102** - FleetView: a live per-repository roster of your active Claude Code sessions with context fullness at a glance, so you can see which terminal is doing what and how full each context window is.\n\n**0.101** - Search results got measurably better: the ranking fusion that merges keyword and semantic lanes was retuned, improving top-5 relevance by 11.6 points on our internal retrieval benchmark. Also a supply-chain hardening pass: cleared an `adm-zip` CVE, deduped a nested `sharp`, and added a cross-platform supply-chain gate that runs before every release.\n\n**0.97–0.100** - Buckets: point Recall at any folder of documents (`recall bucket create / scan / search`) and search it with the same hybrid keyword + semantic retrieval the session index uses; worst-case retrieval quality improved from 0.300 to 0.775 Hit@5 during development. The embedding model now stays warm in long-lived processes, so repeat semantic queries skip the model reload entirely.\n\n**0.96** - Semantic search works again once your history gets big. Past a certain size the vector index would refuse to run (`corpus_too_large`) and quietly fall back to keyword search. The index is now sharded by project, so a scoped search only scans that project instead of your entire history, turning searches that used to be refused or hang into ~13–106 ms. Run `recall semantic migrate --partition` to switch over: it's proven on a real 201,931-vector corpus (zero vectors lost, ~3-minute migration, full backup + parity check before anything moves, all local, no telemetry). `recall semantic status` now reports the daemon's real embedder/worker state instead of a phantom \"not loaded.\" Vectorization is now strictly manual and button-only: live session activity never auto-enqueues embedding work, so the daemon no longer sits at \"warming up\" indefinitely or spends CPU in the background. A hard kill-switch also guarantees that no background `claude -p` process is ever spawned without an explicit, user-initiated action, so indexing and titling never quietly bill against your plan.\n\n**0.95.13** - Batch-spawned `claude -p` sessions from temp directories no longer flood the session/project lists with thousands of identical entries, and the daemon no longer exhausts file descriptors when those spawn dirs pile up. Spawn transcripts stay on disk; pass `?system=1` to view them.\n\n> Looking for a specific version or the complete history? The [**full changelog**](https://gitlab.com/clauderecallhq/clauderecallhq/-/blob/main/CHANGELOG.md) carries every release with `Added` / `Fixed` / `Internal` sections, in [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) format.\n\n<br />\n\n---\n\n<br />\n\n## License\n\nProprietary. Free tier is free forever for personal use. Pro is a one-time purchase with offline-validatable JWT and a dead-man clause: if `clauderecall.com` ever shuts down, every existing license stays valid and the validation secret will be published so you're never stranded. Full terms at [clauderecall.com/terms](https://clauderecall.com/terms).\n\n<br />\n\n---\n\n<br />\n\n<div align=\"center\">\n\n<img src=\"https://clauderecall.com/mark-scrollback-dark.svg\" alt=\"Claude Recall\" width=\"48\">\n\n<br />\n<br />\n\n**Claude Recall.** The memory layer for the agent you're steering.\n\n[Website](https://clauderecall.com) · [Install](https://www.npmjs.com/package/@clauderecallhq/cli) · [Issues](https://gitlab.com/clauderecallhq/clauderecallhq/-/issues)\n\n<br />\n\n<sub>Built by <a href=\"https://gitlab.com/clauderecallhq\">@clauderecallhq</a></sub>\n\n</div>",
  "bytes": 55882,
  "sha": "b82e5a6104e0a7248171b57834f93f832b1a2040063dafa127d43cb7048bfe97",
  "repo_slug": "",
  "fonte": "npm",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_com_clauderecall_recall_89ff432b/readme"
}