
Engram
io.github.rwnalds由 GitHub 帳號 rwnalds 發布v0.1.2更新於 Oct 24, 2026
Git-backed markdown memory for AI agents; search hides superseded and archived notes.
發布方自己的服務:Engram
概覽
Engram 是自架、以 git 為後端的 Markdown 記憶伺服器,讓 AI 代理能搜尋、讀取與寫入共享筆記庫,並依權威性與時效性過濾過時內容。
- 可以做什麼
- 搜尋、讀取與瀏覽筆記庫:全文搜尋並依權威性排序,讀取、列出、最近筆記、檔案樹、反向連結與連結圖譜,以及結構說明。寫入與整理筆記:建立、編輯、附加、移動、建立資料夾與刪除,需要寫入權限權杖。用取代工具原子地停用舊事實並連結新筆記,或設定到期日,讓搜尋預設隱藏並說明略過了什麼。選用的 Curator 可接收粗略筆記,先搜尋再歸檔、合併或封存,並回傳異動清單。
- 適用情境
- 適合多個代理或團隊成員共用一份長期記憶、且記憶存放在自己擁有的 Markdown 檔案中的情境;也適合代理反覆引用過時事實、需要在搜尋時強制執行停用與到期的團隊。已有 Obsidian 筆記庫並想開放給 MCP 用戶端時同樣適用。
- 執行需求
- 可作為本機 stdio 程序從已發布的容器映像執行,或自架為帶持久磁碟區與常駐索引的 Docker 容器;無伺服器託管不可行。需要一個 Markdown 筆記庫資料夾。HTTP 模式使用每個代理的 bearer 權杖、儀表板的 Google 單一登入,以及選用的 GitHub OAuth 連接儲存庫;選用的 Curator 需要 Anthropic API 金鑰。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 Engram,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
Engram
The second brain your AI agents read and write.
[Engram demo — a home dashboard with recent activity and a Claude Code agent querying the vault]
▶ Watch the full-length video (real-time, full quality)
↗ Try the live demo — no signup. Search retainer price and watch the retired note get withheld.
[Engram - Agent memory that knows what's still true | Product Hunt]
Engram is a self-hosted MCP server + dashboard that gives Claude Code, Cursor, Hermes, and any Model Context Protocol agent shared, long-term memory they read and write — over a plain, git-backed folder of markdown you own. Built for the case a single agent's memory never hits: a team running several agents against one brain.
Autonomous agents forget everything between sessions — and worse, they can't tell what they remember is still true. An agent pulls an old README, a retired price, an API doc you changed months ago, and quotes it with full confidence, because keyword and vector search both rank by resemblance, not truth. Engram makes "is this still true" a first-class, written property: mark a fact superseded or expired and search withholds it — and tells the agent what it skipped and why. Per-agent read/write tokens and a git audit trail of who-wrote-what keep it sane when the writers are a fleet, not just you.
Unlike a headless memory store, you can watch it happen. A fast dashboard lets you search your
brain, see exactly what every agent and teammate changed (with per-file diffs), jump back into
recent notes, and curate it all — while agents read and write the same vault over one MCP endpoint. No
database: your .md files are the source of truth, git is the durable store, and an in-memory index
powers full-text search + a wikilink knowledge graph.
[Deploy on Railway] [Deploy to Render]
Opinionated about how it stores memory — git-backed markdown, no database, agents write (not just read), self-hosted. Unopinionated about what you keep in it — any markdown vault, any folder structure, any MCP client. Point it at a fresh repo or your existing Obsidian vault: no import step, no lock-in.
What it's for · How it compares · Features · Works with · Quick start · MCP tools · Deploy · FAQ · Contributing
What it's for
- Shared memory for a team running multiple agents — one vault, many agents reading and writing concurrently, with per-agent read/write tokens and a git audit trail of who changed what.
- Memory that knows what's still true — retire a price, a term, or a changed API doc and your agents stop quoting it; they're told what they skipped and why. The failure a single agent's memory never fixes.
- Long-term memory for Claude Code and other coding agents — stop re-explaining your project every session.
- A self-hosted, Obsidian-compatible second brain exposed over MCP — your notes, your server, your git repo.
- Memory you can see, not a black box — a dashboard to search, watch (with diffs), and curate what your agents remember.
- Markdown RAG without the vector database — full-text search + a link graph over human-readable files.
How it compares
Most agent memory is built to answer "what did I store about this?" Engram is built to answer "what is still true about this?" — a different question, and the one that bites when an agent quotes a price you retired months ago.
The row that matters is the third one. Similarity search cannot tell a contradiction from a duplicate — a retired price and a live one are textually identical, so the retired one often outranks the live one by being longer and more detailed. That can't be fixed at read time, which is why Engram writes the retirement down when it happens.
[Engram dashboard showing a note marked locked, superseding an earlier pricing note, with backlinks]
This exact pair ships in sample-vault/. Run bun dev, search acme price,
and watch the retired note get withheld with a reason.
Categories, not feature-by-feature audits of specific products, and accurate to the best of my knowledge as of July 2026. If something here misrepresents a tool you maintain, open a PR — I'll fix it.
Features
- MCP server — 15
brain_*tools over one bearer-authenticated HTTP endpoint (POST /api/mcp, streamable HTTP JSON-RPC). Connect any MCP client to a single URL. Per-agent token scopes: a read-only token never even sees the write tools. - Human dashboard — a search-first home, file tree, note viewer with Obsidian callouts, wikilinks, and backlinks, Preview / Edit / Split editor with autosave, ⌘K search + in-page keyboard navigation, "jump back in" recents, and a force-directed knowledge graph.
- Authority-aware search — ranking knows relevance, not truth, so a superseded note repeats your
query words as often as the live one. Every hit carries an authority (
authoritative→current→provisional→superseded→archived) derived from the note's folder and frontmatter — so your agents quote the locked doc, not the dead one. Markdown RAG that won't hand back yesterday's answer. - Temporal validity + explainable rejection — mark a fact
superseded_byanother note or give it avalid_untildate, and search withholds it by default (even if it'slocked) — then hands the agent anexcludedlist of what it skipped, each with a reason ("expired 2026-06-01"). One atomicbrain_supersederetires the old fact and links the new one in a single commit, so add-and-retire can't drift apart. This is the difference between an agent that remembers and one that knows what's still true. - Write-time contradiction guards — authority ranking fixes reading; these stop the vault
accepting the contradiction in the first place. Engram refuses to create a second live note on a
subject a live note already covers (the
acme-pricing-2026.md-beside-acme-pricing.mdbug) and points the agent atbrain_supersedeinstead; refuses to overwrite a note the caller hasn't read; and warns when astatus:isn't a word the ranking model knows, so a typo can't silently strip a note's authority. - Audit trail + access control — every write is attributed in git to the token or human that made it, with expandable per-file diffs in the activity feed. Give an agent a read-only token and it never even sees the write tools; a write token can create, edit, move, and archive.
- The Curator (optional) — Engram's built-in agent harness over your vault. Chat with your
notes (grounded answers, wikilink citations). Or hand
brain_capturea rough dump — a meeting note, a voice transcript — and an agentic loop searches what already exists, then files, merges, or archives and returns a manifest of what it touched. It reads before it overwrites and never deletes. Opus / Sonnet / Haiku, your key. - Markdown-native — plain
.md+ YAML frontmatter +[[wikilinks]]. Drop in an existing Obsidian vault and it just works. - Git-backed — optional auto commit + push of every change. Full history, no lock-in, your data lives in your repo.
- No database — files are the source of truth; an in-memory MiniSearch index + a ported wikilink graph power search and backlinks. Nothing to provision.
- Multi-workspace — connect multiple vault repos (URL + token or GitHub OAuth), rename, switch the active one, or remove them — all from the UI.
- Self-hosted — one Docker container. Railway / Render / Fly / any host with a volume. Not serverless (it needs a persistent volume, a file watcher, and a long-running index).
- Team auth — Google SSO + email allowlist for the dashboard; per-agent bearer tokens — or OAuth for Claude.ai custom connectors — for MCP, created/revoked in the UI. Secrets encrypted at rest.
- Runtime config — toggle git-sync and the Curator right from the home; manage commit author, keys, and OAuth in Settings — no redeploy.
Works with
Any client that speaks the Model Context Protocol — one endpoint, bearer-token auth. Most-used first:
- Claude Code — Anthropic's agentic coding CLI
- Codex — OpenAI's coding agent (CLI + IDE)
- Hermes — always-on autonomous agent runtime
- openclaw — open-source coding agent
- Cursor — AI code editor
- Cline — VS Code agent
- Windsurf — agentic IDE
- Claude Desktop — Anthropic's desktop app
- …and any other MCP client — Continue, Goose, Zed, Amp, and the rest
If it speaks MCP, it can read and write Engram as shared memory.
Quick start
Want to poke at it first? There's a live demo — open, no signup, resets a few times a day. Break it all you like.
Point it at your own vault:
Two ways to run it
-
Hosted mode (team): the dashboard + HTTP MCP server above — self-host it once, many agents and teammates connect over
POST /api/mcp. This is the main mode. -
Local mode (stdio): a plain stdio MCP server over a folder, no HTTP/auth/git — for a single machine, Claude Desktop / Cursor, or a registry's Docker introspection:
Same
brain_*tools. Built fromDockerfile.mcp.
Each mode ships as its own image, and they are not interchangeable:
Deploying the stdio image as a web service is the one mistake worth calling out: it can only 502, because there is nothing listening. It now refuses to start on a PaaS and tells you this instead.
MCP tools
Agents only ever see the active vault — no repo, workspace, or GitHub tools are exposed.
A read-scope token sees only the read tools. brain_capture appears only when the Curator is full.
Connect an agent (the dashboard → Connect page shows the exact command + token):
Deploy
Runs anywhere you can run a Docker container with a persistent volume — Railway, Render, Fly, or your own box. Serverless (Vercel) won't work: Engram holds a volume, a file watcher, and an in-memory index that a serverless function can't keep alive.
- Deploy this repo (root
Dockerfile), mount a volume at/data, setENGRAM_DATA_DIR=/data. - Connect your vault repo(s) in the dashboard (Workspaces) — by URL + token, or GitHub OAuth.
- Sign in with Google, create MCP tokens on the Connect page, point your agents at the URL.
Most runtime config (git-sync, AI capture, GitHub OAuth, app name) is editable in the Settings page — only auth/infra bootstrap vars live on the host. Full setup: DEPLOY.md.
- Railway: New Project → Deploy from GitHub repo → add a Volume at
/data. - Render: one-click via the bundled
render.yaml(Docker + a/datadisk).
Deploying from a prebuilt image instead of the repo? Use ghcr.io/rwnalds/engram-app:latest —
not engram:latest, which is the stdio server and cannot answer HTTP. Set the healthcheck to
/api/health.
FAQ
How do I give Claude Code long-term memory?
Deploy Engram, connect a markdown vault, and claude mcp add the endpoint. The brain_* tools let
Claude Code search, read, and write persistent notes across sessions.
Can multiple AI agents share one knowledge base?
Yes. Every agent points at the same MCP URL and reads/writes the same active vault — that's the point.
Give each agent its own bearer token, read or write — a read-only token can't mutate your notes.
How do I stop an agent from quoting outdated facts?
Retire the fact and search stops surfacing it. When a value changes, call brain_supersede(old, new) —
one atomic commit marks the old note superseded_by the new one, and it's withheld from search by
default (even if it's locked). Or set valid_until: 2026-12-31 on a note and it self-expires.
Retired matches don't vanish silently: brain_search returns them in an excluded list with a
reason ("expired 2026-06-01"), so the agent can say what it ignored and why instead of quoting it.
What stops an agent just adding a second, contradicting note?
Engram refuses the write. Told "the price is now X", an agent that can't overwrite a note it never
read will happily add acme-pricing-2026.md next to acme-pricing.md — nothing is corrupted, and
you now have two live notes disagreeing about one number. That write is rejected with a pointer to
brain_supersede, which retires the old note and adds the new one in a single commit. Pass
allow_conflict: true when both notes genuinely belong.
How do I know what an agent changed? Every write is committed to git attributed to the token or human behind it, and the dashboard's activity feed shows per-file diffs — a built-in audit trail for autonomous agents.
Does it work with my Obsidian vault?
Yes. It reads plain markdown with frontmatter and [[wikilinks]], and renders Obsidian-style callouts
and backlinks. No import step.
Do I need a vector database? No. Engram uses full-text search (MiniSearch) plus a wikilink graph over human-readable markdown — no embeddings service, no vector store to run.
Can I chat with my notes? Yes — enable the optional Curator, a chat agent that searches and reads your vault to answer with wikilink citations (Opus / Sonnet / Haiku). It's read-only in chat, so it helps you think without changing anything, and it runs on your own Anthropic key.
Can I see what my agents changed? Yes — the Activity view reads your vault's git history and shows every change (agents and teammates alike), expandable to per-file diffs. Since it's just git, you get the full audit trail for free.
Is my data locked in?
No. It's just .md files in a git repo you own. Turn Engram off and you still have every note and its
full history.
Where does it run / is it self-hosted? You host it. One Docker container on Railway / Render / Fly / any VM with a volume. Your keys, your data.
Contributing
Issues and PRs welcome — especially where the validity model breaks against a vault shaped differently from mine.
- CONTRIBUTING.md — setup, conventions, and the pre-PR checklist.
- docs/curator.md — how the optional Curator agent loop works.
- SECURITY.md — please report vulnerabilities privately, not as an issue.
If Engram is useful to you, starring the repo genuinely helps other people find it.
Stack
Next.js 16 (App Router) · React 19 · TypeScript · Tailwind v4 · shadcn/ui · bun · MiniSearch · d3-force · MCP SDK. MIT licensed.
Keywords: MCP server · Model Context Protocol · second brain for AI agents · agent memory · long-term memory for Claude Code · shared memory for AI agents · self-hosted knowledge base · Obsidian-compatible · markdown · knowledge graph · wikilinks · PKM · Zettelkasten · git-backed notes · Hermes agent memory · Cursor memory · RAG without a vector database · chat with your markdown notes · git-backed agent activity feed · audit trail for AI agents · authority-aware search · read-only vs write MCP tokens · agent access control · self-organizing notes · agentic note capture · AI that files your notes · temporal validity · stale memory · agents quoting outdated facts · supersede · note expiry · shared memory for a team of agents · Basic Memory alternative · mem0 alternative.
來源:README.md,提交 39ddf22
工具
0版本歷史
1- v0.1.2最新Sep 16, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分
其他 Engram 整合

Engram
tools.engram官方發布者
Engram 為 AI 助理提供跨工具、工作階段、程式碼儲存庫與團隊成員共享的持久記憶層。

Engram
由 GitHub 帳號 TushaeBXN 發布
面向AI的本機私密長期記憶:逐字儲存、可搜尋、可更正。無需LLM或API金鑰。AI 翻譯

Engram: AI memory you can edit in Obsidian
由 GitHub 帳號 engram-app 發布
託管式 MCP 記憶伺服器,讓 Claude、ChatGPT 等 MCP 用戶端共用可讀寫的筆記,並可在 Obsidian 或網頁應用程式中編輯。

Engram
由 GitHub 帳號 devinmlowe 發布
Engram 是面向編碼代理的本地優先認知記憶伺服器:擷取對話、提取結構化知識,並提供混合檢索、知識圖譜與記憶管理。

Engram
由 GitHub 帳號 tstockham96 發布
Engram 為 AI 助理提供本機 SQLite 記憶庫,支援語意檢索、知識圖譜與由 LLM 驅動的記憶整併。