chat-recall

io.github.munhq由 GitHub 账号 munhq 发布v0.7.31更新于 Nov 3, 2026

One searchable history across every AI coding tool, with secret scanning and a shared task board.

已验证Streamable HTTP可网页运行知识与记忆开发者工具安全与监控

概览

AI 生成的概览

把各类 AI 编程工具的会话记录汇成一个可搜索的记忆库,并提供密钥扫描、代码改进建议和共享任务板,共 68 个 MCP 工具。

可以做什么
  • 跨 Claude Code、Codex、OpenCode、Cursor 等工具搜索、回放和对比历史会话,包括子代理记录、计划与任务
  • 读写共享记忆:决策记录、知识图谱三元组、键值状态和代理日记
  • 列出排序后的代码改进建议与 CLAUDE.md/技能建议,并可据此创建团队任务
  • 标记过去会话中粘贴过的凭据,并跟踪到轮换或忽略为止
  • 启动并给其他代理会话发消息,以及删除会话或将其排除出同步
适用场景
适合同时使用多个 AI 编程代理、希望它们共享同一份历史,从而在重复劳动前先查清此前做过什么、决定过什么的人。也适合需要泄露密钥告警和由代理发现驱动的任务板的团队。
运行要求
npm 包需要 Node.js 22 或更高版本,通过 npx 运行 chat-recall-mcp。需要托管服务 chatrecall.dev(OAuth 登录,7 天试用后为付费订阅),或自建服务器(Docker Compose 加 Postgres)。受支持的 AI 工具须已在标准路径写入会话记录。安装、索引和搜索不需要 API 密钥;AI 摘要可选,需要 Ollama、已登录的 CLI、OpenAI 兼容端点或 ANTHROPIC_API_KEY。
安装前请注意
它会索引本机所有 AI 会话,默认同步到服务器;init 会先展示将上传的内容并在首次同步前征求同意,密钥在客户端脱敏。排除规则和保留期规则保存在本机,保留期到期会定时删除服务器上的副本。recall_forget 和 recall_exclude_path 会永久删除或停止同步数据,需确认后执行。安装程序会向多个工具的配置文件写入钩子和 MCP 配置。托管服务试用结束后为付费订阅。

安装

在 SourceWeft 中

  1. 打开 控制台中的 chat-recall,将其添加到工作区。
  2. 连接 所需的 凭据。它们会被私密存储,绝不会在公开页面上展示。
  3. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/io.github.munhq%2Fchat-recall/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。 客户端会在首次连接时完成 OAuth 登录。

{
  "mcpServers": {
    "chat-recall": {
      "type": "http",
      "url": "https://chatrecall.dev/mcp"
    }
  }
}

README

[chat-recall]

[npm] [npm downloads] [MCP registry] [Smithery] [Glama]

[Install in Cursor] [Install in VS Code]

chatrecall.dev · How it works · MCP tools · Pricing · Self-host · Security

Turn what your AI coding tools already write into shared team knowledge, leaked-secret alerts, ranked code findings and tracked tasks.

Your agents wrote it all down. Nobody read it.

Every coding agent you run keeps a full transcript of its work: the decisions, the reasoning, the keys somebody pasted, the problems it found and never filed. Each one writes to its own directory in its own format, none can read another's, and nothing reads any of them. chat-recall does, through 68 MCP tools.

What it doesTools
Shared AI knowledgeDecisions, conventions and project facts one agent learned, available to every other agent and every teammate. Time-aware, so a superseded decision reads as superseded16
Security findingsCredentials pasted into past conversations, flagged per session, checked for whether they still work, and tracked until rotated or dismissed4
Automated code improvementsRanks what is actually worth fixing in a repository, then applies or dismisses each recommendation, with code intelligence over the repo itself9
Task trackingA shared board fed by those findings, with rules per repository, so a finding becomes work instead of a report5

Underneath all four is one index of every session your tools already wrote, and 28 more tools to search, replay and diff it. That index is the mechanism. It is not the pitch, and it is not why anyone buys this.

The cross-tool part is what makes it work. A single tool's built-in history stops at its own boundary. This does not, and neither does your team.

See it work

Every screen below is real output against a real server, captured from the demo account. Nothing is mocked, replayed or re-timed.

One index, every tool. Search finds a session by what was discussed in it, not by its filename, and memory status shows every source type in one place — sessions beside the skills, MCPs, commands, subagents and hooks that produced them.

[chat-recall search finding a past session by what was discussed in it, and memory status listing every indexed source type]

Or just ask in plain English — no tool names, no session ids. The agent picks the call itself:

[Claude Code answering a question about a past session by calling chat-recall itself]

It also finds the credentials you pasted, and checks which ones still work. A dead key is hygiene. A live one is an incident, and only live ones raise an alert.

[The security view: leaked secrets grouped by rule, each with a masked preview, a live-or-dead verdict and the sessions it appeared in]

Install

bash
npx chat-recall init

That indexes the transcripts already on your disk, detects which AI tools you have, and registers the MCP server in each of their configs:

ToolFile it writes
Claude Code~/.mcp.json
Codex~/.codex/config.toml
OpenCode~/.config/opencode/opencode.json
Cursor~/.cursor/mcp.json

It only touches a config whose tool is on this machine, it never overwrites an entry you curated by hand, and chat-recall doctor prints one line per tool so a missing registration is visible. Inside Claude Code you can install the skills and the MCP server together instead:

/plugin marketplace add munhq/chat-recall/plugin install chat-recall@chat-recall

Any other MCP client (Claude Desktop, Windsurf, Zed, Cline, or a tool init does not know) takes the same server as a JSON entry. The bin is chat-recall-mcp, which is why the package name alone is not enough — npx -y chat-recall starts the CLI, not the server:

json
{  "mcpServers": {    "chat-recall": {      "command": "npx",      "args": ["-y", "-p", "chat-recall", "chat-recall-mcp"]    }  }}

The same command as one line, for a claude mcp add-style client: npx -y -p chat-recall chat-recall-mcp.

Then:

bash
chat-recall search "that auth bug"      # search everything you have ever donechat-recall recent                      # what was I working on

By default this syncs to the hosted server at chatrecall.dev, which starts with a 7-day trial that needs no card and is a paid subscription after that — see pricing. To keep everything on your own machine instead, run the server yourself: that is free for one person, forever, with every feature and no licence key — the task board and Toolkit included — and a licence only buys collaboration: a second member, shared history, assigning work. See Self-host below. Either way the CLI is the same binary and the same commands; only the server URL differs.

No API keys are required. Search is Postgres full-text search. AI summaries are an optional upgrade, not a prerequisite.

What never leaves your machine

It indexes every AI session on this disk, so init shows you what would upload — count, tools, and the projects by name — and waits for a yes before the first sync. (--yes, or no TTY, prints the same summary and proceeds; --skip-sync holds the upload back entirely.) Secrets are masked client-side and project paths are sent as hashes; on top of that you choose what is in scope at all:

bash
chat-recall exclude project ~/work/client   # a path, and everything under it, never syncschat-recall exclude tool cursor             # one AI tool never syncschat-recall sync-only add git:github.com/me/app   # invert it: ship ONLY what you listchat-recall sources decline ~/.claude-work  # a whole transcript profile stays out                                            #   (--delete-remote purges what it already sent)chat-recall exclude list                    # every rule in forcechat-recall delete <session-id>             # purge one session on every server, tombstonedchat-recall retention                       # how long the server keeps what you sentchat-recall retention set 90                # delete anything older, on a timer (0 = keep everything)

Some tools file transcripts under a hash rather than a project folder, so those sessions have no path for a path rule to match; exclude tool is the control that covers them, and init prints that count. A retention window deletes from the server on a timer. retention set prints how many sessions it would remove and makes you confirm the number. It is undoable only where the original transcript is still on a machine you have — widen the window and chat-recall sync --full re-ships what it admits. For a laptop you no longer own, history your AI tool rotated, or files you deleted, our copy is the only copy. Export first if you want one.

Exclusions live on the machine that holds the data, so the CLI owns them; they apply from the next sync, and rows already synced stay until deleted. The dashboard's Sync rules panel adds rules across every device — unioned with the local ones, so it can only ever add protection. Full model, limits included: Security.

Four things it actually does

  1. Cross-tool unified memory. One index, one search, one UI over Claude Code (~/.claude/projects/), Codex (~/.codex/), OpenCode (~/.local/share/opencode/), Antigravity (~/.gemini/antigravity-cli/), Cursor (~/.cursor/ for the CLI, ~/.config/Cursor/ for the IDE), Hermes Agent (~/.hermes/) and Pi (~/.pi/agent/). Sessions, plans, tasks, CLAUDE.md files, paste cache, shell history and agent diaries all share one pluggable MemorySource interface.
  2. The agent recalls itself. 68 MCP tools, so Claude Code can recall_smart_resume, recall_search (with like_session to find similar work), recall_edits_timeline, recall_subagent_search and recall_redundant_files rather than asking you what happened last time. It writes back too, via recall_decision_record, recall_kg_add and recall_set.
  3. Warns before you redo work. A UserPromptSubmit hook searches for similar past sessions on every prompt and injects a short "you have done this before, in session X" note into the agent's context.
  4. Temporal knowledge graph. Decisions and tool mentions become entity-relationship triples with valid_from/valid_to windows, so you can ask what was decided in March and whether it still holds.

Add your own AI tool

A new backend is one file and one line — no changes to the engine. If a tool you use writes transcripts to disk, it can be indexed here, and a pull request is the fastest way to make that happen.

Optional: web dashboard

The React dashboard is part of the server (SaaS or self-host docker compose) — the CLI itself has no UI. For dashboard development:

bash
npm run web:install                 # install web depsnpm run web:dev                     # API on :5000, UI on :5174

Self-host the server (docker compose)

Everything on your own machine, no account, nothing sent anywhere:

bash
git clone https://github.com/munhq/chat-recall && cd chat-recallecho "ADMIN_KEY=$(openssl rand -hex 24)"         >> .envecho "POSTGRES_PASSWORD=$(openssl rand -hex 24)" >> .envdocker compose up -d --build          # FIRST RUN BUILDS FROM SOURCE (minutes)

Then mint a device token and connect a machine — the full sequence, with troubleshooting, is in docs/SELF_HOSTING.md.

Two containers: the server plus a bundled pgvector/pgvector Postgres, so a plain docker compose up is self-contained. Bring-your-own-Postgres is supported too (it is how the hosted service runs): set DATABASE_URL to an external Postgres 16+.

Keep the index live (+ optional server sync)

You do not need a daemon. Claude Code spawns the MCP server, and that process syncs every 3 minutes on its own — the binary is the daemon. For a headless box with no assistant running, opt in to a background service:

bash
chat-recall watch                    # foreground daemon: watches every tool, summaries, precomputechat-recall watch --install-service  # systemd user unit (Linux) · launchd (macOS) · Scheduled Task (Windows)

init does not install it, on purpose. Both paths push through the same syncIncremental() under the same cross-platform index lock, so one writer touches the ledger at a time — see docs/SYNC.md before changing any of it. Secrets are masked client-side before anything leaves the machine. chat-recall sync does the same push once, on demand.

Hook it up to Claude Code

chat-recall init does this for you. Manual equivalent in ~/.mcp.json:

json
{  "mcpServers": {    "chat-recall": {      "command": "chat-recall-mcp"    }  }}

chat-recall-mcp is a relay, not the server. It finds the background daemon for your tool profile, starts one if there is none, and passes bytes to it. Every session on a machine therefore shares one loaded engine instead of carrying its own: a session costs about 50 MB rather than 87 MB, against a single shared daemon, and background sync runs in one process instead of racing a lock in all of them. The daemon exits 15 minutes after the last session closes.

Two knobs, both optional:

bash
CHAT_RECALL_NO_DAEMON=1          # load the whole server in each session insteadCHAT_RECALL_DAEMON_IDLE_SECS=0   # keep the daemon resident (default 900)

If the daemon cannot be reached for any reason, the session loads the server itself and works exactly as it did before — slower, never broken.

chat-recall init installs the Claude Code hooks in every profile's settings.json. If you added only the MCP server, from a marketplace button or by hand, the MCP server installs them when it starts. You run nothing else.

To choose which hooks run, or to remove them:

bash
chat-recall install-hooks --no-resume-hint  # without the resume warningchat-recall install-hooks --no-messages     # without messages between sessionschat-recall install-hooks --uninstall       # remove ours; third-party hooks stay

After --uninstall the MCP server does not put them back.

HookWhen it firesWhat it does
SessionStartNew session (startup / clear)Injects the project-scoped wake-up bundle
UserPromptSubmitWhen you type a promptSearches past sessions; if a similar one exists, injects "you've worked on this before" into the agent's context
SessionEndWhen the session closesEscalates the session's learnings in the background, so nothing is delayed
SessionStart, UserPromptSubmit, Stop, SessionEndEach turnMessages between sessions: tells the session its id, delivers what waits for it, reports its state
SessionStart, UserPromptSubmit, Stop (background)Until a message arrivesWaits for a message from another session and wakes this one, also when it is idle

The other AI tools get the message hook too, so their sessions can send and receive messages. The installer writes it only for a tool that is installed:

ToolWhereWhen a message arrives in the session
Codex~/.codex/hooks.jsonAt the next prompt. Approve the hook once with /hooks in Codex.
Antigravity~/.gemini/config/hooks.jsonAt the next prompt
Cursor~/.cursor/hooks.jsonWhen the agent stops, as a follow-up prompt
opencode~/.config/opencode/plugins/chat-recall-messages.jsWithin a few seconds, also when the session is idle
pi~/.pi/agent/extensions/chat-recall-messages.jsWithin a few seconds, also when the session is idle

Claude Code, opencode and pi wake an idle session. In Codex, Antigravity and Cursor, an idle session reads its messages when its user types next. chat-recall doctor shows the hook of each tool.

Sessions that work together

One session can start others and direct them. In Claude Code, ask for it in plain words: "start two workers, one on the API and one on the web form, and tell me when both are done".

  • recall_session_spawn starts a child as a Claude Code background session, linked to its parent. claude attach <id> opens it.
  • recall_message_send sends to a session by id or name, or to parent, children or group. The message wakes the recipient within about a second, also when it waits for input.
  • recall_session_status lists the sessions: what each works on, its board cards, and whether it is working, idle, waiting for a permission prompt, or ended.
  • Decisions, facts and shared state go in the memory every session reads: recall_decision_record, recall_kg_add, recall_set.

A message from another session is not a message from you. A child acts on its parent's messages because its parent started it with that instruction. Any other session treats a message as information and checks with you first.

The decision guard

A decision nobody reads is a suggestion. chat-recall guard runs before a tool call and says so when the call reaches for something already ruled out:

chat-recall: this reaches for something already decided against.- keycloak was ruled out — BetterAuth is the decision (2026-03-14) · session 8f2c1a4eProceed only if this is a deliberate reversal. If it is, record it:recall_decision_record with the area, so the old decision is closed rather than contradicted.

It fires on installs, imports and manifest edits — npm install auth0, a new import line, a name added to package.json. Never on prose: "we could use Auth0" in a sentence must not stop anything, or the guard becomes something people switch off.

It warns; it does not block. A wrong block costs the user a turn and gets the guard uninstalled; a wrong warning costs a line of context. Set CHAT_RECALL_GUARD_ENFORCE=1 to block instead, per machine. CHAT_RECALL_GUARD=0 turns it off.

chat-recall init registers it in all five tools. Each one keeps its pre-execution hook in its own file, so the installer writes five shapes and skips any tool that is not on the machine (--no-guard to skip all of them):

ToolWhereEvent
Claude Code~/.claude/settings.json, every profilePreToolUse
Codex~/.codex/hooks.jsonPreToolUse
Antigravity~/.gemini/config/hooks.jsonPreToolUse — the one tool with a real ask verdict, so it can prompt
Cursor~/.cursor/hooks.jsonbeforeShellExecution + afterFileEdit
OpenCode~/.config/opencode/plugins/chat-recall-guard.jstool.execute.before

Codex needs one more step. It runs a hook only after you trust it — open Codex and run /hooks once. chat-recall doctor reports the registration for each tool.

Two of those are not full coverage, and the docs say so rather than implying otherwise. Cursor exposes beforeShellExecution but only afterFileEdit, so an import added in an edit is reported after the write, not prevented. OpenCode's plugin hooks do not fire for subagent tool calls (#5894), so an agent that delegates routes around it.

Companion: codeindex (auto-detected)

There's a separate MCP server called codeindex (Zig binary, ~56 MB) by munhq that gives the agent code-level lookup. The two compose:

  • chat-recall = session memory. What have I worked on? What did we decide?
  • codeindex = code memory. Where is this symbol? Who calls it? What breaks if I change it?

Together the agent can answer "have I built this before?" and "does it already exist in this codebase?" before redoing work.

How chat-recall handles it: chat-recall init detects whether codeindex is on your PATH (or at ~/.local/bin/codeindex). If yes, it registers it as an MCP server in ~/.mcp.json automatically — no download, no surprise. If no, it prints a one-line hint about how to get it.

bash
chat-recall init                       # default — detect and register if installedchat-recall init --with-codeindex      # additionally force-download the binarychat-recall init --skip-codeindex      # don't even checkchat-recall companions install         # download manually (after init)chat-recall companions status          # show what was detectedchat-recall companions uninstall       # remove the binary + MCP registration

codeindex is open source (MIT) at github.com/munhq/codeindex. The install is optional — chat-recall works entirely without it; you just don't get the code-level tools.

What gets indexed

SourceOriginNotes
Sessions (Claude)~/.claude/projects/<hash>/<uuid>.jsonlFull transcripts, tokens, cost, files touched, models used
Sessions (OpenCode)~/.local/share/opencode/opencode.db (SQLite)Cost, tokens, todos
Subagent transcripts<session-dir>/<id>/subagents/*.jsonlExplore, aside, and acompact-* (orphaned compacted history)
Plans~/.claude/plans/*.mdAgent planning docs, split by ##
Tasks~/.claude/tasks/<session>/*.jsonLinked to parent session
CLAUDE.mdAuto-discovered from project hashesLinked to sessions in same project
History~/.claude/history.jsonlShell history, optionally tied to a session
Paste~/.claude/paste-cache/*.txtLarge pasted blobs
Diary~/.chat-recall/index/diary/<agent>/*.jsonWhat the agent told its future self via recall_diary_write

MCP tools (68, including 4 code-intelligence tools that register when the companion binary is installed)

Search & retrieve — recall_search, recall_memory_search, recall_recent, recall_show, recall_context, recall_summary, recall_smart_resume, recall_project_context, recall_weekly_digest, recall_analytics_summary, recall_wake_up.

Pattern detection — recall_search with like_session: <id> (find work similar to a given session), recall_redundant_files (warn when a new filename overlaps prior work), recall_diff with files_only: true (what files session X actually touched), recall_edits_timeline with group_by: "session" (which sessions edited auth.rs).

Subagents & filters — recall_subagent_search (search inside hidden Explore/aside/compact transcripts), recall_user_prompts (only what the human typed, banner-stripped).

Findings, ranked — recall_claude_suggestions (every finding that becomes an agent-instruction change: the CLAUDE.md rules and skill installs, merged across account scope and every indexed project) and recall_improvements (everything else, ranked most urgent first, with create_tasks: true to open one team task per item). They partition the same recommendation engines, so an item never appears in both.

Knowledge graph — recall_kg_query, recall_kg_add, recall_kg_invalidate, recall_kg_timeline, recall_kg_stats. Plus recall_decision_record to write a decision as both a triple and a diary entry in one call.

KV state — recall_set, recall_get (no key = list the scope). Small persistent values keyed by namespaced strings: "current PR url", "branch I'm working on", user prefs.

Diary & status — recall_diary_write, recall_diary_read, recall_status (includes memory breakdown), recall_index. Plans/tasks: search via recall_memory_search(source_types:['plan','task']), read via recall_show.

Removing things — recall_forget deletes one conversation from the server permanently, tombstoned so no later sync restores it (your own transcript file is untouched); recall_exclude_path stops a path syncing, on this machine and on your account. They exist as tools because "forget that conversation" and "stop syncing this repo" are things people say mid-conversation, not things they open a dashboard for. Both require confirm: true, both are annotated destructive, and neither is auto-approved — your client asks every time. The boundary is one-way on purpose: an agent can narrow what is stored and there is no tool that widens it again (no un-exclude, no allowlist, no retention). Widening is yours: chat-recall exclude remove, or the dashboard.

When the codeindex companion is installed, the agent also gets 16 code-level tools (find_symbol, find_callers, get_imports, plan_change, get_change_impact, analyze, etc.) from a separate MCP server. They compose: chat-recall finds what you've done; codeindex tells you what currently exists.

Search architecture

Search runs on the server, and it is Postgres full-text search: keyword matching with ranking, plus pg_trgm typo tolerance. It needs no embedder, no API key and no extra service.

The CLI ships redacted chunks to the server, which indexes them.

Cost tracking

Cost in USD is computed from token usage when at least one model in the session has a rate the server knows. For every other model — anything local, anything self-hosted, anything newer than the rate table — the dashboard shows — instead of fabricating a number. The summary surfaces a sessionsWithoutPricing counter, so you can see how much of the total the figure actually covers.

Wake-up context

bash
chat-recall memory wake-up

Builds a small bundle for an AI session: optional identity blurb, the top 10 chunks the classifier flagged as decisions/preferences/milestones at importance ≥ 4, and a snapshot of currently-valid knowledge-graph facts. No magic compression — just the highest-signal items the indexer already tags.

Data locations

The CLI keeps almost nothing locally — just what it needs to reach the server:

PathWhat
~/.chat-recall/credentials.jsonServer target(s) + device token (mode 0600)
~/.chat-recall/sync-ledger.jsonPer-server sync watermark (what's already shipped)
~/.chat-recall/hooks/Installed hooks (after install-hooks)
~/.chat-recall/index/diary/Agent diaries written by recall_diary_write
~/.chat-recall/shadow/Gzipped copy of the fullest-seen transcript per session, so an upstream --resume truncation cannot destroy history
~/.chat-recall/cache.dbLocal outcome/metadata cache for the local dashboard. Not an index, and not used in server mode

All indexed content — chunks, FTS, vectors, knowledge graph, secret findings, diary — lives on the server (Postgres for self-host and SaaS). Reset it by wiping the server's Postgres data, not anything under ~/.chat-recall.

Privacy

Your sessions sync to a chat-recall server — either one you self-host (your own box, your own Postgres) or the SaaS. Before anything leaves the CLI it is redacted: secrets are masked client-side, so the server never receives raw credentials. Self-hosting keeps all data on infrastructure you control; the SaaS is the hosted alternative.

No telemetry. Your data lives in your server's Postgres — back that up however you like. On the SaaS it lives in the hosted Postgres; self-host if you'd rather keep it entirely on your own infrastructure.

Architecture

packages/├── engine/src/│   ├── core/│   │   ├── backends/        ToolBackend per AI tool (claude, opencode, codex, agy, cursor)│   │   ├── tool-backend.ts  Registry interface — single source of truth for tool identity│   │   ├── tool-paths.ts    Env-overridable default paths for each tool│   │   ├── generic-engine.ts  Shared turn extraction / edit scan / replay (canonical events)│   │   └── …                Indexing, storage, embeddings, summaries, KG, classifier│   └── parsers/             *-source.ts plugins per content type (sessions, plans, tasks, …)├── cli/│   ├── src/cli.ts           CLI│   ├── src/mcp.ts           MCP server│   ├── auto-indexer/        chokidar-based watcher daemon (systemd-friendly)│   └── hooks/               Claude Code hooks (install via `chat-recall install-hooks`)└── server/    ├── src/                 Express API    ├── client/              React + Vite UI — the dashboard    └── cloud/migrations/    Empty by design — pg-schema.ts owns the schema
docker/                  Dockerfile + entrypoint for the server imagee2e/                     Playwright tests for the dashboard

Two extension points, both registry-driven:

  • Adding a new content type (e.g. another file format to index) — implement MemorySource (discover → parse → extractLinks) and register it in the SourceRegistry.
  • Adding a new AI tool (a seventh backend alongside Claude/OpenCode/Codex/Antigravity/Cursor/Hermes) — implement ToolBackend (paths, ID handling, readEvents, fileToolMap, extractEditDelta) and register it in packages/engine/src/core/backends/index.ts. All paths are env-overridable via CHAT_RECALL_{CLAUDE,CODEX,AGY,CURSOR,CURSOR_IDE,HERMES}_HOME / CHAT_RECALL_OPENCODE_DB.

Requirements

  • Node.js 22 or later. The Docker image and CI run 24.
  • Sessions written by a supported tool, in its standard location: ~/.claude/, ~/.codex/, ~/.local/share/opencode/, ~/.gemini/antigravity-cli/.

That is the whole list. No API key is needed to install, index or search.

One feature is opt-in, and it needs a back end that you choose:

FeatureBack ends you can point it at
AI summariesOllama, a CLI you are already logged in to (SUMMARY_CLI_CMD), an OpenAI-compatible endpoint, or ANTHROPIC_API_KEY

Without it, sessions carry no generated summary. Everything else works the same.

License

Elastic License 2.0 for the whole repository.

In plain terms: use it, modify it, run it for yourself or inside your company, free and without asking. The one thing you may not do is offer it to third parties as a hosted or managed service — that is the product. You also may not strip the licence-key checks or the copyright notices.

It is source-available, not OSI open source, and this README will not pretend otherwise. It replaced a split where the CLI and engine were MIT and the server was BSL 1.1, which answered "may I use this?" three different ways inside one repository.

来源:README.md,提交 7be7539

工具

0
该服务器需要登录,因此 SourceWeft 无法在没有账号的情况下读取其工具,也未收录。已连接账号所能看到的内容可能因账号及其权限而异。

版本历史

17
  1. v0.7.31最新Nov 3, 2026
  2. v0.7.26Nov 1, 2026
  3. v0.7.25Oct 30, 2026
  4. v0.7.23Oct 30, 2026
  5. v0.7.21Oct 29, 2026
  6. v0.7.19Oct 6, 2026
  7. v0.7.18Oct 3, 2026
  8. v0.7.17Oct 2, 2026
  9. v0.7.12Sep 30, 2026
  10. v0.7.11Sep 30, 2026
  11. v0.7.9Sep 28, 2026
  12. v0.7.7Sep 27, 2026
  13. v0.7.6Sep 25, 2026
  14. v0.7.5Sep 25, 2026
  15. v0.7.3Sep 24, 2026
  16. v0.7.0Sep 16, 2026
  17. v0.6.9Sep 16, 2026

评分

已满足适用检查项的 75%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分

    请在仓库或注册中心条目中声明许可证。