mnemos.searchLABSCO SUMMARY
Answers that carry a line range, and writes that are gated separately.
Citations are the whole design: retrieval returns the file, the section and the lines, so a claim is checkable rather than plausible. The permission model is unusually careful for a memory tool — reads are open, writes need one flag, deletes and moves need another, and anything written is secret-scanned first. One documented gap to know: moving a file does not rewrite inbound markdown links to the old path, it logs a warning.
What it is
A single cgo-free Go binary that indexes plain-Markdown folders — ADRs, design docs, runbooks, notes, source — and serves them over MCP so an agent searches your own knowledge instead of guessing. Every answer lands on a file#section and a line range you can open. No vector database, no Python or Node service, and nothing leaves the machine.
What you get
- Ranked, filtered retrieval with citations attached —
mnemos.search - A precise chunk read by
chunk_id, or a whole document byuri, optionally pulling in its one-hop link neighbours —mnemos.read - Top results returned as LLM-ready context blocks addressed
uri:start-end—mnemos.context - A document's link graph: outbound links and inbound backlinks, with dangling targets marked
resolved: false—mnemos.related - The knowledge tree walked on disk with index metadata attached and an
indexedflag, so files you have not indexed yet are still visible —mnemos.list - Writes behind an explicit gate (
allow_write = true): a note written into memory at an auto-named or explicit path, and an existing.txt/.mdconverted into a structured document — both secret-scanned before they are written —mnemos.remember,mnemos.okfy - Deletes and moves behind a second gate (
allow_delete = true), with a directory move carrying its whole subtree and preserving each document's collection —mnemos.forget,mnemos.move - A watcher that reindexes incrementally on change and drops deleted files —
mnemos watch . --collection myproject - Optional Claude Code hooks: a
SessionStartmatcher that injects the working set and re-injects it after compaction, and aUserPromptSubmitmatcher that fires on recall cues like "as we decided" and injects the top 3 search hits
Requirements
Go 1.25+ to build; make install puts one binary in $GOBIN, or make build keeps it in ./bin/mnemos and off your $PATH. No account, no key, no external service. Register it with an absolute --config path — claude mcp add mnemos -- mnemos serve --config <YOUR_PATH_TO_PROJECT>/.mnemos/mnemos.toml — because Claude Code does not guarantee the working directory it spawns the server in; a bare mnemos serve only finds your data by luck, and fails with a clear error rather than returning empty results. The default build is lexical-only; semantic search is an optional build plus mnemos models install all-MiniLM-L6-v2 and use_vectors = true. The prompt-cue hook needs jq.
Setup effort
Build from source — git clone https://github.com/arhuman/mnemos.git && cd mnemos
USE CASES
Stopping an agent from inventing your team's conventions
Have it search your indexed ADRs and notes first and answer from a cited section, rather than from what usually goes in a design doc.
Recovering the reasoning behind a rejected approach
Search for the decision, then read the exact chunk with its link neighbours attached so the surrounding context comes with it.
Capturing something worth keeping mid-session
Write it into the tree at an explicit path with writes enabled; it is secret-scanned before it is stored and indexed.
Finding what else touches a document
Read the link graph in either direction and see which outbound targets do not resolve — dangling links come back marked rather than silently dropped.
Seeing what has not been indexed yet
Walk the tree with metadata attached and filter on the indexed flag, so gaps in coverage are visible instead of invisible.
Keeping context across a compaction
Wire the session-start hook so the working set and recent decisions are re-injected after the conversation is compacted.
9 tools
Listed in project docs. Your client may show a different list.
mnemos.readmnemos.contextmnemos.relatedmnemos.listmnemos.remembermnemos.okfymnemos.forgetmnemos.moveBEFORE YOU INSTALL
What to know first
Tools you get
9 tools named in the project's documentation.
Requires
- Go 1.25 or later, to build
- make
Where it runs
Both documented setups run the server on your machine.
INSTALLATION
Connect your client
Server setup
# 1. install — one cgo-free binary into $GOBIN (requires Go 1.25+)
git clone https://github.com/arhuman/mnemos.git && cd mnemos
make install
# 2. index a project
cd ~/work/myproject
mnemos init # creates ./.mnemos/ (mnemos.toml, kb, db, models)
mnemos ingest docs --collection myproject # index a directoryMCP Clients
Claude Code
claude mcp add mnemos -- mnemos serve --config <YOUR_PATH_TO_PROJECT>/.mnemos/mnemos.tomlClaude Code — project config
{
"mcpServers": {
"mnemos": {
"command": "mnemos",
"args": [
"serve",
"--config",
"<YOUR_PATH_TO_PROJECT>/.mnemos/mnemos.toml"
]
}
}
}