
Recall
io.github.j4ckxyz由 GitHub 账号 j4ckxyz 发布v0.1.4更新于 Oct 24, 2026
Private, encrypted memory about you, shared by all your AI agents. Self-hosted; runs on a Pi.
概览
Recall 是一个自托管、加密的“关于你”的记忆库,可被所有 MCP 客户端共享,让助手跨工具回忆、保存和遗忘事实。
- 可以做什么
- 回忆、记住和遗忘个人事实,每条记忆带有获知日期,返回时只给编号和日期,不透露是哪个代理保存的(R6、R7、R32)。用模糊混合检索搜索记忆,可容忍拼写错误并找出相关事实(R8、R116)。在带密码保护的小型网页应用中浏览、搜索、编辑、新增和遗忘记忆,并提供关联图谱视图(R11、R113、R117)。通过命令行管理存储:列出、搜索、新增、删除、恢复、审计、导出和导入(R136)。
- 适用场景
- 当你同时使用多个 AI 代理或客户端,希望有一份存放在自己硬件而非厂商服务器上的共享记忆,并且想查看和控制每一条事实时适用(R52)。也适合树莓派等常开的小型设备,其他设备可通过私有 tailnet 访问同一份记忆(R5、R85)。
- 运行要求
- 需通过安装脚本、一键 mcpb 包或源码构建安装本地二进制文件;不需要 Python、GPU,运行时也不联网(R2、R3、R56)。首次启动会在 ~/.recall/ 中创建加密存储和密钥(R64)。可选的跨设备共享需要 Tailscale 和每台设备的 bearer 令牌(R87、R94)。密钥可通过 RECALL_KEY_CMD 存放在密码管理器中(R74)。
安装
在 SourceWeft 中
- 打开 控制台中的 Recall,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
Recall
A self-hosted memory of you, shared by every AI agent you use, over MCP.
[Recall's memory map: memories as dots, grouped into coloured topic clusters]
- One binary, 10 MB, embedding model included. No Python, no GPU, no network at runtime. ~13 MB RAM per agent connection. Runs on a Raspberry Pi.
- Three tools:
recall,remember,forget. Agents get facts and dates, never who saved them. - Fuzzy search: BM25 + static embeddings + typo repair, ~150 µs per query. Benchmarked against BM25, other embedding models and transformer embedders.
- Secure by default: SQLCipher-encrypted store, secret scanner on every write, soft deletes with an audit trail, stdio-only unless you opt into HTTP with scoped tokens.
- A map of your memory: a password-protected web app, built into the same binary at about 65 KB, to browse, search, edit and forget memories.
Install · Let an agent install it · Use it across devices · Web app · Design · Benchmarks
Why not just use ChatGPT or Claude memory?
Both are good at what they do. They take the same basic approach as Recall: short third-person facts, a compact profile in context, search on demand. Recall uses that approach but changes who owns the memory and where it works.
Where Recall is better
Search quality is comparable. Hosted products don't publish their retrieval stack, so they can't be benchmarked directly. On our fact-retrieval benchmark, Recall's hybrid search (Recall@5 of 0.82) matches transformer embedding models such as bge-small (0.82) and MiniLM (0.85). It runs in about 150 µs with a 7.5 MB model and no ML runtime.
Where hosted memory still wins
- No setup, and it works everywhere. ChatGPT and Claude memory work on phone and web with no install. Recall reaches web and mobile apps only through the HTTP mode behind TLS. OAuth support for ChatGPT-style remote connectors isn't built yet.
- Passive learning from all your chats. ChatGPT's "reference chat
history" and Claude's conversation search draw on everything you've said.
Recall only knows what agents explicitly
remember. - Tuned behaviour. Vendors train their models to use their own memory well. Recall depends on each client following its MCP instructions, and some clients follow them better than others.
In short: if you use one assistant, on your phone, and don't mind the
vendor holding your memory, use theirs. If you use several agents, want the
data on your own hardware, and want to see and control every fact, use
Recall. You can also use both: run recall import on facts exported from
ChatGPT or Claude.
Install
macOS / Linux / Raspberry Pi
Windows (PowerShell)
Claude Desktop, one click: download
recall.mcpb
and open it. The bundle covers macOS, Windows and Linux. It creates your
encrypted store on first launch, and you can optionally enter a shared Tailscale
server.
MCP Registry: Recall is listed as
io.github.j4ckxyz/recall,
so clients that browse the official registry can install it directly.
The installer:
- Downloads the prebuilt binary for your platform and checks it against the
release's
SHA256SUMS. It stops if the checksum doesn't match. - Installs it to
~/.local/bin(%LOCALAPPDATA%\Programs\recallon Windows). - Creates your encrypted store and key in
~/.recall/. - Runs
recall doctor, a self-test of the model, search, the encrypted store and a real MCP handshake. - Offers to add Recall to the agents it finds: Claude Code, Claude Desktop, Cursor, VS Code, Windsurf, Gemini CLI and Codex CLI.
Every release is installed and smoke-tested by CI before it's published, on macOS, Windows and Ubuntu (x64 and arm64), and in Debian 11 and 12, Fedora, Arch and Alpine containers. CI then re-runs the exact one-liners above against the published release. Linux binaries are static (musl), so they run on any distro, including 64-bit Raspberry Pi OS.
Prefer to read the script before running it? See
install.sh and install.ps1. You can also build
from source:
cargo install --git https://github.com/j4ckxyz/recall --features vendored-openssl
(drop the feature on macOS).
Back up ~/.recall/key. Without it your memory cannot be decrypted. To
keep the key in a password manager instead, set RECALL_KEY_CMD, for example
RECALL_KEY_CMD='op read op://Private/recall/key'.
Or let an agent do it
Copy this into Claude Code, Codex, Cursor or any agent that can run commands:
Connect your agents
recall connect adds Recall to every agent it detects, and keeps a
.before-recall backup of any config file it edits. You can also name agents:
recall connect cursor vscode. recall disconnect undoes it.
To configure an agent by hand, every client runs the same command:
recall mcp.
- Claude Code:
claude mcp add --scope user recall -- recall mcp - Codex CLI, in
~/.codex/config.toml:[mcp_servers.recall], thencommand = "recall"andargs = ["mcp"]
Use it across devices with Tailscale
Recommended: run one Recall server on an always-on machine (a Raspberry Pi, home server or desktop), and point every other device at it over your Tailscale tailnet. All your agents, on every device, then share a single memory, and none of it is reachable from the public internet.
1. On the server (after installing Recall and Tailscale):
To keep it running at boot on Linux:
2. On every other device:
The agents on that device still run recall mcp; it now relays to the server.
recall doctor checks the connection, and recall remote off switches back to
a local store.
Why this is safe
-
Traffic between tailnet devices is end-to-end encrypted by WireGuard and limited to your own devices, so Recall can speak plain HTTP without a TLS stack.
-
On top of that, Recall requires a per-device bearer token. Tokens are stored only as hashes and can be revoked with
recall token revoke laptop. -
--tailscalebinds only the tailnet interface, never your LAN or the internet. Don't use Tailscale Funnel for Recall. -
recall auditshows which device wrote each memory. -
To narrow access further, tag the server and allow only your own user in your tailnet policy:
Clients that only accept a URL can use the server directly, with
{ "url": "http://<server>:7878/mcp", "headers": { "Authorization": "Bearer rcl_…" } }.
Web and mobile apps such as claude.ai and ChatGPT can't reach a private tailnet
yet.
See your memory
recall serve also hosts a small web app, like Obsidian's graph view for what
your agents know about you.
On a tailnet you don't need the password. When recall serve runs on a
machine that's on Tailscale, it signs you in automatically. It asks the local
Tailscale daemon who owns the device you're connecting from: the same verified
identity tsidp is built on, with
nothing extra to deploy.
-
Who gets in. Only the Tailscale user who owns the server, unless you allow others with
recall tailnet allow [email protected]. Tagged devices (servers, CI) are never signed in this way. -
How it's detected. It works when Recall listens on the tailnet (
recall serve --tailscale), and also behindtailscale serve, where Recall trusts theTailscale-User-Loginheader only iftailscale serveis actually proxying to Recall's port. -
Sessions. A Tailscale session lasts 24 hours and renews silently while you're on the tailnet. Signing out sticks for that browser session; one click on "Continue with Tailscale" signs you back in.
-
Managing it.
recall tailnetshows who's allowed, andrecall tailnet offturns it off. Edits made from the web app are recorded inrecall auditunder the Tailscale login. -
Map. Every memory is a dot. Memories are linked when they share a name, place or project, or mean similar things, and they're grouped into coloured topics labelled with their most central word. Hover to light up a memory's links; scroll to zoom; drag to pan or rearrange.
-
Search. Results appear as you type, with the same fuzzy and semantic search agents use: "family" finds your mother and your daughter, and "vegitarian" still finds "vegetarian".
-
Edit and forget. Change a memory's text, add a new one with the date it was true, or forget one. Every change is reversible for 30 days with
recall restore. -
Keyboard:
/or⌘Kto search,nto add a memory,Escto clear. -
Themes: light, dark, or follow the system. The choice is remembered.
[Selecting a memory shows its linked memories and when it was learned]
[Semantic search: "family" finds memories about mother and daughter]
[Password sign-in] [The memory map on a phone]
How it stays small and safe
- Size. No framework and no CDN: one HTML file, a hand-written canvas graph and pre-built Tailwind CSS, all compiled into the binary. About 65 KB in total, and it works offline.
- Sign-in. Tailscale identity on a tailnet (see above), otherwise a
password. The password is stored as a PBKDF2-SHA256 hash (600,000
iterations) inside the encrypted database. Sessions are random 256-bit
tokens in
HttpOnly,SameSite=Strictcookies, and logins are limited to 5 failures a minute.recall passwordagain rotates the password and signs out every browser;recall password --setuses your own;recall password --offturns the web app off. - Browser protections.
- A strict Content-Security-Policy, with no inline scripts.
- Memory text is always rendered as text, never as HTML, so a memory can't inject a script.
- Writes need a custom header that other sites can't send, which blocks cross-site request forgery.
- Requests are only answered under your own host names (localhost, your
tailnet
*.ts.netname, or the bound IP), which blocks DNS rebinding.
- Screenshot data. The screenshots use the fictional benchmark persona, not real memories.
What agents see
Manage your memory
Development
The web app's CSS is pre-built with the
Tailwind standalone CLI
(no Node needed). After changing classes in web/, run ./web/build.sh; CI
fails if web/app.css is stale.
Releases are automatic
Every push to main that touches the product (src/, models/, mcpb/,
Cargo.*, the installers or server.json) is released by
release.yml:
- Picks the next version: the last tag plus one patch. Bump
versioninCargo.tomlyourself for a minor or major release. - Builds static binaries for macOS (arm64/x64), Linux (x64/arm64, musl) and
Windows, then assembles
recall.mcpbandserver.json. - Installs and smoke-tests them on macOS, Windows, Ubuntu (x64 and arm64), Debian 11 and 12, Fedora, Arch and Alpine.
- Tags the commit and publishes a GitHub release.
- Publishes to the MCP Registry using GitHub OIDC, so no secrets are needed.
- Re-runs the README one-liners against the live release and checks the registry listing.
Pushes that only change docs build and test without releasing. Add
[skip release] to a commit message to skip a release on purpose.
The bundled model is minishlab/potion-base-8M
(MIT), quantised to int8 in models/recall.rv.
来源:README.md,提交 4808328
工具
0版本历史
1- v0.1.4最新Oct 24, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分
