
ChainMemory
io.github.chaelynet由 GitHub 帳號 chaelynet 發布v2.10.0更新於 Nov 7, 2026
Verifiable, portable AI memory. Optional vault: encrypted on your machine, 12 words only you hold.
發布方自己的服務:Memory.fit
概覽
ChainMemory 為 AI 助理提供持久、可跨模型攜帶的記憶,內容加密並錨定在鏈上以便驗證。
- 可以做什麼
- 寫入、回想、搜尋與讀取記憶,包含全文語意搜尋與鏈上完整性校驗
- 管理標籤、封存與取消封存記憶,並依專案篩選
- 維護版本化的專案大腦:讀取狀態簡報、載入完整狀態、提出結構化更新
- 以可分享的錨定證明驗證記憶與專案狀態,並執行付費或試跑稽核
- 管理專案、範本、角色契約與可稽核的角色工作階段
- 使用盲盒保險庫:產生助記詞、在本機封裝記憶、開啟已封裝記憶,並付費將選定記憶注入對話
- 適用情境
- 適合希望助理跨工作階段、跨不同聊天工具記住決策與專案背景的情境,也適合需要第三方可驗證地證明某則記憶或專案狀態未被竄改的場合。
- 執行需求
- 透過 npx 以 stdio 方式在本機執行,僅支援桌面用戶端。需要在 CHAINMEMORY_API_KEY 填入 ChainMemory API 金鑰,可從專案的水龍頭取得,並附帶初始 AIC 餘額。選用:CHAINMEMORY_SEED_PHRASE 用於盲盒保險庫,首次使用會下載約 45 MB 的模型;AICHAIN_KEY 與 AICHAIN_RPC 僅封裝工具需要;CHAINMEMORY_ALLOW_FULL 用於允許完整等級的專案簡報。需要連線至 ChainMemory API 的網路。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 ChainMemory,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
ChainMemory MCP Server
[npm version] [License: MIT] [Node.js Version]
Cross-model, cryptographically verifiable memory for Claude, ChatGPT, and any AI agent — own your AI's memory and carry it across every model.
ChainMemory MCP exposes the ChainMemory protocol to any AI agent that speaks the Model Context Protocol. Memories are encrypted (AES-256-GCM), anchored on-chain one by one so anyone can verify them, and portable across ChatGPT, Claude, Gemini, Perplexity, and any other LLM. No vendor lock-in, ever.
What's new in v2.10.0
- Full level for
get_project_brief, only when you allow it. The brief is public by default: safe to paste into any chat, with addresses, ports, server paths and security rules replaced by[withheld]. Passlevel: "full"to get them too, for work on your own infrastructure. It works only if you addCHAINMEMORY_ALLOW_FULL=1to this MCP server'senv, only with the owner's key (member and project keys are refused by the API), and ChainMemory logs every full-level request: when, which project and version, from which client and how many sensitive lines went out. The brief says so at the top and counts the sensitive lines at the end. - The remote endpoint never offers the full level. It serves third-party clients, so the parameter is not even published there.
- How a project's AIC are safeguarded never appears in a brief, at any level.
- Every request now tells the API which client made it
(
chainmemory-mcp <version> stdio|remote), which is what the full-level log records.
To enable it, add the variable next to your API key:
What's new in v2.9.1
get_project_briefhas a task mode. Passtask: "pri_0015"and the brief is about that one priority: the priority in full, its completion criterion on its own line, the risks it mitigates, everything else in the Brain that mentions it, and every work rule and constraint. A general brief orients; this one is meant to be enough to start the work. It does not move the version remembered for "what changed".- Briefs are safe to paste into any chat. The server now replaces IP
addresses, ports, server paths and the owner's security rules with
[withheld], and says how many were withheld in that text, so the agent knows to ask. Before, a large budget could carry a server path or an SSH port into a third-party chat. - The brief says more about what it shows: the full
state_hash, each changed priority-risk link with its previous value, completion criteria never cut, titles in "to review", the owner's work rules, and how many items cite evidence, with the rest marked(no evidence). - Priorities can be linked to risks.
update_project_statedocuments the newmitigatesfield ofadd_priorityand theset_priority_risksop (the grammar is now 30 ops). The brief then shows which priority covers each risk and lists the high risks nobody mitigates. The documented value sets were also corrected: risks can bemitigated, and priorities areactive,doneordropped.
What's new in v2.9.0
get_project_brief: the Project Brain in a few thousand characters, most important first.get_project_statereturns the whole state as JSON, which on a mature project is long, and an agent opening a session reads it from the top. The brief is plain text built by the server (GET /v1/project/:name/inject) by relevance and within a character budget (default 7,000, from 1,000 to 50,000): what changed since the last version you read, open risks (high first), active priorities, recent decisions with their scope, recent milestones, open questions, each constraint as a one-line rule, and the items that have not been reviewed for more than 30 versions and may no longer be true. It starts with the state's on-chain anchor. Free and read-only.- "What changed" is measured from what you last read. This local server
remembers, per project, the last version it gave you, in
~/.chainmemory/brief-since.json. The file is indexed by a hash of your API key and the project name: it contains neither. Passsinceto compare against a specific version. On the remote endpoint nothing is stored, and the comparison is with the previous version. - Headings in English or Spanish (
lang: "es"); the items are returned as they were written. get_project_stateis unchanged, and is still the tool to use beforeupdate_project_state.
What's new in v2.8.1
- The search model downloads on slow connections. The first download (45 MB, only with the blind vault) was cut after 2 minutes in total, so on a slow but working connection the model never arrived and the first sealed memory was saved without its search vector. Now the download is cut only if it receives no data for 60 seconds, however long it takes overall.
What's new in v2.8.0
- Sealed memories are searchable. With the blind vault configured
(
CHAINMEMORY_SEED_PHRASE),chainmemory_rememberwithsealed:truenow sends the memory's search vector along with the encrypted blob, computed on your machine. The server can find a memory it cannot read, andsearch_memoriesdecrypts sealed matches locally. - Your queries stay on your machine. With the vault configured,
search_memoriessends the query's vector, not its text, so the text of what you search is never sent to the server nor written to its search log. - No new dependencies. The vector comes from ChainMemory's own engine
(tokenizer, model reader and WebAssembly kernel written by ChainMemory),
shipped in the package: 80 kB in total. The first time it is needed, the
45 MB search model is downloaded from
models.chainmemory.ai, checked against its SHA-256 anchored on ChainMemory's chain, and stored in~/.chainmemory/models(orCHAINMEMORY_MODELS_DIR); it is checked again every time it is loaded. - Without the vault nothing changes and nothing is downloaded.
What's new in v2.7.1
- Correct version in the MCP handshake. The server announced itself as
2.5.6to every client, whatever package was installed. It now reads the version frompackage.json, so the two cannot drift again. quote_injectreports missing memories correctly — fixed on the API side (2026-09-14), no client change needed. Before, it listed memories it had found as not found and told the agent to fix a list that was fine.get_inject_historyresponses now includememory_numbers, the #N of each injected memory.
What's new in v2.7.0
Tool descriptions rewritten for agents, not for humans. An audit of all 36 found that only 39% said when to use them, 25% stated their limits, and two charged without saying so. One of them was plainly wrong.
chainmemory_profilepromisedmemory count,trust scoreandregistration block. None of those fields exist — the API returnschain_memories,local_memories,synced_memories,pending_sync,reputation,ownerandactive. The v2.5.6 release fixed the code that asked for the wrong fields; the description kept advertising them.chainmemory_remember(0.001 AIC) andupdate_project_state(0.05 + 0.005 per op) now state their fee. They are the most used and the most expensive tool respectively.update_project_statenow documents the closed value sets.severityislow,medorhigh— notmedium, notcritical. A wrong value costs a rejected op and the fee is charged anyway.get_my_contextandchainmemory_recallboth said "use at conversation start". Now each says when to use it instead of the other.- Twelve one-line descriptions gained their cost, their limits and the gotchas
that cost a failed call:
delete_projectneeds the numeric id and rejects the slug;add_project_from_templateandlist_project_templatesdeal in ids that cannot be guessed;chainmemory_sealis the only tool requiring a wallet private key.
No behaviour changed: same 36 tools, same endpoints, same fees. What changed is what the agent is told before it chooses.
What's new in v2.6.1
Documentation fix only, no code changes. The blind vault section described the
verification step wrongly: GET /v1/memory/<id>/decrypted does not fail on a
sealed memory — it returns 200 with scheme: "sealed" and the encrypted blob.
The guarantee is the same (the operator never gets your text) but the observed
behaviour was not what we documented. Found by running the first end-to-end test
against the live API.
What's new in v2.6.0
Blind vault — memories the server cannot read. Pass sealed: true to
chainmemory_remember and the text is encrypted on your own machine before it
leaves: AES-256-GCM with a key derived from twelve BIP-39 words that never touch
the network. ChainMemory stores an opaque blob and anchors its hash. Same fee as
a normal write — privacy costs nothing extra.
chainmemory_new_seedcreates the phrase locally. Shown once, stored nowhere.chainmemory_open_sealedfetches the blob and decrypts it here, not there.- Without
CHAINMEMORY_SEED_PHRASE, everything behaves exactly as in 2.5.6.
One honest limitation: a sealed memory is stored with no searchable text, so
it will not appear in search_memories — the server has nothing to index. Its
project and tags are stored, so list_memories_filtered still finds it by
project; you then read the content with chainmemory_open_sealed. Losing full
text search is the direct consequence of the server being unable to read it, and
there is no way around that which keeps the guarantee. (Solved in v2.8.0:
the search vector is now computed on your machine, so sealed memories are
searchable without the server reading them.)
If you lose the twelve words, the memories sealed with them are gone — for you and for everyone. Write them on paper.
What's new in v2.5.6
Three defects that made tools report confidently wrong things. No new tools.
list_project_templatesnever listed anything. It readtemplates/template_idfrom a response that returnsdefaults/project_id, so it always answered "No templates available" — which meant nobody could learn the id thatadd_project_from_templateneeds. The whole template flow was unreachable.chainmemory_profilegot five of eight fields wrong. It readwallet,memory_count,trust_score,registration_blockandsealed; the API returnsowner,chain_memories/local_memories,reputationandactive. Every profile came back with an empty wallet, zero memories,?reputation andSealed: no, regardless of the real state. It also had no handling for an API key with no registered identity, printingAI Profile #undefined.update_project_statehid the reason when every op was rejected. Rejections were only rendered on the success path, but rejecting all ops leaves the state unchanged and takes the other branch — so the reply saidRejected: 3and nothing else. The only way to find out why was to guess again and pay the fee again.
What's new in v2.5.5
audit_memoryandaudit_state— the two forensic audit endpoints, now reachable from any MCP client. Both acceptdry_run: true, which returns the identical result without charging: an audit you can run as often as you like, and pay for only when you need the receipt on record.audit_statecosts 5 AIC in its paid form, so the tools default to the dry run.- Both endpoints were fixed server-side first: they used to charge before validating, so a mistyped id or project name cost the fee and returned 404.
What's new in v2.5.4
Search and full reads
search_memories— semantic search over your memories (cosine similarity over cached embeddings, blended with recency and importance), returning the full text of each match. Previous versions exposed no search at allget_memory— read one memory in full, decrypted from chain, with an integrity check: the server recomputes the event hash from the plaintext and compares it against the hash anchored on-chainchainmemory_recallandlist_memories_filterednow state plainly that they return 80-character previews, and point toget_memory/search_memoriesfor the full text
Verification — free, and the point of the product
verify_project_state— public, unauthenticated proof of a Project Brain: every anchored version with itsstate_hashand on-chain coordinates, plus how to check them yourself in theProjectStateAnchorcontract. No content is exposedget_memory_proof— the shareable anchoring proof of a single memory:event_hashplus its on-chain coordinates. A third party verifies it without your API key, and the content is never revealed
Cost control
quote_inject— price an inject before paying: which ids exist, which don't, tokens, exact cost with its burn/treasury split, and whether your balance covers it- Correct inject fee — the client now takes the price and the remaining-injects count from the server instead of recomputing them. Previous versions divided by the pre-2026-06-30 price of 0.001 AIC and promised 100× more injects than the balance actually allowed
Roles and hardening
list_role_contracts— discover a project's roles (id, version, status) before reading a contract or assuming a role. Role ids are not guessable; this removes the failed-call round tripinclude_rolesonget_project_state— set tofalseto get the state without the full text of every signed role contract- Input hardening — every user-supplied value that reaches a URL is now validated or escaped. Numeric path parameters must be integers, string path parameters are percent-encoded, and query limits are clamped. Invalid input fails locally with a clear message instead of going out to the network
CHAINMEMORY_API_KEYdeclared in the MCP manifest — the only mandatory variable was missing fromserver.json, so registries and installers never prompted for it
What's new in v2.5
- Project Brain —
get_project_stateconsolidates your atomic memories into a structured, versioned, verifiable project state (decisions, risks, constraints, metrics, and environment: where and how you work), and delivers active role contracts with it in a single call - Verifiable Role Contracts (VRC) — human-signed role contracts for AI agents:
get_role_contract(read the contract),assume_role(open an audited Role Session),release_role(close with a summary) - 37 tools total — memory ops, semantic search, verification proofs, projects, Project Brain, role contracts with audited sessions, selective inject
Quick start
1. Get an API key
Visit https://faucet.chainmemory.ai. You receive an API key (aic_...) and a starter balance of AIC. ChainMemory collects no personal data — your key is your identity.
2. Add to Claude Desktop
Edit your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS, %APPDATA%\Claude\claude_desktop_config.json on Windows):
Restart Claude Desktop. The 37 tools are now available.
3. Try it
- "What do you remember about my projects?" →
chainmemory_recall - "Save this decision: switching to Postgres for the next sprint" →
chainmemory_remember - "Where are we on my-app?" →
get_project_brief(what changed, open risks, priorities, decisions) - "Load the project state for my-app" →
get_project_state(Brain + active role contracts) - "Which roles exist for my-app?" →
list_role_contracts - "Assume the architect role for my-app" →
assume_role(audited Role Session)
All 37 tools
Memory ops (8)
Blind vault (2)
Verification (4)
Project Brain (3)
Verifiable Role Contracts (6)
Projects (5)
Identity & stats (4)
Cross-platform context (1)
Selective inject — paid (4)
Environment variables
For most users only CHAINMEMORY_API_KEY is needed.
How selective inject works
- User (or AI) calls
inject_memorieswith a list of IDs - Backend checks balance (≥ 0.1 AIC required — Fee Schedule v1.0)
- Optimistic response (<500ms): plaintexts returned immediately, transactions queued
- Background: 50% of the fee goes to the ecosystem treasury, 50% is burned
get_inject_historyshows confirmation status
How the blind vault works
chainmemory_new_seedgenerates twelve BIP-39 words from the official 2048 word list, with checksum. Write them down; they are shown once.- Put them in
CHAINMEMORY_SEED_PHRASEand restart the MCP. - On
sealed: true, the phrase is stretched into a seed with PBKDF2-HMAC-SHA512, the content key is derived with HKDF-SHA256, and the text is sealed with AES-256-GCM into a versioned envelope. The blob, a SHA-256 hash and the memory's search vector are sent toPOST /v1/memory/sealed; the text is not. - The search vector (384 numbers) is computed on your machine by ChainMemory's
own engine, from a model downloaded once from
models.chainmemory.aiand checked against its SHA-256 anchored on-chain. It lets the server find the memory without reading it. search_memoriessends the query's vector, not its text, and decrypts sealed matches locally.chainmemory_open_sealedretrieves one blob and decrypts it locally.
No key material is transmitted at any point, and no recovery path exists — a recovery path is exactly what an operator would need in order to read your memories.
What it does not cover: metadata stays visible (timestamps, sizes, project, tags), and so does the search vector, which cannot be turned back into the text but does reflect what it is about. Memories written before sealing cannot be sealed retroactively, and the on-chain anchor is still signed by the server. The operator is trusted to anchor, never to read.
Verify the claim yourself: seal a memory, then call
GET /v1/memory/<id>/decrypted with your API key. It returns 200 with
scheme: "sealed" and the encrypted blob — never the text. That endpoint
derives its key from the API key, which is what an operator would have; faced
with a sealed memory it has nothing to decrypt.
Architecture
Trademark
CHAINMEMORY is a registered trademark in Argentina (INPI, class 42, resolution 3932170), held by the project's founder. The MIT license covers the code, not the ChainMemory name or logo.
License
MIT
來源:README.md,提交 c40f9a5
工具
0版本歷史
6- v2.10.0最新Oct 10, 2026
- v2.9.1Oct 7, 2026
- v2.9.0Oct 6, 2026
- v2.8.1Sep 29, 2026
- v2.8.0Sep 27, 2026
- v2.7.1Sep 16, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分
其他 Memory 整合

Memory.fit
fit.memory官方發布者
託管式 Memory.fit 伺服器,讓 AI 讀取你的訓練、睡眠、恢復與飲食資料,並寫回每週計畫、每日目標和飲食計畫。
pg.ddx.io: the PostgreSQL community's memory
io.ddx.pg官方發布者
pg.ddx.io: the PostgreSQL community's memory 的託管 MCP 服務,由 pg.ddx.io 發布;無需登入;Streamable HTTP;29 個工具。
var.gg Naming Memory
gg.var官方發布者
遠端 MCP 伺服器,可依領域概念推薦並檢索韓、日、中、越、英多語言的程式識別字名稱,並提供 ERD 結構查詢。

Counterparts
ai.counterparts
為 Claude Code 與 Claude Desktop 提供的本地優先長期記憶:助理自行寫下關於你與專案的筆記,並在之後的對話中回想起來。

LAHZE - Persian AI Memory Platform
由 GitHub 帳號 pedramgholizadeh 發布
以波斯語為先的地理記憶平臺:發現地點,起草併發布僅限波斯語的記憶。AI 翻譯