Self-hosted MCP server + dashboard giving Claude Code, Cursor & Hermes agents shared long-term memory over a git-backed markdown vault. Agent-native, Obsidian-compatible second brain — markdown RAG, no vector DB.
git clone https://github.com/rwnalds/engram{
"mcpServers": {
"engram": {
"command": "node",
"args": ["/path/to/engram/dist/index.js"]
}
}
}Resumen de MCP Servers
<p align="center">
<img src="assets/logo.png" alt="Engram logo" width="120" height="120" />
</p>
<h1 align="center">Engram</h1>
<p align="center"><b>The second brain your AI agents read and write.</b></p>
<p align="center">
<a href="https://github.com/rwnalds/engram/blob/main/assets/demo.mp4">
<img src="assets/demo.gif" alt="Engram demo — a home dashboard with recent activity and a Claude Code agent querying the vault" width="820" />
</a>
</p>
<p align="center"><sub><a href="https://github.com/rwnalds/engram/blob/main/assets/demo.mp4">▶ Watch the full-length video</a> (real-time, full quality)</sub></p>
<p align="center">
<b><a href="https://engram-demo.up.railway.app">↗ Try the live demo</a></b> — no signup. Search <code>retainer price</code> and watch the retired note get withheld.
</p>
<p align="center">
<a href="https://www.producthunt.com/products/engram-3?embed=true&utm_source=badge-featured&utm_medium=badge&utm_campaign=badge-engram-4cb7e488-c380-4fa7-a2c7-0129b971c90e" target="_blank" rel="noopener noreferrer"><img alt="Engram - Agent memory that knows what's still true | Product Hunt" width="250" height="54" src="https://api.producthunt.com/widgets/embed-image/v1/featured.svg?post_id=1202294&theme=light&t=1784627191540"></a>
</p>
---
Engram is a self-hosted **MCP server + dashboard** that gives Claude Code, Cursor, Hermes, and any
[Model Context Protocol](https://modelcontextprotocol.io) 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**.
[](https://railway.com/deploy/engram?referralCode=PEidIe&utm_medium=integration&utm_source=template&utm_campaign=generic)
[](https://render.com/deploy?repo=https://github.com/rwnalds/engram)
[](https://github.com/rwnalds/engram/actions/workflows/ci.yml)
[](./LICENSE)
[](https://github.com/rwnalds/engram/pkgs/container/engram)
> **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](#what-its-for)** · **[How it compares](#how-it-compares)** · **[Features](#features)** ·
**[Works with](#works-with)** · **[Quick start](#quick-start)** · **[MCP tools](#mcp-tools)** ·
**[Deploy](#deploy)** · **[FAQ](#faq)** · **[Contributing](#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.
| | **Engram** | Vector-store memory<br><sub>(mem0, Zep, …)</sub> | Markdown memory<br><sub>(Basic Memory, …)</sub> | Plain RAG over docs |
|---|---|---|---|---|
| **Storage** | markdown files, git is the database | embeddings in a vector DB | markdown files | embeddings in a vector DB |
| **Ranking** | relevance **× authority** | similarity | relevance | similarity |
| **Knows a fact is retired** | ✅ `superseded_by` + `valid_until`, enforced at search | — | — | — |
| **Explains what it withheld** | ✅ `excluded[]` with a reason per note | — | — | — |
| **Retire + replace atomically** | ✅ `brain_supersede`, one commit | — | — | — |
| **Refuses contradicting writes** | ✅ at write time, not read time | — | — | n/a (read-only) |
| **Audit trail** | ✅ git, per-write attribution, per-file diffs | varies | git, if you commit | — |
| **Per-agent access control** | ✅ read / write token scopes | varies | — | — |
| **Human UI** | ✅ dashboard, search, diffs, graph | varies | — | — |
| **Runs on** | your box, one container | mostly hosted SaaS | your box | your box |
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.
<p align="center">
<img src="assets/screenshot-note.png" alt="Engram dashboard showing a note marked locked, superseding an earlier pricing note, with backlinks" width="900" />
</p>
<p align="center"><sub>This exact pair ships in <code>sample-vault/</code>. Run <code>bun dev</code>, search <code>acme price</code>,
and watch the retired note get withheld with a reason.</sub></p>
<sub>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.</sub>
## 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_by` another note or give it a
`valid_until` date, and search **withholds it by default** (even if it's `locked`) — then hands the
agent an `excluded` list of what it skipped, each with a reason (`"expired 2026-06-01"`). One atomic
**`brain_supersede`** retires 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.md` bug) and
points the agent at `brain_supersede` instead; refuses to overwrite a note the caller hasn't read;
and warns when a `status:` 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_capture` a 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-natLo que la gente pregunta sobre engram
¿Qué es rwnalds/engram?
+
rwnalds/engram es mcp servers para el ecosistema de Claude AI. Self-hosted MCP server + dashboard giving Claude Code, Cursor & Hermes agents shared long-term memory over a git-backed markdown vault. Agent-native, Obsidian-compatible second brain — markdown RAG, no vector DB. Tiene 8 estrellas en GitHub y se actualizó por última vez yesterday.
¿Cómo se instala engram?
+
Puedes instalar engram clonando el repositorio (https://github.com/rwnalds/engram) o siguiendo las instrucciones del README en GitHub. ClaudeWave también te ofrece bloques de instalación rápida en esta misma página.
¿Es seguro usar rwnalds/engram?
+
rwnalds/engram aún no ha sido auditado por nuestro agente de seguridad. Revisa el repositorio original en GitHub antes de usarlo en producción.
¿Quién mantiene rwnalds/engram?
+
rwnalds/engram es mantenido por rwnalds. La última actividad registrada en GitHub es de yesterday, con 0 issues abiertos.
¿Hay alternativas a engram?
+
Sí. En ClaudeWave puedes explorar mcp servers similares en /categories/mcp, ordenados por popularidad o actividad reciente.
Despliega engram en tu cloud
Lleva este repo a producción en minutos. Cada plataforma genera su propio entorno con variables de entorno editables.
¿Mantienes este repo? Añade un badge a tu README
Pega el badge en tu README de GitHub para mostrar que está auditado por ClaudeWave. Cada badge enlaza de vuelta a esta página y muestra el Trust Score actual.
[](https://claudewave.com/repo/rwnalds-engram)<a href="https://claudewave.com/repo/rwnalds-engram"><img src="https://claudewave.com/api/badge/rwnalds-engram" alt="Featured on ClaudeWave: rwnalds/engram" width="320" height="64" /></a>Más MCP Servers
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.
User-friendly AI Interface (Supports Ollama, OpenAI API, ...)
An open-source AI agent that brings the power of Gemini directly into your terminal.
The fastest path to AI-powered full stack observability, even for lean teams.
🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl!
Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface