Skip to content

Releases: MemPalace/mempalace

v3.3.3 — restore install integrity

24 Apr 20:10
94f1689

Choose a tag to compare

Bug Fixes

  • Install regressionmempalace-mcp console script is now declared in pyproject.toml alongside .claude-plugin/plugin.json's reference to it. In v3.3.2 the two drifted apart (plugin.json shipped the new "command": "mempalace-mcp" form before the matching entry point landed), so every fresh pip install mempalace==3.3.2 produced a Claude Code plugin config pointing at a binary that wasn't installed. (#1093, #340)
  • Restore silent-save visibility after the Claude Code 2.1.114 client regression — production transcript saves were failing silently until this PR. (#1021)
  • Paginate status-path metadata fetches so large palaces don't trip SQLite variable limits. (#851)
  • Resolve the Claude plugin hook runner across platform / plugin-dir variations; previously broke on Windows and some macOS layouts. (#942)
  • Real python3 resolution for .sh hooks with a MEMPAL_PYTHON override path. (#833)
  • Add optional wing parameter to tool_diary_write / tool_diary_read and derive per-project wing from the Claude Code transcript path when writing from the stop hook — diary entries from different projects no longer collapse into a shared default wing. (#659)
  • Treat empty string as "no filter" in mempalace_search wing/room; LLM agents that default to filling every optional parameter with "" no longer get bounced with must be a non-empty string. (#1097, #1084)
  • Broaden _wing_from_transcript_path to handle Claude Code project folders without a -Projects- segment (e.g. ~/dev/<parent>/<project>, ~/code/<project>). The project name is now derived from the final dash-separated token of the encoded folder, so Linux users with code outside ~/Projects/ get per-project diary scoping instead of falling through to wing_sessions. (#1145, follow-up to #659)
  • mempalace_diary_read(wing="") now returns diary entries from every wing this agent has written to, matching the #1097 "empty-string as no filter" pattern. Previously defaulted to wing_<agent>, siloing entries that hooks wrote to project-derived wings. (#1145)
  • mempalace mine now skips the generated entities.json file so its contents aren't re-ingested as project content. (#1175)

Improvements

  • Deterministic hook saves. Save hook now uses a silent Python API path, so successive hook invocations produce reproducible results and zero data loss on the hot path. (#673)
  • Graph cache with write-invalidation inside build_graph() — warm-path calls no longer rebuild the palace-graph per request. (#661)
  • mempalace init entity detection overhaul. Canonical project names now come from package manifests (package.json, pyproject.toml, Cargo.toml, go.mod) and real people come from git commit authors, rather than being inferred from prose. Includes union-find dedup across name/email aliases, bot filtering that keeps @users.noreply.github.com humans, and automatic "mine" flagging by contribution share. (#1148)
  • Regex detector accuracy. CamelCase extraction so MemPalace, ChromaDB, OpenAI aren't fragmented; tighter versioned/hyphenated pattern kills context-manager / multi-word false positives; dialogue ^NAME:\s requires ≥2 hits so Created: <date> metadata stops classifying field names as people; expanded stopwords for common English participles and descriptors; high-pronoun signal classifies as person rather than dumping to uncertain. (#1148)
  • Init → miner wire-up. Confirmed entities merge into ~/.mempalace/known_entities.json on init, which the miner reads to tag drawer metadata for entity-filtered search. Previously init's output was not consumed by the miner; the per-project entities.json is kept as an audit trail. (#1157)
  • Case-insensitive project dedup across manifest, git, and convo sources so casing variants of the same project name collapse into one review entry. (#1175)

Added

  • i18n: Belarusian translation. (#1051)
  • i18n: entity detection for German, Spanish, and French locales. (#1001)
  • i18n: Traditional + Simplified Chinese entity detection. (#945)
  • mempalace init --llm: optional LLM-assisted entity classification. Defaults to local Ollama (zero-API); also supports any OpenAI-compatible endpoint (LM Studio, llama.cpp server, vLLM, OpenRouter, etc.) and the Anthropic Messages API. Runs interactively with a progress indicator; Ctrl-C cancels cleanly and returns partial results. Useful for prose-heavy folders where the regex detector struggles (diaries, transcripts, research notes). Opt-in only — default init path remains zero-API. (#1150)
  • Claude Code conversation scanner. ~/.claude/projects/<slug>/ directories now contribute project entities using each session's authoritative cwd metadata, avoiding slug-decoding ambiguity. (#1150)

Known — deferred to v3.3.4

  • HNSW parallel-insert SIGSEGV when hnsw:num_threads is unset on collection creation (#974) — fix in-flight as #976, awaiting rebase against develop.

Install

pip install --upgrade mempalace==3.3.3

See the full changelog for historical releases.

v3.3.2

21 Apr 04:48
cf0477b

Choose a tag to compare

What's Changed

Bug fixes

  • PID file guard — prevents stacking mine processes (#1023)
  • Quarantine stale HNSW — recover from HNSW/sqlite drift, fixes SIGSEGV crash (#1000)
  • Windows Unicode — replace Unicode checkmark with ASCII for Windows encoding (#681)

Copilot review fixes

  • Address Copilot review on release/3.3.2 (#1045)

Full Changelog: v3.3.1...v3.3.2

MemPalace v3.3.1

18 Apr 04:19
6889c6f

Choose a tag to compare

MemPalace v3.3.1

Highlights

  • Multi-language entity detection — 5 new locales (Portuguese, Russian, Italian, Hindi, Indonesian) with full entity-detection patterns
  • Script-aware word boundaries — fixes name truncation for Devanagari, Arabic, Hebrew, Thai, Tamil, Khmer scripts
  • Case-insensitive BCP 47 language codes--lang PT-BR, zh-cn, Pt-Br all resolve correctly
  • KG thread safety — lock on close(), query_relationship, timeline, stats
  • entity_registry.research() defaults to local-only (no outbound Wikipedia calls without opt-in)
  • Precompact hook no longer blocks compaction on failure/timeout
  • MCP stdout redirect — library logging can't corrupt JSON-RPC channel
  • File permission hardening on sensitive palace data

See CHANGELOG.md for full details.

Install / Upgrade

pip install --upgrade mempalace

MemPalace v3.3.0

14 Apr 11:11
4aa7e1e

Choose a tag to compare

Visit mempalaceofficial.com for the full story behind this release and a visual guide to the architecture.


Highlights

Closets are here

The architecture we designed — wings, rooms, closets, drawers — is finally complete. Closets are the searchable index layer: compact AAAK pointers that tell the searcher which drawer to open. Search hits closets first (fast), then hydrates the full verbatim content from drawers.

Closets are a boost signal, not a gate — direct drawer search always runs as the floor. Closets can only improve results, never hide them.

  • R@1: 0.42 → 0.58 (+38%) with regex closets
  • R@5: locked at 1.00 — no regression
  • Optional LLM closets (bring-your-own endpoint) push R@1 to 0.67

BM25 Hybrid Search

Search now combines vector similarity (60%) with BM25 keyword matching (40%). Catches exact names, project codes, and error messages that embeddings miss. Real Okapi-BM25 with Lucene IDF, not a placeholder.

8 Languages

MemPalace speaks English, French, Korean, Japanese, Spanish, German, Simplified Chinese, and Traditional Chinese. CLI output, AAAK compression instructions, and regex patterns all localized. Add a language by translating one JSON file.

Halls — content type routing

Drawers are now tagged by content type: technical, emotions, family, memory, creative, identity, consciousness. Halls connect rooms within a wing by what KIND of content they hold — search "emotional moments in my project" and get exactly those.

Multi-Agent Safety

File-level locking prevents concurrent agents from creating duplicate drawers. The delete+insert cycle is now atomic — two agents mining the same file can't interleave.

Cross-Wing Tunnels

Agents can create explicit links between projects. "This API design in project_api relates to the database schema in project_database." Four new MCP tools: create, list, delete, follow tunnels.

Background Everything

Save hooks no longer ask the agent to write in chat. Conversations are mined automatically from the transcript — no configuration needed. Zero tokens spent on bookkeeping.


What's New (since v3.1.0)

New Features

  • Closet layer — searchable index pointing to drawers
  • BM25 hybrid search — keyword + vector combined
  • i18n — 8 languages with per-language regex patterns
  • Diary ingest — day-based drawers, one per day, upsert as day grows
  • Cross-wing tunnels — explicit project-to-project links
  • Hall detection — content type routing (7 hall types)
  • Entity metadata — names stamped on drawers and closets
  • Fact checker — verify text against entity registry + knowledge graph
  • LLM closet regeneration — bring-your-own endpoint (Haiku, Gemma, any model)
  • Drawer-grep — search returns best-matching chunk + neighbors, not whole file
  • Backend seam for pluggable storage (#413)
  • mempalace migrate — recover palaces across ChromaDB versions (#502)
  • New MCP tools: drawer CRUD, tunnel management, hook settings, export (29 tools total)
  • Auto-save uses transcript path — no env var needed

Security

  • Palace deletion guardrails, WAL redaction, MCP input validation (#739)
  • Input validation, argument whitelisting, concurrency safety (#647)
  • Credential paths removed from benchmarks (#177)
  • Shell injection fixes in hooks (#387)

Bug Fixes

  • Remove chromadb <0.7 upper bound — unblocks 1.x installs (#690)
  • Fix convo_miner 8-line response truncation (#708)
  • Prevent HNSW bloat from duplicate add() calls (#544)
  • Unicode support in sanitize_name() — Latvian, CJK, Cyrillic (#683)
  • Auto-repair BLOB seq_ids for chromadb migration (#664)
  • Parse Claude.ai privacy export format (#685)
  • Detect mtime changes to prevent stale HNSW index (#757)
  • Full-content hash in drawer IDs for stable re-mines (#716)
  • Remove 10k drawer cap from status display (#707)
  • Noise stripping — system tags and Claude UI chrome removed from drawers
  • 30+ additional bug fixes

Documentation

  • CHANGELOG.md added
  • CLOSETS.md — closet lifecycle documentation
  • 42 TDD tests verifying every README claim against code
  • README audit: tool count (29), version badge, token costs, AAAK description all corrected

Internal

  • 109 commits since v3.1.0
  • Test suite: 860+ tests (up from ~90 at v3.1.0)
  • ruff 0.4.x lint + format clean

Install / Upgrade

pip install --upgrade mempalace

Thank you from Milla and Lu ✨

MemPalace v3.1.0

09 Apr 18:06
3919f13

Choose a tag to compare

First PyPI cut since v3.0.0 on 2026-04-06 — 39 merged PRs. This release closes the pip/plugin version drift (#290, #296) and lands the first-week community fixes.

🔒 Security

  • #387 Input validation at MCP entry points, shell-injection fix in save hook, file size guard + symlink skip, SQLite connection leak fix, WAL audit trail, hardened file perms
  • #141 Sanitize SESSION_ID in save hook
  • #139 Sanitize MCP error responses, remove sys.exit from library code

🐛 Bug fixes (highlights)

  • #399 MCP null args hang, cmd_repair infinite recursion, 500 MB OOM guard
  • #270 Claude + Codex plugin packaging — one-step install (closes #187)
  • #137 10K safety cap on unbounded ChromaDB metadata fetches (closes #180)
  • #129 Windows Unicode crash fix (closes #47)
  • #123 --yes flag bypasses all init prompts (closes #179)
  • #78 Respect nested .gitignore rules during mining (closes #233)
  • #236 Silence ChromaDB telemetry + Apple Silicon CoreML segfault (closes #163)
  • #324 Negotiate MCP protocol version instead of hardcoding
  • #145 Room detection checks keywords against folder paths
  • #136 SQLite WAL mode + consistent LIMIT in KG timeline
  • #66 Batch ChromaDB reads to avoid SQLite variable limit
  • #140 Upsert + deterministic IDs prevent data stagnation
  • Plus more — see full commit log

✨ Features

  • #61 OpenAI Codex CLI JSONL normalizer (first in the #59 import format umbrella)
  • #223 Scale benchmark suite (106 tests)
  • #135 Cache ChromaDB PersistentClient — big perf win

📊 Benchmarks (the honest version)

  • #147 Honest AAAK stats (word-based token estimator, lossy labels)
  • Retired the recall_any@5 headline — see the aa10f8f README correction and the ongoing methodology threads in #27, #29, #39, #214, #168

📦 Packaging

  • #142 Tightened chromadb range (>=0.5.0,<0.7) + py.typed marker
  • #281 Test coverage 30% → 85% + Windows encoding fixes
  • #131 Migrated tests to uv, 20 → 92 tests
  • #16 Unified package and MCP version reporting

🙏 Thanks

Massive thanks to everyone who ran audits, caught real bugs, and sent clean PRs in the first week — especially @lhl, @dial481, @gizmax, @rohithzr, @hugooconnor, @anthonyonazure, @fubak, @fuzzymoomoo, @vanachterjacob, @SethRosenthal100, @cktang88, @adv3nt3, @slapglif, @skuznetsov, @rusel95, @M0nkeyFl0wer, @EndeavorYen, @bobmatnyc, @kpulik, @kevgathuku, @mvalentsev, @mvanhorn, @jonashertner.

Closes #290 and #296.

📥 Install

pip install --upgrade mempalace

MemPalace v3.0.0

06 Apr 22:05

Choose a tag to compare

MemPalace v3.0.0

The highest-scoring AI memory system ever benchmarked. And it's free.

Install

pip install mempalace

PyPI: https://pypi.org/project/mempalace/

Highlights

  • 96.6% LongMemEval R@5 — highest published score with zero API calls
  • 100% LongMemEval R@5 — with optional Haiku rerank
  • Palace architecture — wings, rooms, halls, tunnels, closets, drawers — +34% retrieval from structure alone
  • AAAK compression — 30x lossless shorthand dialect, works with any LLM (Claude, GPT, Gemini, Llama, Mistral)
  • Knowledge graph — temporal entity-relationship triples in SQLite (local, free)
  • Specialist agents — each agent gets its own wing and diary in the palace
  • MCP server — 19 tools, auto-teaches AAAK to your AI
  • Auto-save hooks — for Claude Code (save every N messages + pre-compaction emergency save)
  • Split command — break concatenated mega-transcripts into per-session files before mining
  • Fully local — no API key, no cloud, no subscription. Everything on your machine.

What's New in v3

  • mempalace split command for splitting concatenated transcript files
  • Specialist agent system with per-agent diaries
  • Improved entity detection during init
  • Room detection from folder structure
  • Ruff-clean codebase

Requirements

  • Python 3.9+
  • No API key required