Download Latest Version v3.6.0 source code.zip (25.7 MB)
Email in envelope

Get an email when there's a new version of MemPalace

Home / v3.6.0
Name Modified Size InfoDownloads / Week
Parent folder
README.md 2026-07-17 15.9 kB
v3.6.0 source code.tar.gz 2026-07-17 25.4 MB
v3.6.0 source code.zip 2026-07-17 25.7 MB
Totals: 3 Items   51.2 MB 1

v3.6.0 — secure remote serving, temporal facts, and resilient recovery

This release makes MemPalace substantially easier to operate beyond a single local process while tightening the guarantees that protect long-lived palaces. A new secure-by-default mempalace serve path supports authenticated remote and team deployments with TLS and read-only enforcement; an opt-in Milvus backend adds embedded, self-hosted, and managed storage choices; and atomic knowledge-graph supersession gives changing facts precise temporal boundaries. Conversation chronology, mined-session graph derivation, project exclusions, and LaTeX coverage deepen ingestion, while startup, metadata, and recovery work make large palaces faster and safer. The MCP surface now comprises 36 tools.

Features

  • Turnkey secure remote / team server. mempalace serve exposes the full MCP surface over HTTP with secure defaults: non-loopback binds require a bearer token, generated tokens are stored with restrictive permissions and passed through the child environment rather than argv, native TLS 1.2+ is supported, and --read-only both hides and refuses mutating tools. Docker Compose, systemd, and environment templates are included. (#1877, [#1897], [#1900])
  • Milvus storage backend. The new opt-in milvus backend supports Milvus Lite, self-hosted Milvus, and Zilliz Cloud, with COSINE vector search, native BM25 lexical search for new collections, namespace isolation, target-mismatch protection, and an optional dependency extra. (#1899)
  • Atomic knowledge-graph fact replacement. supersede() / mempalace_kg_supersede closes an open fact and opens its successor at one shared instant. Temporal queries use half-open intervals at timestamp precision while preserving whole-day semantics for date-only facts. (#1913)
  • Conversation chronology is preserved. Drawers retain transcript time as authored_at, search results expose it, exact hybrid-score ties prefer recently authored content, and an idempotent dry-run-first backfill updates existing palaces without re-embedding. mempalace_list_drawers also gains since / before bounds. (#1890, [#1891])
  • Mined sessions populate the associative graph. A precision-biased structural extractor records code symbols, URLs, paths, and qualified identifiers as drawer entities; conversation mining derives hallways from them, exposed by the new mempalace hallways CLI command. (#1894, [#1895])
  • Per-project mining exclusions through exclude_patterns in mempalace.yaml, without changing corrected --limit semantics. (#1213, [#1953])
  • LaTeX project coverage for .tex and .bib prose sources. (#1901)
  • Shared daemon write-routing policy provides one consistent policy seam for routing write-capable clients toward the local daemon. (#2027)
  • Checkpoint author attribution now preserves the filing agent instead of hard-coding every checkpoint drawer as checkpoint. (#2023, [#2034])

Performance

  • MCP initialization no longer waits for palace-wide integrity work. stdio answers initialize immediately while startup preflight runs in the background; concurrent tools join the same verdict instead of duplicating work. Large-palace startup SQLite probes are bounded, while repair preflights remain strict. (#1911, [#1987])
  • Qdrant metadata counts use server-side facets instead of fetching and tallying every record; the embedding wrapper forwards facet and bulk-metadata capabilities correctly. (#1868, [#1898])
  • pgvector metadata-only fetches omit document payloads, reducing transfer and decoding work. (#1892)

Bug Fixes

  • Chroma recovery distinguishes derived-index damage from data loss. Valid all-layer-0 HNSW segments are no longer quarantined repeatedly; isolated FTS5 corruption is rebuilt from intact content during repair and after mining; embedded NUL bytes are sanitized before reaching ChromaDB. (#1716, [#1872], [#1878], [#1927], [#1928])
  • SQLite recovery is bounded, atomic, and honest. Integrity checks wait out transient writer contention; recovery archives use atomic rename; repair --mode from-sqlite rebuilds FTS5, vacuums, and requires a clean final PRAGMA quick_check; cleanup failures return non-zero instead of printing false success. (#1945, [#2015], [#2017])
  • CLI search checks HNSW divergence before opening ChromaDB, routing damaged palaces directly to SQLite BM25 while leaving healthy and non-Chroma backends on their normal path. (#2016)
  • Writer leases recover instead of stranding servers read-only. Refused writers retry and promote after a peer exits; status cannot acquire the writer lease; re-entrant holders are released across interruption; checkpoint and delete_by_source are correctly classified as mutations. (#1923, [#1930], [#1934], [#1960], [#1970], [#1971])
  • Status reports only checks that actually ran. Non-Chroma backends mark Chroma SQLite integrity as not applicable. (#1931, [#1946])
  • Conversation transcripts are treated as mutable. Appended or rewritten sessions are purged and re-filed by modification time, while Claude Code tool-results/ sidecars are excluded from scans. (#1957, [#2010])
  • Explicit palace selection scopes derived graph state so mining hallways and tunnels remain beside the selected --palace. (#2018)
  • Remote and local server hardening. Non-loopback HTTP requires a token unless explicitly overridden; provider probes cannot reuse ambient external keys before selection; hook transcript and file-copy/repair paths receive stricter validation; importing MCP no longer clobbers root logging; HTTP writes re-enter the palace lock safely; routine disconnects no longer emit tracebacks. (#1859, [#1860], [#1864], [#1885], [#2003], [#2004])
  • Mining and configuration correctness. Oversized files warn visibly, configured ~ paths expand consistently, wing slugs handle special characters, and Windows background processes avoid console flashes. (#923, [#1852], [#1857], [#1863], [#1865])
  • Windows .gitignore handling uses UTF-8 explicitly, avoiding locale-dependent failures. (#1648)
  • L1 wake-up prefers the latest moments when importance ties. (#1630)
  • Backend detection requires a SQLite magic header, preventing unrelated files from being mistaken for a palace. (#1893, [#1896])

Documentation

  • Added a storage-backend configuration reference, a remote/team-server deployment guide, authored_at migration guidance, and refreshed the OpenClaw integration for the full 36-tool MCP surface. (#1719, [#1877], [#1890], [#1904], [#1905])

Internal

  • Expanded WAL crash-safety, idempotence, and redaction-path coverage; updated GitHub Actions and Ruff; repaired uv.lock drift for Ruff 0.15.20 and Python 3.9 dependency markers. (#1869)

A big thank-you to everyone who contributed to this release. Contributors and first-time contributors are credited below.

What's Changed

New Contributors

Full Changelog: https://github.com/MemPalace/mempalace/compare/v3.5.0...v3.6.0

Source: README.md, updated 2026-07-17