Memory that keeps the original record
MemPalace takes a clear position on assistant memory: store the words that were actually written, then retrieve relevant pieces later. It does not turn conversations into summaries or extracted profile facts. Content is organized into wings, rooms, and drawers so a search can stay within one person, project, or topic instead of running across a flat archive. Semantic and lexical retrieval work together over that structure.
A design decision buried in an old session can be returned with its surrounding text rather than a model-generated paraphrase. The CLI can mine project files and conversation directories, while a wake-up command loads useful context for a new session. Auto-save hooks cover Claude Code, Codex CLI, and Cursor, and the MCP server exposes reads, writes, graph operations, diaries, and coordination tools.
Verbatim storage also means the palace can contain source code, secrets pasted into chat, personal details, and abandoned ideas. Local-first storage reduces outside disclosure, but it does not classify or redact what enters the archive. Teams still need file permissions, backups, retention rules, and a decision about which transcript directories may be mined.
What happened when we ran it
We cloned commit dfba59b into a fresh Debian container with 3 CPUs, 8 GB of RAM, no secrets, and an unprivileged user. The checkout contained 559 files, about 158,638 source lines, and used 64.8 MB. Installation succeeded in 60 seconds, adding 119 packages and 453 MB. The build completed in 10 seconds.
The test run did not finish within our 900-second limit. Its progress output passed 15%, displayed one failure marker near 9%, and continued producing successful markers. Because pytest never reached its summary, we cannot state how many tests passed, failed, or remained. The timeout is still useful evidence: the default suite needs more than 15 minutes in this container, and at least one test had failed before the run was stopped.
Pip-audit found one known vulnerability in the installed dependency set. The measurement does not identify it here, so we cannot assess its exploitability or suggest a package-specific fix from this result alone. The repository has five CI workflow files, a Dockerfile, a Compose file, and a tests directory. A production review should rerun the suite to completion and inspect the audit record before selecting a version.
The personal setup is manageable
The recommended install uses uv tool so ChromaDB, NumPy, gRPC, and the other dependencies stay out of the system Python. Pipx is offered as an equivalent, while plain pip belongs inside a virtual environment. ChromaDB is bundled as the default backend, so one developer does not have to deploy a database server just to create a palace.
Embeddings introduce the first delayed step. The initial command downloads the selected model, then caches it. A Docker deployment must mount /data to preserve the palace, configuration, and model cache. It must also mount any source or transcript directory the container should read. The docs correctly warn that some MCP clients do not expand ~ or environment variables in paths, so absolute paths avoid a confusing empty import.
Linux permissions are another concrete catch. The container runs as uid 1000, and host bind mounts keep their ownership. A private directory readable only by another uid produces a permission error. Changing the container user can then make /data unwritable, so the clean fix is deliberate mount ownership and access rather than a random --user flag.
Retention depends on hooks
Installing the MCP server does not automatically preserve every assistant session. The README warns that Claude Code sessions expire after 30 days without save hooks and links to a retention checklist. The reliable flow is to back up existing JSONL transcripts, configure periodic and pre-compaction saves, then backfill the old directory. Per-message recall requires an additional sweep command over transcripts.
This distinction matters because retrieval quality cannot recover data that was never ingested. After setup, create a disposable session, let the hook save it, search for an unusual sentence, and confirm the result survives a restart. Repeat the check before assuming an entire team's history is safe.
MemPalace can move beyond the embedded backend. SQLite exact mode stays local, while Milvus, Qdrant, and pgvector support other deployment shapes. Switching embedding models changes the vector space and requires rebuilding the index. Remote OpenAI-compatible embedding endpoints are supported, but then content leaves the local process unless the endpoint stays on the same machine or network.
Multi-agent use needs a single write story
The MCP tool set includes separate agent wings and diaries, cross-agent navigation, event streams, and artifact handoffs. Release v3.8.0 added a persistent log watcher so an agent can wake on new coordination events. It also reduced the memory footprint of proxied MCP sessions and improved large-palace metadata reads. These are useful operations features for a fleet, not just a personal search command.
Concurrency remains the area to test hardest. Issue #1888 describes a shared daemon whose process-lifetime writer lock blocks hook-driven and manual mining. Disabling the peer-writer guard restores that workflow but removes protection against concurrent-writer index corruption. The v3.8.0 release also changed sync deletion logic so an unavailable source volume is not mistaken for deleted files. Both examples show why backups and explicit writer ownership matter.
Health and the decision
The last push was August 25, 2026, two days after v3.8.0. Nine other listed releases appeared between May and mid-August. GitHub reported 727 open issues and pull requests combined, with activity continuing on August 25. The release pace and detailed notes show active maintenance, while the queue size and rapid changes favor pinning a tested version.
MemPalace is worth trying for local coding memory because its storage model is easy to reason about: keep the source, scope it, and search it. Begin with the embedded backend and one client. Do not treat installation as proof of retention. Verify hooks and recovery, finish the test suite, investigate the audit finding, and design one controlled write path before a multi-agent rollout.

