LabscoMCP early access ↗
arhumanMCP SERVER · OFFICIAL PROJECT

Mnemos

Local, citable memory for a coding agent — indexes your docs, notes and code, and answers with the exact file, section and line range.

by arhuman ↗Agent Memory✓ Official

LABSCO 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 by uri, 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 indexed flag, 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/.md converted 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 SessionStart matcher that injects the working set and re-injects it after compaction, and a UserPromptSubmit matcher 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