mgi-mind
Long-term memory for AI assistants, local. Rust + Qdrant + ONNX, served over MCP. Hybrid search with reranking.
Install / Use
claude mcp add madgodinc -- npx -y github:madgodinc/mgi-mindIf the server publishes to npm under a different name, use that package instead — check the repo README.
MCP Server
Model Context Protocol server
Quality Score
Category
AI & Machine LearningSupported Platforms
Our assessment of mgi-mind
mgi-mind scores 81/100 on our quality scale, 646th of 841 AI & Machine Learning skills we index.
Its MCP Server is 37 KB long, well organised into 41 sections with 17 code examples: a thorough specification that gives an agent plenty to work with.
It has 10 GitHub stars, so there is little community track record yet; judge it on its content.
Maintenance, license and trust
- The repository was last updated 6 days ago, so mgi-mind is actively maintained.
- It is released under the Apache-2.0 license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 97/100, with no cautions. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
mgi-mind compared with similar skills
All 4 of these similar skills score higher than mgi-mind; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| mgi-mind (this skill)by madgodinc | 81 | 10 | 6d ago | MCP Server |
| headroomby headroomlabs-ai | 100 | 78.0k | today | CLAUDE.md |
| Agent-Reachby Panniantong | 100 | 104.6k | 2d ago | MCP Server |
| Scraplingby D4Vinci | 100 | 90.0k | today | MCP Server |
| crawl4aiby unclecode | 100 | 86.4k | 1d ago | MCP Server |
Frequently asked questions
- How do I install mgi-mind?
- Run
claude mcp add madgodinc -- npx -y github:madgodinc/mgi-mind. The install tabs above show the steps for each supported agent. - Which AI agents does mgi-mind work with?
- It is written for Claude Code and Claude Desktop, as a MCP Server file. Other agents that read the same format can often use it too.
- Is mgi-mind safe to use?
- It is Apache-2.0-licensed and scores 97/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is mgi-mind still maintained?
- The repository was last updated 6 days ago, so mgi-mind is actively maintained.
Skill content
View source on GitHubMGI-Mind
Latest release: v2.8.2 · CHANGELOG · Discussions · Issues · Contributing
<p align="center"> <a href="https://mcprush.com/madgodinc/mgi-mind-mcp"><img width="380" height="200" src="https://mcprush.com/badge/mgi-mind-mcp/card.svg" alt="MGI-Mind MCP server" loading="lazy" /></a> </p>Local long-term memory for AI assistants. One Rust binary, a local Qdrant vector database, local ONNX models. Speaks MCP, so Claude Code and other assistants read and write memory on their own. Also a normal CLI.
<p align="center"> <img src="docs/demo.gif" alt="Store a fact, then recall it by meaning: a query with no shared keywords still finds it" width="900"> <br> <em>Store a fact in plain words, recall it with a query that shares none of them. Semantic search matches intent. Your assistant runs the same <code>mind_search</code> on its own over MCP. Regenerate with <code>vhs docs/demo.tape</code>.</em> </p>The same exchange inside an assistant:
You: what was the deploy server again?
Assistant (calls mind_search "deploy server"):
-> "Deploy server is 10.0.0.5:8080, SSH as deploy@, key in vault" (source: infra.md)
You: right, thanks
Nothing leaves the box. Embeddings, search, reranking and the vault are all local. No cloud account, no API key, no telemetry.
Contents
- What it is
- Why bother
- Quick start
- Using it
- How it works
- Command reference
- Configuration
- Languages and the reranker
- Changing the embedding model
- Troubleshooting
- Security
- Status and audit
- Project layout
- License
What it is
MGI-Mind sits between you and your assistant. The assistant writes short notes ("memories") and facts as a conversation goes, and pulls the relevant ones back when they matter.
Retrieval, not just storage:
- Hybrid search. Each memory is stored as two vectors: a dense vector
(multilingual-e5-base, 768 dims) for meaning, and a sparse term-frequency
vector (TF-IDF, BM25-style) for exact words. A query runs both arms and
fuses them with Reciprocal Rank Fusion. "The server box" finds "deploy
host" through the dense arm;
fossilize_replayfinds the one note that contains that exact token through the sparse arm. - Cross-encoder reranking. Fused top candidates are re-scored by bge-reranker-base, which reads the query and each passage together and is more accurate than comparing vectors. On by default and English-tuned; see Languages and the reranker for the trade-off on other languages.
- One warm process.
mgimind mcpis the MCP server itself: it runs for the whole session, models load once and stay warm in memory, so a lookup costs milliseconds instead of reloading on every call.
Around retrieval there's a knowledge graph for structured facts, per-agent session logs for cross-session continuity, and an encrypted terminal-only vault for secrets.
The validity model
Hybrid search is table stakes; most memory tools have some version of it. The part that is harder to find is what keeps the store from ossifying as it fills with old, contradictory, or self-reinforcing beliefs. These run mostly on their own:
- Duel rule. When a new fact contradicts an existing one on the same
subject and predicate, the second write resolves against the first instead
of piling up a second "truth". An entrenched fact (many dependants,
confirmations, age) holds; a strong fresh fact flips it and dampens the
loser to a hidden
stalestatus; a borderline one is marked contested or diverted to quarantine. Confirmations accrue live: re-asserting the same triple raises its ownconfirmations_count, so a fact confirmed a few times resists a single fresh contradiction (contested, not flipped) while an unconfirmed young fact still flips as easily as before.dependantsstill only comes from themigrate-v14 dependants --applybackfill - a cheap live producer (it would mean walking the graph on every write) is not implemented. Nothing is deleted, so the audit log keeps the loser; a re-proposedstaleloser gets a fair new duel against whatever is current, keeping its own originalcreated_atand confirmation history rather than starting over. Automatic, inside a normalmind_fact add. - Doubt window. An entrenched fact has to keep re-justifying itself. Every
fact query measures how far the current context has drifted from the context
the fact was written in; after five consecutive drifted retrievals the fact
stops outranking facts that still hold up, and any single in-context
retrieval resets the count. Nothing is hidden or deleted. Drift is measured
on vectors with the corpus mean removed, because raw cosine cannot separate
topics in an anisotropic embedding space (see
mgimind calibratebelow). The current context is the running process's own recent queries, so this applies inside a warmmgimind mcporserve-httpsession; a one-shot CLI command has no context yet and no fact is penalised for that. This ships in shadow: drift is measured and recorded, and no fact changes, until you setdoubt_drift_thresholdfrom your own store's numbers and switchdoubt_drift_modeto"enforce". A background pass separately re-tests entrenched facts that have gone quiet, under hard guarantees: never during a tool call, a per-tick cap, and a load-aware cadence. - Inheritance discount.
mind_context's briefing (what a session sees at start) marks every fact it surfaces as inherited for that process. If a duel challenger is a re-proposal of one of those inherited facts - the agent echoing back what it was told rather than independently reconfirming it live - that challenge counts at half weight. The flag clears the moment the agent actually re-asserts the fact live and it lands without a conflict. Single-source decay (repeated confirmation from the same source counting for less each time) has the formula (diversity_weighted_count) but no live caller yet - not implemented, no "cannot co-confirm" guarantee today. - Two time axes on facts. Record-time (
created_at/valid_until: when the store learned/retired a value) is bi-temporal with the superseded chain: a predicate can be registered (mind_predicate) as single-valued, temporal-single (one current value, but the previous ones are kept and queryable by date viamind_history), or multi-valued, and a superseded value is hidden from default ranking, not erased. An optional second axis, world-time (valid_from, settable on add), records when a fact became true in the world instead of when the store heard about it;mind_fact action=querywithas_of+world_time=trueresolves point-in-time queries against it, falling back to record-time per fact when it has novalid_from. Existing facts need no migration - they simply have novalid_fromand behave exactly as before. - Explicit invalidate is final.
mind_fact action=invalidateis a one-way door: re-adding the same triple afterward refuses (verdictinvalidated) instead of silently reviving it.mind_fact action=restoreis the only way back. - Typed outcome signals.
mind_outcomerecords that a remembered fix actually worked (test_passed,code_compiled,user_confirmed,cited_by). A real success raises a memory's weight and marks a procedure verified; a failure pulls the weight down rather than being ignored.
These are research-shaped mechanisms, and their tuning constants are still
being calibrated (the TODO(phase-4-calibration) markers in duel.rs /
doubt.rs are honest). The shape is the point: a memory that argues with
itself and demotes what stops holding up, instead of accreting forever.
mgimind calibrate measures whether that shape behaves as intended. It runs a
corpus of realistic conflict situations through the live duel formulas and
reports how many land on the outcome a person would expect: a fresh unsupported
claim cannot overturn an entrenched belief, a CI signal can, repetition alone
coexists rather than overwriting. Today 14 of 15 scenarios match intent; the one
that does not is printed with its reason, not hidden, and the suite runs in CI.
It also reports the doubt window's drift distribution, and that report exists
because of what it found. The drift threshold was 0.4, picked in 384-dim MiniLM
space and left in place when the default model became 768-dim multilingual-e5.
Measured on a live store, 400 memories and all 79800 pairs, raw cosine ran from
0.666 to 0.972: the threshold could not fire once. The corpus mean vector had
norm 0.884, so almost all of that cosine was a component every embedding shares.
Centering fixes the measurement, and calibrate proposes a threshold from the
drift your own store produces rather than from a constant that travelled between
embedding spaces.
This measures the shape of the validity model, separate from retrieval recall (R@k, see BENCHMARKS.md). The two are different numbers and never belong in the same table.
Why bother
An assistant without memory asks for the same context every session and can't build on yesterday's work. The usual workaround is you keeping notes, tags, and folders, which the assistant still can't read by meaning.
The thing MGI-Mind does that Obsidian and Notion don't: the system decides what to write down, you don't. The MCP server reads what the assistant is doing in real time and routes facts, decisions, and fixes into the store through a relevance gate. You don't file, you don't tag, you don't decide what's worth saving. Low-signal candidates land in a quarantine layer (recoverable on re-assertion) instead of polluting retrieval.
How it compares to the obvious alternatives:
- Plain notes (Obsidian, Notion). Strong as your personal notebook,
but the assistant can't search them by meaning, and every keystroke is
equally important to a folder of
.mdfiles. - Bare vector database. Semantic search, but no exact-term matching, no reranking, no dedup, no sessions, no facts, no secrets handling, no relevance gate, no procedural memory. You assemble all of that.
- Hosted memory API. Your data on someone else's servers. Closes the box on inspection, dedup behaviour, and what the relevance gate is actually doing.
MGI-Mind is the assembled local version: hybrid + reranked retrieval, the relevance gate, dedup, facts, sessions, procedural memory ("error → fix" playbooks), and a terminal-only vault, all behind one binary you run yourself.
A note on evaluating it. BENCHMARKS.md reports retrieval recall (R@k on LongMemEval-S, zero-API, no LLM judge): given a question, did the gold session land in the top-k. On the default CPU config that is R@5 ≈ 98%. This is not the same metric as the QA-accuracy numbers other memory tools publish (they run an answerer and a judge over their retrieval), so do not put it in the same table. It measures whether the evidence was retrievable, not whether an LLM then answered correctly. mgi-mind has no answering step, so retrieval recall is the number it actually owns.
The honest gap: the validity model (duel rule, doubt window, supersession)
is the differentiator, and retrieval recall does not test it. Two things test
it instead. mgimind calibrate checks behavioral shape aga
Truncated for display — read the full file on GitHub.
Related Skills
headroom
78.0kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
Agent-Reach
104.6kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
Scrapling
90.0k🕷️ The BEST Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scrapling_dev
crawl4ai
86.4kOpen-source web crawler and scraper for LLMs and AI agents: any website into clean, LLM-ready Markdown. Run it yourself, or use Crawl4AI Cloud with one key. Join our Discord https://discord.gg/VuxzM8mtf
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
