Hierarchical markdown memory palace for AI agents β structured palace navigation via MCP tools.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag β we're steadily working through the catalog.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Hierarchical markdown-based memory system for autonomous AI agents. Each directory is a room (locus) in the palace, containing specific knowledge navigated on demand. Named for the atomic unit of the Method of Loci.
Core idea: Keep context windows small. Load only the room you need, not the whole palace.
An agent reads INDEX.md, navigates to the relevant room, and reads only that room.
Session logs accumulate until consolidation merges them into canonical files.
See the wiki for full documentation.
Or run without installing using uvx:
The skill files are the one part of Locus written for a specific runtime. The
palace convention, the MCP server, and the recall / lint / index CLIs are
runtime-neutral and work from anything that can read a file or speak MCP. The
skills in skills/claude/ are written and maintained for Claude Code, and that is
the only set shipped here. They are plain markdown with YAML frontmatter, so
another runtime is welcome to adapt them. Per-runtime copies used to live in
skills/codex/ and skills/gemini/; they were removed because keeping three
variants honest cost more than it returned.
Install them from a clone:
CLAUDE_SKILLS_DIR overrides the destination.
| Skill | Command | Description |
|---|---|---|
locus | /locus | Recall, navigate the palace, write rooms and session logs, regenerate indexes |
locus-consolidate | /locus-consolidate | Merge session logs into canonical files |
locus-audit | /locus-audit | Audit palace health |
locus-feedback | /locus-feedback | Record explicit feedback on a palace recall |
locus-release | /locus-release | Post-release verification workflow (contributors) |
locus-security | /locus-security | Trust tags, nonce discipline, and the locus-security CLI |
locus-palace-init | /locus-palace-init | Bootstrap a palace from existing memory files |
The locus-mcp command exposes five tools over the Model Context Protocol.
Use stdio for all local integrations (Claude Desktop, Claude Code, Codex, Gemini β default, no extra flags needed).
SSE transport is available for network deployments (--transport sse) and requires FASTMCP_HOST=0.0.0.0
to be set explicitly β the server binds to loopback by default.
| Tool | Description |
|---|---|
memory_list | Returns INDEX.md (no args) or lists a room's files |
memory_read | Reads any file in the palace |
memory_write | Atomically writes a file (guarded β cannot write to _metrics/, sessions/, .sig/, .security/) |
memory_search | Ranked full-text search over the shared FTS5 index (see Recall); ripgrep only without FTS5 |
memory_batch | Reads up to 20 palace files in a single call β use for multi-room loads |
Add --security to enable Ed25519 signature verification on reads and automatic signing on writes.
See Security below.
claude_desktop_config.json)Or using uvx (no install required):
All clients support LOCUS_PALACE as an alternative to --palace:
See MCP Server Configuration
for the full client setup guide and spec/mcp-server.md for architecture details.
locus recall answers "what do I already know about this?" in one call, fast enough
to run on every prompt from a hook. It keeps a SQLite FTS5 index (standard library only,
no PyYAML) over any number of markdown roots: a palace, an OKF bundle, a Claude Code
memory directory, or all of them at once.
| Flag | Default | Meaning |
|---|---|---|
--root DIR | .locus.toml, then LOCUS_PALACE | Directory to index; repeatable |
-k N | 3 | Number of hits |
--budget BYTES | 4096 | Hard cap on text output |
--include journal | off | Include type: Journal files |
--type TYPE | all | Only this frontmatter type; repeatable |
--json | off | Print a JSON list instead of text |
--refresh | off | Rebuild the index from scratch |
Frontmatter drives the result: title (or name, or the first heading), description,
tags, type (or metadata.type), modified (else generated.at, else file mtime),
status, stale_after, and verified. Ranking is bm25 with title and description
weighted above the body; exact ties go to human-reviewed files, then to the newest
modified. A hit is flagged STALE when its stale_after has passed or its status is
deprecated. Trust tiers follow OKF: unverified, machine-confirmed (only non-human
verified entries), human-reviewed (any verified entry whose by starts with human:).
Roots can live in a .locus.toml in the project or any parent directory:
The index is stored at ${XDG_CACHE_HOME:-~/.cache}/locus/<hash-of-roots>.sqlite, never
inside a root, and is refreshed incrementally (mtime, then content hash) on every call.
With no hits the text output is empty and the exit status is still 0, so a prompt hook can
call it unconditionally:
The MCP server's memory_search uses the same index, so MCP results are ranked the
same way. Full rules in spec/recall.md.
locus lint checks markdown roots for Open Knowledge Format
v0.2 conformance and the Locus palace conventions. locus index generates the
index files those conventions define. Both read the same frontmatter recall
indexes, and neither imports the Agent SDK, so a CI job that only checks
conformance does not install it.
| Flag | Default | Meaning |
|---|---|---|
--root DIR | .locus.toml, then LOCUS_PALACE | Directory to check; repeatable |
--check | off | Exit non-zero on any error. For CI |
--strict | off | Treat warnings as errors under --check |
--fix | off | Add inferable fields. Never rewrites an existing key |
--type-map DIR=TYPE | none | Infer this OKF type under DIR; repeatable |
--archive-glob GLOB | none | Paths that should carry status: deprecated; repeatable |
--json | off | Print a JSON report instead of text |
Factual signals from GitHub, npm, and our automated checks β not a rating.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/locus-2)<a href="https://allmcps.com/mcp/locus-2"><img src="https://allmcps.com/api/badge/locus-2?style=directory" alt="Locus on AllMCPs" /></a>