oliphant
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@oliphantrecall auth decisions and check if their evidence still holds"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
___
.-' '-.
/ o o \ o l i p h a n t
| <3 | never forgets.
\ \_/ / never lies.
'-.___.-'oliphant
Git-native, self-verifying memory for coding agents.
Every memory ships with receipts — file paths, grep patterns, commands.
When reality changes and a memory stops being true, oliphant doctor catches it,
and your CI fails until a human retires the lie.
Zero dependencies. Zero cloud. Zero daemons. Your memory is just files in your repo — versioned in git, reviewable in PRs, owned by your team.
The 30-second demo
A memory lies → doctor re-runs its receipts → CI exits 1 → a human forgets it. Loop closed.
Related MCP server: AI Dimag
The problem
Your coding agent is a goldfish with a README.
Every session starts from zero. The agent re-discovers that the repo uses bun, that
api.tsis generated, that test env needsDATABASE_URL=...— again and again, burning your tokens and your patience.AGENTS.mdrots. The "always editsrc/gen/notsrc/gen.out/" note was true eight months ago. The agent still believes it. Nobody updates docs that live outside the code — so agents confidently execute expired instructions."Memory" products are the wrong shape. Vector DBs, embeddings, cloud dashboards, per-user memory for chatbots — built for app developers, not for your repo and your team. Meanwhile Cursor/ChatGPT "memories" are locked inside one vendor.
oliphant is a different bet: memory is a repo artifact — like go.mod, package.json or .editorconfig. Versioned. Reviewed in PRs. Shared by every agent and every human on the team. And above all: honest by construction, because every claim carries receipts that get re-verified against your actual code.
60-second demo
$ oliphant remember "auth proofs are HMAC-SHA256, never store plaintext" \
--kind decision --tag auth \
--evidence path:src/auth.js --evidence "grep:createHmac@src"
✓ remembered mem_06f0ba952b3a
receipts: path:src/auth.js, grep:createHmac@src
$ oliphant compile
◍ AGENTS.md · CLAUDE.md · .cursor/rules/oliphant.mdc · .claude/skills/oliphant/SKILL.md
$ oliphant recall "how does auth work?"
[decision] auth proofs are HMAC-SHA256, never store plaintext
receipts: path:src/auth.js, grep:createHmac@src…six weeks later, someone refactors auth away:
$ oliphant doctor
────────────────────────────────────────────────────────────────
🩺 oliphant doctor
────────────────────────────────────────────────────────────────
✗ dead 0.31 decision: auth proofs are HMAC-SHA256, never store plaintext
✗ path:src/auth.js — missing
✗ grep:createHmac — pattern /createHmac/ not found under src
→ retire (run: oliphant forget mem_06f0ba952b3a)
✓ ok 0.85 fact: CI runs node --test before any merge
✓ command:npm test — exit 0
────────────────────────────────────────────────────────────────
freshness [██████░░░░] 58% (ok 1 / rotting 0 / dead 1)
$ oliphant forget mem_06f0ba952b3a "refactored away in #482"
◍ retired — kept in the journal (memory is never silently deleted)In CI, oliphant doctor --ci exits 1 while any un-retired memory is dead. A lie can't hide: it stays on the bill until a human kills it.
Install
npm i -D oliphant # or: npx oliphant init (no install needed)
oliphant init # scaffolds .memory/ inside the repoThat's it. oliphant init also generates AGENTS.md + CLAUDE.md (they start empty), and you commit .memory/ like any other file.
The three mechanisms
1 · Receipts — memory that shows its work
A memory is not a vibe. It's a claim plus evidence, stored in .memory/journal.jsonl (append-only, event-sourced) and materialized to memories.json:
{
"id": "mem_06f0ba952b3a",
"claim": "auth proofs are HMAC-SHA256, never store plaintext",
"kind": "decision",
"tags": ["auth", "security"],
"evidence": [
{ "type": "path", "value": "src/auth.js" },
{ "type": "grep", "value": "createHmac", "path": "src" },
{ "type": "command", "value": "npm test" }
],
"ts": "2026-09-27T03:03:00Z"
}receipt type | stays true while… | fails when… |
| the file exists | deleted/renamed |
| the pattern appears under | the code moved on |
| the command exits 0 | the invariant broke |
2 · Rot — honesty has a half-life
doctor re-runs every receipt against the current tree. Then each memory gets a score: freshness = confidence × 0.5^(days/halfLife) − 0.15×failures + 0.05×verifications (default half-life 30 days, tune in .memory/config.json). Memories that keep passing checks get stronger; memories that fail rot. Compilation ranks by freshness, so your context budget is spent on memory that is still true.
3 · Retire — dead memory needs a funeral
A dead memory never silently disappears. It stays in every doctor report and keeps failing CI until a human runs oliphant forget <id> <reason>. The record is kept in the journal forever — with the reason — so future agents (and humans) can see what was believed and why it died. Forgetting is a decision, not a default.
Wire it into your agent
MCP (Claude Code, Cursor, Codex, anything speaking Model Context Protocol)
claude mcp add oliphant -- npx -y oliphant serveFour tools appear: oliphant_recall (before assuming how the repo works), oliphant_remember (after durable decisions), oliphant_doctor, oliphant_stats. The server is hand-rolled JSON-RPC over stdio — zero dependencies, ~200 lines, auditable in one sitting.
Compiled files (everyone else)
oliphant compile writes a token-budgeted block (default 2000 tok) into the files agents actually read:
file | consumed by |
| Codex, Gemini CLI, OpenCode, Factory, … |
| Claude Code ( |
| Cursor |
| Claude Code Agent Skills |
Your own notes live outside the <!-- OLIPHANT:BEGIN/END --> block and are never touched. Compile is idempotent — no PR noise.
CI: fail on lies
# .github/workflows/memory.yml
- uses: wsxiaolin/oliphant@v1
with:
skip-commands: false # true if you don't want command receipts in CIOr plain:
- run: npx -y oliphant doctor --ci --skip-commandsExit code 1 while un-retired dead memories exist. Rotting ones only warn. That's the whole contract.
Commands
oliphant init scaffold .memory/ + agent files
oliphant remember "<claim>" record memory (with receipts)
--kind decision|fact|gotcha|pattern|preference
--tag <t> (repeatable)
--evidence path:<p> | grep:<pat>@<dir> | command:<cmd> (repeatable)
--source "claude-code@session-42" who taught this
oliphant recall "<query>" keyword search, ranked by relevance+freshness
oliphant compile regenerate AGENTS.md / CLAUDE.md / Cursor / Skill
oliphant doctor [--ci] [--skip-commands] [--json]
re-verify every receipt against reality
oliphant ls list all memory with status glyphs
oliphant stats counts, freshness, token budget
oliphant forget <id> "<reason>" retire a memory (journal keeps the corpse)
oliphant serve MCP server over stdioWhy not X?
lives in your repo | git-versioned, PR-reviewable | self-verifying | zero infra | agent-agnostic | |
oliphant | ✅ | ✅ | ✅ receipts + doctor + CI | ✅ 0 deps | ✅ MCP + compiled files |
AGENTS.md by hand | ✅ | ✅ | ❌ rots silently | ✅ | ✅ |
Mem0 / Zep / Letta | ❌ service | ❌ | partial | ❌ vector DB / cloud | mostly API |
memory-bank markdown patterns | ✅ | ✅ | ❌ trust me bro | ✅ | ❌ Claude-only-ish |
vendor "memories" (Cursor etc.) | ❌ | ❌ | ❌ | — | ❌ locked to one product |
oliphant is not an embedding database and doesn't want to be. Repo-scale memory is dozens of claims, not millions of chat logs — keyword search with freshness ranking is transparent, deterministic, and debuggable. The moment you need vectors, you'll know.
Design principles
Memory is a repo artifact. If it's not in git, it doesn't exist.
No memory without receipts. A claim you can't verify is a rumor.
Dead memory fails CI. The lie stays on the bill until a human buries it.
Zero dependencies. You can read the entire codebase in one coffee.
npm auditis forever green.Agent-agnostic. MCP today; whatever protocol wins tomorrow, compiled markdown still works.
FAQ
Is this safe? command receipts run shell commands. Same trust level as package.json scripts: receipts come from your own repo's journal, written by your team and your agents, reviewed in PRs. Untrusted? Run doctor with --skip-commands, or don't commit command receipts. Receipts never run on install — only when you run doctor.
What about secrets? Receipts store paths and patterns, never file contents. doctor prints only existence/exit codes, never source. Still: don't put secrets in claims, obviously.
Can I edit .memory/memories.json by hand? Prefer remember/forget (the journal stays truthful), but yes — it's your repo. oliphant doctor will tell you if you break invariants.
Does it work outside git? Yes — but you lose the whole point (versioning + PR review). Just use git.
Monorepos? One .memory/ per repo root for now; per-package memory is on the roadmap.
Roadmap
oliphant revive— resurrect a dead memory with new receiptsoliphant import— bootstrap from an existing AGENTS.md / CLAUDE.mddoctor badge (SVG) for READMEs
per-package
.memory/for monoreposteam analytics: who remembers, what rots most (from the journal)
Contributing
PRs welcome — it's a small, readable codebase on purpose. node --test test/ is the whole test story (33 tests, zero deps).
License
MIT — elephants included.
This server cannot be deployed
Maintenance
Related MCP Connectors
- memnodeOAuthdev.memnode
Persistent, inspectable memory for AI agents with lineage, correction, and a hosted MCP endpoint.
Shared memory for coding agents. Stop re-explaining your codebase every session.
- KogniteOAuthdev.kognite
Hosted agent memory: store, search, and recall facts across sessions from any MCP client.
Cross-session memory for AI agents with a Source Receipt for every memory, over MCP.
Related MCP Servers
- AlicenseAqualityBmaintenanceHosted memory for coding agents, exposing commit_mem, recall, and status over stdio. Each write carries provenance, contradictions surface as inspectable state changes, and a bad run can be rolled back from a snapshot.8305 PyPI1Business Source 1.1
- AlicenseAqualityAmaintenanceMCP server that gives coding agents persistent, verified memory of codebase decisions, conventions, and skills, with evidence-based claims that are re-checked via git hooks and human-gated review. Enables memory search, propose/approve, chat harvesting, and critique across MCP-compatible tools.21145 npm1MIT
- AlicenseNot gradedqualityBmaintenanceExposes a living systems memory vault to autonomous agents, letting them search notes with BM25 ranking, read sections within token budgets, extract API/port/schema contracts, compute dependency blast radius, and run machine-verifiable invariant assertions before mutating code. It also supports surgical frontmatter edits, schema linting, wikilink integrity checks, and worklog recording, over stdio MCP.MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI coding agents to persist project memory across sessions by compiling decisions, progress, and pitfalls into git-linked, evidence-backed entries. It lets clients add, query, inject, scan for stale, check assertions on, and compute ROI of those memories over stdio.MIT