| name | mempalace |
| description | MemPalace local-first AI memory system. Use when setting up persistent memory for Claude Code sessions, mining project files or conversation transcripts, querying past context, configuring MCP tools, managing the knowledge graph, or troubleshooting palace operations. |
| triggers | ["When setting up persistent memory for Claude Code or another AI agent","When mining project files, repos, or conversation transcripts into a palace","When searching past sessions or retrieving forgotten context","When wiring auto-save hooks (stop hook, precompact hook)","When configuring the MCP server (29 tools) for palace reads/writes","When working with the knowledge graph (entities, relationships, timelines)","When backfilling existing JSONL transcripts into memory","When troubleshooting palace repair, deduplication, or migration","When adding a new storage backend or customizing the embedding model","When running LongMemEval or other memory benchmarks"] |
MemPalace Skill
MemPalace (v3.3.6) is a local-first AI memory system. It stores conversation history and project content verbatim — no summarization, no paraphrasing, no external API calls by default. Retrieval uses hybrid BM25 + semantic search, achieving 96.6% R@5 on LongMemEval with zero LLM involvement.
When to Use This Skill
- Setting up persistent memory for Claude Code or another LLM agent
- Mining project files (
mempalace mine) or Claude Code transcripts (--mode convos)
- Retrieving forgotten context from past sessions (
mempalace search, wake-up)
- Wiring auto-save hooks so sessions survive context compression
- Installing and configuring the MCP server (29 palace tools)
- Managing the knowledge graph (entities, predicates, temporal relationships)
- Backfilling existing
~/.claude/projects/ JSONL transcripts
- Repairing, deduplicating, or migrating a corrupted or upgraded palace
- Writing custom storage backends or switching embedding models
- Reproducing or extending memory benchmarks
Core Architecture
Palace structure:
WING — broad category (person, project, topic)
└── ROOM — time-based grouping (day, session)
└── DRAWER — verbatim text chunk (exact words)
Index layer (AAAK dialect):
Compressed pointers → DRAWER locations
LLM scans AAAK index to know which drawer to open — no full content read needed
Knowledge Graph (SQLite):
ENTITY → PREDICATE → ENTITY (with valid_from / valid_to dates)
4-Layer Memory Stack (token budget)
| Layer | Tokens | Loaded | Purpose |
|---|
| L0 | ~100 | Always | Identity — ~/.mempalace/identity.txt |
| L1 | ~500–800 | Always | Essential story — top moments from the palace |
| L2 | ~200–500 each | On demand | Wing/topic content when referenced |
| L3 | Unlimited | On demand | Full ChromaDB semantic search |
mempalace wake-up loads L0+L1 (~600–900 tokens total), leaving 95%+ of context free.
Install
uv tool install mempalace
pipx install mempalace
pip install mempalace
Python 3.9+ required. ChromaDB is the default backend (~300 MB for the embedding model).
First-run setup (choose embedding model, configure palace path):
python -m mempalace.onboarding
Key CLI Commands
Initialize a palace for a project
mempalace init ~/projects/myapp
Mine content into the palace
mempalace mine ~/projects/myapp
mempalace mine ~/.claude/projects/ --mode convos
mempalace mine ~/.claude/projects/myapp --wing myapp
Sweep — store one drawer per message (per-message granularity)
mempalace sweep ~/.claude/projects/myapp/
Search past sessions
mempalace search "why did we switch to GraphQL"
mempalace search "auth bug fix" --wing myapp
Load memory context for a new session
mempalace wake-up
Knowledge graph
mempalace status
Hooks
mempalace hook install
mempalace hook status
Repair and maintenance
mempalace repair
mempalace repair --status
mempalace migrate
Claude Code Hooks
Two hooks ship with MemPalace for automatic session persistence:
| Hook | Trigger | Purpose |
|---|
mempal_save_hook.sh | Stop | Saves session diary to palace before Claude exits |
mempal_precompact_hook.sh | PreCompact | Saves state before context compression |
Wire the hooks (required for automatic persistence):
mempalace hook install
The hooks must find the mempalace CLI. If installed via uv tool, ensure ~/.local/bin is on PATH inside the hook:
export PATH="$HOME/.local/bin:$PATH"
MCP Server
29 MCP tools cover palace reads/writes, knowledge-graph operations, cross-wing navigation, drawer management, and agent diaries.
mempalace mcp
Key tool categories:
- Palace read/write (drawers, rooms, wings)
- Knowledge graph (entity add/query/invalidate, timeline)
- Agent diaries (per-agent wings, diary entries)
- Cross-wing navigation and tunnels
mempalace_list_agents — discover agent wings at runtime (no system-prompt bloat)
Design Principles (non-negotiable)
- Verbatim always — never summarizes, paraphrases, or lossy-compresses user data
- Incremental only — append-only after initial build; crashes leave existing palace untouched
- Entity-first — keyed by real names with DOB/ID disambiguation
- Local-first — zero external API by default; BYOK (Anthropic, OpenAI, Google) is explicit and never silent
- Performance budgets — hooks <500ms, startup injection <100ms
- Privacy by architecture — data physically cannot leave the machine for core operations
Benchmarks
| Benchmark | Mode | Score |
|---|
| LongMemEval R@5 (500q) | Raw semantic, no LLM | 96.6% |
| LongMemEval R@5 (500q) | Hybrid v4, held-out 450q | 98.4% |
| LongMemEval R@5 (500q) | Hybrid v4 + LLM rerank | ≥99% |
| LoCoMo R@10 (1,986q) | Hybrid v5 | 88.9% |
| ConvoMem avg recall (250) | All categories | 92.9% |
| MemBench R@5 (8,500) | All categories | 80.3% |
Raw 96.6% requires no API key and no LLM at any stage.
Storage Backends
Default: ChromaDB. To add a custom backend:
- Subclass
mempalace/backends/base.py
- Register in
backends/__init__.py
Key Source Files
| Task | File |
|---|
| Add an MCP tool | mempalace/mcp_server.py — add handler + TOOLS dict entry |
| Change search | mempalace/searcher.py |
| Modify mining | mempalace/miner.py (files) or convo_miner.py (transcripts) |
| Add storage backend | Subclass mempalace/backends/base.py |
| Input validation | mempalace/config.py — sanitize_name() / sanitize_content() |
| AAAK compression | mempalace/dialect.py |
| 4-layer stack | mempalace/layers.py |
Examples
Example 1: Claude Code retention setup (fastest path)
uv tool install mempalace
python -m mempalace.onboarding
mempalace init ~/projects/myapp
mempalace mine ~/.claude/projects/ --mode convos --wing myapp
mempalace hook install
mempalace wake-up
Example 2: Per-message granularity (sweep after mining)
mempalace sweep ~/.claude/projects/myapp/
Example 3: Multi-agent palace
mempalace_list_agents
Example 4: Backfill existing JSONL transcripts
mempalace mine ~/.claude/projects/ --mode convos
mempalace sweep ~/.claude/projects/
Resources