MemPalace/mempalacePublic

The best-benchmarked open-source AI memory system. And it's free.

AI summary: A spatial knowledge management tool utilizing the ancient method of loci for information retention.

Stars
58.2K
+74 today
Forks
7.5K
Watchers
328
Open issues
295
Open PRs
385
Contributors
~127
Commits
1.6K
Branches
136

PythonMITCreated Apr 5, 2026Last push 1d agoLatest release v3.6.0+234 stars this week+315 this month

Star history

since Apr 5, 2026
020K40KApr 2026May 2026Jun 2026Aug 2026
58.2K stars as of Aug 7, 2026, tracked back to Apr 5, 2026. Historical curve reconstructed from public GitHub event archives, calibrated to the current total.

Contribution activity

commits per day, last 52 weeks
AugSepOctNovDecJanFebMarAprMayJunJulAugMonWedFri2025-08-10: 0 commits2025-08-11: 0 commits2025-08-12: 0 commits2025-08-13: 0 commits2025-08-14: 0 commits2025-08-15: 0 commits2025-08-16: 0 commits2025-08-17: 0 commits2025-08-18: 0 commits2025-08-19: 0 commits2025-08-20: 0 commits2025-08-21: 0 commits2025-08-22: 0 commits2025-08-23: 0 commits2025-08-24: 0 commits2025-08-25: 0 commits2025-08-26: 0 commits2025-08-27: 0 commits2025-08-28: 0 commits2025-08-29: 0 commits2025-08-30: 0 commits2025-08-31: 0 commits2025-09-01: 0 commits2025-09-02: 0 commits2025-09-03: 0 commits2025-09-04: 0 commits2025-09-05: 0 commits2025-09-06: 0 commits2025-09-07: 0 commits2025-09-08: 0 commits2025-09-09: 0 commits2025-09-10: 0 commits2025-09-11: 0 commits2025-09-12: 0 commits2025-09-13: 0 commits2025-09-14: 0 commits2025-09-15: 0 commits2025-09-16: 0 commits2025-09-17: 0 commits2025-09-18: 0 commits2025-09-19: 0 commits2025-09-20: 0 commits2025-09-21: 0 commits2025-09-22: 0 commits2025-09-23: 0 commits2025-09-24: 0 commits2025-09-25: 0 commits2025-09-26: 0 commits2025-09-27: 0 commits2025-09-28: 0 commits2025-09-29: 0 commits2025-09-30: 0 commits2025-10-01: 0 commits2025-10-02: 0 commits2025-10-03: 0 commits2025-10-04: 0 commits2025-10-05: 0 commits2025-10-06: 0 commits2025-10-07: 0 commits2025-10-08: 0 commits2025-10-09: 0 commits2025-10-10: 0 commits2025-10-11: 0 commits2025-10-12: 0 commits2025-10-13: 0 commits2025-10-14: 0 commits2025-10-15: 0 commits2025-10-16: 0 commits2025-10-17: 0 commits2025-10-18: 0 commits2025-10-19: 0 commits2025-10-20: 0 commits2025-10-21: 0 commits2025-10-22: 0 commits2025-10-23: 0 commits2025-10-24: 0 commits2025-10-25: 0 commits2025-10-26: 0 commits2025-10-27: 0 commits2025-10-28: 0 commits2025-10-29: 0 commits2025-10-30: 0 commits2025-10-31: 0 commits2025-11-01: 0 commits2025-11-02: 0 commits2025-11-03: 0 commits2025-11-04: 0 commits2025-11-05: 0 commits2025-11-06: 0 commits2025-11-07: 0 commits2025-11-08: 0 commits2025-11-09: 0 commits2025-11-10: 0 commits2025-11-11: 0 commits2025-11-12: 0 commits2025-11-13: 0 commits2025-11-14: 0 commits2025-11-15: 0 commits2025-11-16: 0 commits2025-11-17: 0 commits2025-11-18: 0 commits2025-11-19: 0 commits2025-11-20: 0 commits2025-11-21: 0 commits2025-11-22: 0 commits2025-11-23: 0 commits2025-11-24: 0 commits2025-11-25: 0 commits2025-11-26: 0 commits2025-11-27: 0 commits2025-11-28: 0 commits2025-11-29: 0 commits2025-11-30: 0 commits2025-12-01: 0 commits2025-12-02: 0 commits2025-12-03: 0 commits2025-12-04: 0 commits2025-12-05: 0 commits2025-12-06: 0 commits2025-12-07: 0 commits2025-12-08: 0 commits2025-12-09: 0 commits2025-12-10: 0 commits2025-12-11: 0 commits2025-12-12: 0 commits2025-12-13: 0 commits2025-12-14: 0 commits2025-12-15: 0 commits2025-12-16: 0 commits2025-12-17: 0 commits2025-12-18: 0 commits2025-12-19: 0 commits2025-12-20: 0 commits2025-12-21: 0 commits2025-12-22: 0 commits2025-12-23: 0 commits2025-12-24: 0 commits2025-12-25: 0 commits2025-12-26: 0 commits2025-12-27: 0 commits2025-12-28: 0 commits2025-12-29: 0 commits2025-12-30: 0 commits2025-12-31: 0 commits2026-01-01: 0 commits2026-01-02: 0 commits2026-01-03: 0 commits2026-01-04: 0 commits2026-01-05: 0 commits2026-01-06: 0 commits2026-01-07: 0 commits2026-01-08: 0 commits2026-01-09: 0 commits2026-01-10: 0 commits2026-01-11: 0 commits2026-01-12: 0 commits2026-01-13: 0 commits2026-01-14: 0 commits2026-01-15: 0 commits2026-01-16: 0 commits2026-01-17: 0 commits2026-01-18: 0 commits2026-01-19: 0 commits2026-01-20: 0 commits2026-01-21: 0 commits2026-01-22: 0 commits2026-01-23: 0 commits2026-01-24: 0 commits2026-01-25: 0 commits2026-01-26: 0 commits2026-01-27: 0 commits2026-01-28: 0 commits2026-01-29: 0 commits2026-01-30: 0 commits2026-01-31: 0 commits2026-02-01: 0 commits2026-02-02: 0 commits2026-02-03: 0 commits2026-02-04: 0 commits2026-02-05: 0 commits2026-02-06: 0 commits2026-02-07: 0 commits2026-02-08: 0 commits2026-02-09: 0 commits2026-02-10: 0 commits2026-02-11: 0 commits2026-02-12: 0 commits2026-02-13: 0 commits2026-02-14: 0 commits2026-02-15: 0 commits2026-02-16: 0 commits2026-02-17: 0 commits2026-02-18: 0 commits2026-02-19: 0 commits2026-02-20: 0 commits2026-02-21: 0 commits2026-02-22: 0 commits2026-02-23: 0 commits2026-02-24: 0 commits2026-02-25: 0 commits2026-02-26: 0 commits2026-02-27: 0 commits2026-02-28: 0 commits2026-03-01: 0 commits2026-03-02: 0 commits2026-03-03: 0 commits2026-03-04: 0 commits2026-03-05: 0 commits2026-03-06: 0 commits2026-03-07: 0 commits2026-03-08: 0 commits2026-03-09: 0 commits2026-03-10: 0 commits2026-03-11: 0 commits2026-03-12: 0 commits2026-03-13: 0 commits2026-03-14: 0 commits2026-03-15: 0 commits2026-03-16: 0 commits2026-03-17: 0 commits2026-03-18: 0 commits2026-03-19: 0 commits2026-03-20: 0 commits2026-03-21: 0 commits2026-03-22: 0 commits2026-03-23: 0 commits2026-03-24: 0 commits2026-03-25: 0 commits2026-03-26: 0 commits2026-03-27: 0 commits2026-03-28: 0 commits2026-03-29: 0 commits2026-03-30: 0 commits2026-03-31: 0 commits2026-04-01: 0 commits2026-04-02: 0 commits2026-04-03: 0 commits2026-04-04: 3 commits2026-04-05: 3 commits2026-04-06: 1 commit2026-04-07: 43 commits2026-04-08: 55 commits2026-04-09: 28 commits2026-04-10: 14 commits2026-04-11: 12 commits2026-04-12: 36 commits2026-04-13: 54 commits2026-04-14: 23 commits2026-04-15: 26 commits2026-04-16: 28 commits2026-04-17: 15 commits2026-04-18: 40 commits2026-04-19: 10 commits2026-04-20: 0 commits2026-04-21: 3 commits2026-04-22: 6 commits2026-04-23: 13 commits2026-04-24: 47 commits2026-04-25: 12 commits2026-04-26: 18 commits2026-04-27: 17 commits2026-04-28: 7 commits2026-04-29: 6 commits2026-04-30: 12 commits2026-05-01: 6 commits2026-05-02: 18 commits2026-05-03: 9 commits2026-05-04: 2 commits2026-05-05: 4 commits2026-05-06: 18 commits2026-05-07: 15 commits2026-05-08: 15 commits2026-05-09: 18 commits2026-05-10: 18 commits2026-05-11: 19 commits2026-05-12: 13 commits2026-05-13: 2 commits2026-05-14: 8 commits2026-05-15: 6 commits2026-05-16: 3 commits2026-05-17: 8 commits2026-05-18: 10 commits2026-05-19: 4 commits2026-05-20: 13 commits2026-05-21: 4 commits2026-05-22: 11 commits2026-05-23: 1 commit2026-05-24: 13 commits2026-05-25: 5 commits2026-05-26: 1 commit2026-05-27: 7 commits2026-05-28: 0 commits2026-05-29: 2 commits2026-05-30: 4 commits2026-05-31: 1 commit2026-06-01: 3 commits2026-06-02: 6 commits2026-06-03: 4 commits2026-06-04: 1 commit2026-06-05: 11 commits2026-06-06: 16 commits2026-06-07: 4 commits2026-06-08: 11 commits2026-06-09: 0 commits2026-06-10: 5 commits2026-06-11: 9 commits2026-06-12: 8 commits2026-06-13: 2 commits2026-06-14: 16 commits2026-06-15: 6 commits2026-06-16: 0 commits2026-06-17: 0 commits2026-06-18: 11 commits2026-06-19: 12 commits2026-06-20: 12 commits2026-06-21: 7 commits2026-06-22: 9 commits2026-06-23: 2 commits2026-06-24: 2 commits2026-06-25: 1 commit2026-06-26: 6 commits2026-06-27: 0 commits2026-06-28: 10 commits2026-06-29: 14 commits2026-06-30: 5 commits2026-07-01: 1 commit2026-07-02: 1 commit2026-07-03: 0 commits2026-07-04: 0 commits2026-07-05: 4 commits2026-07-06: 3 commits2026-07-07: 4 commits2026-07-08: 2 commits2026-07-09: 1 commit2026-07-10: 2 commits2026-07-11: 0 commits2026-07-12: 1 commit2026-07-13: 0 commits2026-07-14: 14 commits2026-07-15: 3 commits2026-07-16: 2 commits2026-07-17: 0 commits2026-07-18: 0 commits2026-07-19: 0 commits2026-07-20: 3 commits2026-07-21: 1 commit2026-07-22: 1 commit2026-07-23: 1 commit2026-07-24: 0 commits2026-07-25: 0 commits2026-07-26: 1 commit2026-07-27: 0 commits2026-07-28: 10 commits2026-07-29: 2 commits2026-07-30: 2 commits2026-07-31: 2 commits2026-08-01: 2 commits2026-08-02: 8 commits2026-08-03: 4 commits2026-08-04: 0 commits2026-08-05: 0 commits2026-08-06: 0 commits2026-08-07: 0 commits2026-08-08: 0 commits
1,058 commits in the last yearLessMore

Signals and awards

derived from tracked data
  • Landmark project

    58,150 stars

  • Very active

    1,058 commits in 52 weeks

  • Community-driven

    ~127 contributors

  • Permissive license

    MIT

  • Repeat trending

    5 trending appearances

What mempalace does

MemPalace is an innovative educational tool that digitizes the 'method of loci'—a memorization technique involving spatial environments. Users can construct virtual 3D rooms and populate them with specific pieces of information, such as vocabulary words or historical facts. The application helps users build strong associative memories by forcing them to navigate these virtual spaces to retrieve data. It combines spaced repetition algorithms with visual and spatial context to drastically improve long-term retention rates. This approach is particularly effective for students tackling large volumes of disconnected data.

Built for students, lifelong learners, and anyone looking to enhance their memory capabilities using proven psychological techniques. No specialized technical knowledge is required.

  • 3D environment builder: Provides an intuitive interface to construct and customize virtual memory palaces.
  • Spatial association: Links text, images, and audio directly to specific objects within the virtual rooms.
  • Spaced repetition: Integrates standard SRS algorithms to determine optimal review times for each item.
  • Cross-platform sync: Ensures that virtual palaces are accessible across desktop and mobile devices seamlessly.
  • Community sharing: Allows users to share pre-built environments tailored for specific academic subjects.

Where teams use it

Language acquisition

Helps users memorize vast amounts of vocabulary by placing words in thematic virtual locations.

Medical studies

Assists medical students in memorizing complex anatomical structures and drug interactions.

Public speaking prep

Allows speakers to mentally walk through their speech points placed around a virtual stage.

Historical memorization

Aids in remembering timelines and events by arranging them chronologically in a digital hallway.

Getting started: npm install && npm start

README

develop branch
MemPalace

MemPalace

Local-first AI memory. Verbatim storage, pluggable backend, 96.6% R@5 raw on LongMemEval — zero API calls.

Caution

Beware of impostor sites. MemPalace has no other official websites. The only official sources are this GitHub repository, the PyPI package, and the docs at mempalaceofficial.com. Any other domain (including .tech, .net, or other .com variants) is an impostor and may distribute malware. Details and timeline: docs/HISTORY.md.

Important

Claude Code sessions expire in 30 days without auto-save hooks wired. Read this →

Need the shortest recovery/setup path? Use the Claude Code retention setup checklist.


What it is

MemPalace stores your conversation history as verbatim text and retrieves it with semantic search. It does not summarize, extract, or paraphrase. The index is structured — people and projects become wings, topics become rooms, and original content lives in drawers — so searches can be scoped rather than run against a flat corpus.

The retrieval layer is pluggable. The current default is ChromaDB; the interface is defined in mempalace/backends/base.py and alternative backends can be dropped in without touching the rest of the system.

Nothing leaves your machine unless you opt in.

Architecture, concepts, and mining flows: mempalaceofficial.com/concepts/the-palace.


Install

MemPalace ships a CLI, so install it in an isolated environment to avoid PEP 668 errors on Debian/Ubuntu/Homebrew Pythons and to keep mempalace's deps (chromadb, numpy, grpcio, …) from conflicting with anything else in your global site-packages.

We recommend uvuv tool install puts the mempalace CLI in an isolated environment on your PATH:

uv tool install mempalace
mempalace init ~/projects/myapp

pipx works the same way if you prefer it: pipx install mempalace.

Prefer plain pip only inside an activated virtualenv where you explicitly want import mempalace available:

python -m venv .venv && source .venv/bin/activate
pip install mempalace

Docker

A container image is also available for running the MCP server or the CLI without a local Python toolchain. Everything persists under /data (palace, config, and the cached embedding model), so mount a volume there.

# Build the image (CPU; bundles the `extract` + `spellcheck` extras)
docker build -t mempalace .

# MCP server over stdio — note the `-i` flag (JSON-RPC needs stdin)
docker run -i --rm -v mempalace-data:/data mempalace

# Run any CLI command instead (mount the host directory you want to mine)
docker run --rm -v mempalace-data:/data -v /path/to/project:/work mempalace mine /work
docker run --rm -v mempalace-data:/data mempalace search "why GraphQL"

Wire it into an MCP client (e.g. Claude Code) as a stdio server:

{
  "mcpServers": {
    "mempalace": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "-v", "mempalace-data:/data", "mempalace"]
    }
  }
}

docker compose run --rm mcp works too (see docker-compose.yml). For CUDA-accelerated embeddings, build the GPU variant with docker build -f Dockerfile.gpu -t mempalace:gpu . and run it with --gpus all. Customise the bundled extras at build time, e.g. docker build --build-arg EXTRAS="extract,spellcheck" -t mempalace ..

Storage backends

ChromaDB is the default and needs no configuration. MemPalace also ships a pluggable backend contract, exercised across deliberately different substrates so the contract is never accidentally shaped around one vendor. Every non-default backend is opt-in.

Backend Mode Install Namespaces Lexical Configure with
chroma (default) Local (embedded) bundled
sqlite_exact Local (exact) bundled
milvus Local (Lite) · Server opt-in mempalace[milvus] MEMPALACE_MILVUS_URI
qdrant Server (REST) bundled MEMPALACE_QDRANT_URL
pgvector Server (Postgres) mempalace[pgvector] MEMPALACE_PGVECTOR_DSN

Select with --backend <name>, MEMPALACE_BACKEND=<name>, or "backend": "<name>" in config.json. See Storage backends for connection variables, namespace behavior, and deployment notes.

Quickstart

# Mine content into the palace
mempalace mine ~/projects/myapp                    # project files
mempalace mine ~/.claude/projects/ --mode convos   # Claude Code sessions (scope with --wing per project)

# Search
mempalace search "why did we switch to GraphQL"

# Load context for a new session
mempalace wake-up

For Claude Code, Gemini CLI, Antigravity, MCP-compatible tools, and local models, see mempalaceofficial.com/guide/getting-started.


Benchmarks

All numbers below are reproducible from this repository with the commands in benchmarks/BENCHMARKS.md. Full per-question result files are committed under benchmarks/results_*.

LongMemEval — retrieval recall (R@5, 500 questions):

Mode R@5 LLM required
Raw (semantic search, no heuristics, no LLM) 96.6% None
Hybrid v4, held-out 450q (tuned on 50 dev, not seen during training) 98.4% None
Hybrid v4 + LLM rerank (full 500) ≥99% Any capable model

The raw 96.6% requires no API key, no cloud, and no LLM at any stage. The hybrid pipeline adds keyword boosting, temporal-proximity boosting, and preference-pattern extraction; the held-out 98.4% is the honest generalisable figure.

The rerank pipeline promotes the best candidate out of the top-20 retrieved sessions using an LLM reader. It works with any reasonably capable model — we have reproduced it with Claude Haiku, Claude Sonnet, and minimax-m2.7 via Ollama Cloud (no Anthropic dependency). The gap between raw and reranked is model-agnostic; we do not headline a "100%" number because the last 0.6% was reached by inspecting specific wrong answers, which benchmarks/BENCHMARKS.md flags as teaching to the test.

Other benchmarks (full results in benchmarks/BENCHMARKS.md):

Benchmark Metric Score Notes
LoCoMo (session, top-10, no rerank) R@10 60.3% 1,986 questions
LoCoMo (hybrid v5, top-10, no rerank) R@10 88.9% Same set
ConvoMem (all categories, 250 items) Avg recall 92.9% 50 per category
MemBench (ACL 2025, 8,500 items) R@5 80.3% All categories

We deliberately do not include a side-by-side comparison against Mem0, Mastra, Hindsight, Supermemory, or Zep. Those projects publish different metrics on different splits, and placing retrieval recall next to end-to-end QA accuracy is not an honest comparison. See each project's own research page for their published numbers.

Reproducing every result:

git clone https://github.com/MemPalace/mempalace.git
cd mempalace
uv sync --extra dev   # or: pip install -e ".[dev]"
# see benchmarks/README.md for dataset download commands
uv run python benchmarks/longmemeval_bench.py /path/to/longmemeval_s_cleaned.json

Knowledge graph

MemPalace includes a temporal entity-relationship graph with validity windows — add, query, invalidate, timeline — backed by local SQLite. Usage and tool reference: mempalaceofficial.com/concepts/knowledge-graph.

MCP server

36 MCP tools cover palace reads/writes, knowledge-graph operations, cross-wing navigation, drawer management, and agent diaries. Installation and the full tool list: mempalaceofficial.com/reference/mcp-tools.

Agents

Each specialist agent gets its own wing and diary in the palace. Discoverable at runtime via mempalace_list_agents — no bloat in your system prompt: mempalaceofficial.com/concepts/agents.

Auto-save hooks

Auto-save hooks for Claude Code, Codex CLI, and Cursor IDE save periodically and before context compression:

If you are installing under time pressure, start with the Claude Code retention setup checklist: wire the hooks, back up existing JSONL transcripts, and backfill them with mempalace mine ~/.claude/projects/ --mode convos.

For per-message recall on top of the file-level chunks the hooks produce, run mempalace sweep <transcript-dir> periodically — it stores one verbatim drawer per user/assistant message, idempotent and resume-safe.


Requirements

  • Python 3.9+
  • A vector-store backend (ChromaDB by default)
  • ~300 MB disk for the embedding model. Onboarding (python -m mempalace.onboarding) offers embeddinggemma-300m (multilingual, 100+ languages, recommended) or all-MiniLM-L6-v2 (English-only, ~30 MB). See the docstring at mempalace/embedding.py for details and migration notes.

No API key is required for the core benchmark path.

Docs

Contributing

PRs welcome. See CONTRIBUTING.md.

License

MIT — see LICENSE.

View on GitHub

Recent activity

commits and pull requests

Releases and announcements

13 total
  1. v3.6.0v3.6.0Jul 17, 2026

    ## 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 t

  2. v3.5.0v3.5.0Jun 23, 2026

    ## v3.5.0 — local write daemon, opt-in HTTP transport, and palace-cleanup tooling This cycle adds two new ways to run MemPalace's write path and a set of tools for keeping a palace clean. An opt-in **local daemon** serializes background mines, diary saves, and hook ingests through a single process instead of racing for the palace handle, and an opt-in **HTTP transport** lets the MCP server run behind a long-lived HTTP client/proxy — loopback-default, with a Host/Origin DNS-rebinding guard and an optional bearer token. Three new MCP tools land alongside: `mempalace_checkpoint` (batch a whole session into one save), `mempalace_delete_by_source` (surgically purge mined benchmark/eval contamination — drawers *and* their index entries), and a `source_file` filter for scoped search. New transcript parsers (Continue.dev, Gemini CLI, Pi) and miner coverage for C#/PHP/Swift/Kotlin/Java widen what you can mine, and a batch of large-palace performance and reliability fixes round out the release. ### Features - **Opt-in local daemon for queued writes.** `mempalace daemon` serializes all palace writes through one local process so background work stops racing the palace handle. Opt-in and loc

  3. v3.4.1v3.4.1Jun 15, 2026

    ## v3.4.1 — Cursor and Antigravity IDE support We now have support for two more editors: a **Cursor** plugin with native hooks, and **first-class Google Antigravity** support — both bringing MemPalace's auto-save, session-start recall, and verbatim transcript mining to the same standard already shipping for Claude Code and Codex. Two reliability fixes round out the cycle: `embeddinggemma` no longer OOM-kills large re-embeds, and `migrate` / `repair` backups stop accumulating until they fill the disk. ### Features - **Cursor IDE plugin (`.cursor-plugin/`).** Auto-registers the `mempalace-mcp` server, five slash commands (`/mempalace-help`, `/mempalace-init`, `/mempalace-mine`, `/mempalace-search`, `/mempalace-status`), and a model-invocable skill — no manual `~/.cursor/mcp.json` edit. Install from a local clone now, or the Cursor marketplace once published. (#1632) - **Cursor IDE hooks (`stop` / `preCompact` / `sessionStart`).** Background auto-save every N agent turns, synchronous transcript mining before Cursor compacts, and session-start memory recall scoped to the workspace wing. One-command installer at `hooks/cursor/install.sh` (`--scope user|project`, `--variant f

  4. v3.4.0v3.4.0Jun 6, 2026

    ## v3.4.0 — pluggable backends, Docker, and reliability fixes ### Features - **Pluggable vector backends** — Qdrant, pgvector, and sqlite_exact alongside the default ChromaDB, selectable via `MEMPALACE_BACKEND` / `--backend`. - **Docker images** (CPU + GPU) for the MCP server and CLI. - **`mempalace migrate-wings`** — one-time migration that normalizes legacy wing names (strip leading/trailing separators) so pre-upgrade palaces stay discoverable. See `docs/recovery/wing-name-migration.md`. - **Known-systems lexicon** keeps multi-word product names atomic in entity detection. ### Fixes - embeddinggemma (the default model) now works with ChromaDB 1.5.x — semantic search was silently failing on fresh installs. - Prevent silent data loss from `drawer_id` hash collisions. - Importing `mcp_server` no longer recreates `~/.mempalace` (respects the privacy kill-switch). - `diary_write` accepts a `content` alias and restores the missing-parameter diagnostic. - Explicit-vector backends handle single-document inputs correctly. ### Infrastructure - PyPI publishing via GitHub Actions **Trusted Publishing** (OIDC), gated by manual approval.

  5. **3.3.6 is a features release.** The cycle's headline work: multilingual recall by default (embeddinggemma replaces MiniLM, cross-lingual cosine jumps from 0.35 → 0.88), the first cut of the living-memory graph (hallways within wings, tunnels across wings, Hebbian potentiation + Ebbinghaus decay so connections strengthen with use and fade without), office-document mining (PDF, DOCX, PPTX, XLSX, RTF, EPUB via the new `--mode extract`), virtual line numbers + surgical closet pointers that cite exact line ranges on exact dates, and the entity-detection cleanup pass that keeps "Code" out of your hallways and "Claude Code" atomic. The promises haven't moved. Every word stored exactly. Everything stays on your machine. No telemetry. Each release sharpens what's already there. ### Features - **Office-document mining via `--mode extract`.** New `mempalace mine <dir> --mode extract` ingests PDFs, Word (`.docx`), PowerPoint (`.pptx`), Excel (`.xlsx`), RTF, and EPUB books in addition to the existing source-code/text path. Install with `pip install mempalace[extract]` — pulls `striprtf` for RTF and MarkItDown (with `[docx,pdf,pptx,xlsx]` sub-extras) for the binary formats. Python 3.

Code frequency

additions and deletions
+363K-363KWeek of 2026-03-29: +16,358 linesWeek of 2026-03-29: -200 linesWeek of 2026-04-05: +25,670 linesWeek of 2026-04-05: -2,502 linesWeek of 2026-04-12: +363,009 linesWeek of 2026-04-12: -6,206 linesWeek of 2026-04-19: +12,882 linesWeek of 2026-04-19: -874 linesWeek of 2026-04-26: +9,198 linesWeek of 2026-04-26: -1,103 linesWeek of 2026-05-03: +7,512 linesWeek of 2026-05-03: -1,151 linesWeek of 2026-05-10: +11,232 linesWeek of 2026-05-10: -1,170 linesWeek of 2026-05-17: +11,185 linesWeek of 2026-05-17: -1,036 linesWeek of 2026-05-24: +23,210 linesWeek of 2026-05-24: -1,138 linesWeek of 2026-05-31: +11,900 linesWeek of 2026-05-31: -488 linesWeek of 2026-06-07: +5,887 linesWeek of 2026-06-07: -524 linesWeek of 2026-06-14: +8,351 linesWeek of 2026-06-14: -1,092 linesWeek of 2026-06-21: +2,841 linesWeek of 2026-06-21: -663 linesWeek of 2026-06-28: +6,132 linesWeek of 2026-06-28: -527 linesWeek of 2026-07-05: +1,628 linesWeek of 2026-07-05: -164 linesWeek of 2026-07-12: +4,135 linesWeek of 2026-07-12: -227 linesWeek of 2026-07-19: +1,459 linesWeek of 2026-07-19: -136 linesWeek of 2026-07-26: +3,194 linesWeek of 2026-07-26: -409 linesWeek of 2026-08-02: +2,918 linesWeek of 2026-08-02: -514 linesMar 29, 2026Aug 2, 2026
+528.7K lines added, -20.1K removed over the last year.

Commits per week

last 52 weeks
2220Week of 2025-08-10: 0 commitsWeek of 2025-08-17: 0 commitsWeek of 2025-08-24: 0 commitsWeek of 2025-08-31: 0 commitsWeek of 2025-09-07: 0 commitsWeek of 2025-09-14: 0 commitsWeek of 2025-09-21: 0 commitsWeek of 2025-09-28: 0 commitsWeek of 2025-10-05: 0 commitsWeek of 2025-10-12: 0 commitsWeek of 2025-10-19: 0 commitsWeek of 2025-10-26: 0 commitsWeek of 2025-11-02: 0 commitsWeek of 2025-11-09: 0 commitsWeek of 2025-11-16: 0 commitsWeek of 2025-11-23: 0 commitsWeek of 2025-11-30: 0 commitsWeek of 2025-12-07: 0 commitsWeek of 2025-12-14: 0 commitsWeek of 2025-12-21: 0 commitsWeek of 2025-12-28: 0 commitsWeek of 2026-01-04: 0 commitsWeek of 2026-01-11: 0 commitsWeek of 2026-01-18: 0 commitsWeek of 2026-01-25: 0 commitsWeek of 2026-02-01: 0 commitsWeek of 2026-02-08: 0 commitsWeek of 2026-02-15: 0 commitsWeek of 2026-02-22: 0 commitsWeek of 2026-03-01: 0 commitsWeek of 2026-03-08: 0 commitsWeek of 2026-03-15: 0 commitsWeek of 2026-03-22: 0 commitsWeek of 2026-03-29: 3 commitsWeek of 2026-04-05: 156 commitsWeek of 2026-04-12: 222 commitsWeek of 2026-04-19: 91 commitsWeek of 2026-04-26: 84 commitsWeek of 2026-05-03: 81 commitsWeek of 2026-05-10: 69 commitsWeek of 2026-05-17: 51 commitsWeek of 2026-05-24: 32 commitsWeek of 2026-05-31: 42 commitsWeek of 2026-06-07: 39 commitsWeek of 2026-06-14: 57 commitsWeek of 2026-06-21: 27 commitsWeek of 2026-06-28: 31 commitsWeek of 2026-07-05: 16 commitsWeek of 2026-07-12: 20 commitsWeek of 2026-07-19: 6 commitsWeek of 2026-07-26: 19 commitsWeek of 2026-08-02: 12 commitsAug 10, 2025Aug 2, 2026
1.1K commits in the last 52 weeks.

When work happens

weekday and hour
SunMonTueWedThuFriSat036912151821Sun 0:00 — 6 commitsSun 1:00 — 14 commitsSun 2:00 — 0 commitsSun 3:00 — 1 commitsSun 4:00 — 3 commitsSun 5:00 — 7 commitsSun 6:00 — 4 commitsSun 7:00 — 4 commitsSun 8:00 — 2 commitsSun 9:00 — 3 commitsSun 10:00 — 5 commitsSun 11:00 — 8 commitsSun 12:00 — 11 commitsSun 13:00 — 12 commitsSun 14:00 — 10 commitsSun 15:00 — 9 commitsSun 16:00 — 7 commitsSun 17:00 — 9 commitsSun 18:00 — 10 commitsSun 19:00 — 6 commitsSun 20:00 — 7 commitsSun 21:00 — 11 commitsSun 22:00 — 17 commitsSun 23:00 — 5 commitsMon 0:00 — 5 commitsMon 1:00 — 13 commitsMon 2:00 — 15 commitsMon 3:00 — 10 commitsMon 4:00 — 7 commitsMon 5:00 — 9 commitsMon 6:00 — 2 commitsMon 7:00 — 10 commitsMon 8:00 — 5 commitsMon 9:00 — 3 commitsMon 10:00 — 11 commitsMon 11:00 — 1 commitsMon 12:00 — 5 commitsMon 13:00 — 9 commitsMon 14:00 — 5 commitsMon 15:00 — 4 commitsMon 16:00 — 6 commitsMon 17:00 — 9 commitsMon 18:00 — 5 commitsMon 19:00 — 6 commitsMon 20:00 — 7 commitsMon 21:00 — 9 commitsMon 22:00 — 5 commitsMon 23:00 — 1 commitsTue 0:00 — 1 commitsTue 1:00 — 1 commitsTue 2:00 — 1 commitsTue 3:00 — 2 commitsTue 4:00 — 1 commitsTue 5:00 — 4 commitsTue 6:00 — 0 commitsTue 7:00 — 4 commitsTue 8:00 — 3 commitsTue 9:00 — 6 commitsTue 10:00 — 2 commitsTue 11:00 — 10 commitsTue 12:00 — 9 commitsTue 13:00 — 9 commitsTue 14:00 — 6 commitsTue 15:00 — 6 commitsTue 16:00 — 6 commitsTue 17:00 — 21 commitsTue 18:00 — 7 commitsTue 19:00 — 13 commitsTue 20:00 — 4 commitsTue 21:00 — 18 commitsTue 22:00 — 4 commitsTue 23:00 — 3 commitsWed 0:00 — 6 commitsWed 1:00 — 8 commitsWed 2:00 — 5 commitsWed 3:00 — 6 commitsWed 4:00 — 5 commitsWed 5:00 — 3 commitsWed 6:00 — 1 commitsWed 7:00 — 1 commitsWed 8:00 — 3 commitsWed 9:00 — 4 commitsWed 10:00 — 3 commitsWed 11:00 — 6 commitsWed 12:00 — 6 commitsWed 13:00 — 4 commitsWed 14:00 — 6 commitsWed 15:00 — 12 commitsWed 16:00 — 9 commitsWed 17:00 — 10 commitsWed 18:00 — 12 commitsWed 19:00 — 13 commitsWed 20:00 — 13 commitsWed 21:00 — 7 commitsWed 22:00 — 5 commitsWed 23:00 — 5 commitsThu 0:00 — 1 commitsThu 1:00 — 7 commitsThu 2:00 — 5 commitsThu 3:00 — 0 commitsThu 4:00 — 2 commitsThu 5:00 — 2 commitsThu 6:00 — 3 commitsThu 7:00 — 2 commitsThu 8:00 — 9 commitsThu 9:00 — 13 commitsThu 10:00 — 9 commitsThu 11:00 — 7 commitsThu 12:00 — 14 commitsThu 13:00 — 7 commitsThu 14:00 — 5 commitsThu 15:00 — 3 commitsThu 16:00 — 8 commitsThu 17:00 — 5 commitsThu 18:00 — 3 commitsThu 19:00 — 6 commitsThu 20:00 — 3 commitsThu 21:00 — 4 commitsThu 22:00 — 10 commitsThu 23:00 — 11 commitsFri 0:00 — 12 commitsFri 1:00 — 7 commitsFri 2:00 — 4 commitsFri 3:00 — 7 commitsFri 4:00 — 3 commitsFri 5:00 — 6 commitsFri 6:00 — 4 commitsFri 7:00 — 11 commitsFri 8:00 — 12 commitsFri 9:00 — 7 commitsFri 10:00 — 5 commitsFri 11:00 — 9 commitsFri 12:00 — 5 commitsFri 13:00 — 7 commitsFri 14:00 — 9 commitsFri 15:00 — 5 commitsFri 16:00 — 5 commitsFri 17:00 — 4 commitsFri 18:00 — 3 commitsFri 19:00 — 14 commitsFri 20:00 — 3 commitsFri 21:00 — 4 commitsFri 22:00 — 3 commitsFri 23:00 — 11 commitsSat 0:00 — 4 commitsSat 1:00 — 6 commitsSat 2:00 — 2 commitsSat 3:00 — 4 commitsSat 4:00 — 8 commitsSat 5:00 — 1 commitsSat 6:00 — 1 commitsSat 7:00 — 4 commitsSat 8:00 — 1 commitsSat 9:00 — 0 commitsSat 10:00 — 5 commitsSat 11:00 — 10 commitsSat 12:00 — 11 commitsSat 13:00 — 5 commitsSat 14:00 — 5 commitsSat 15:00 — 3 commitsSat 16:00 — 5 commitsSat 17:00 — 7 commitsSat 18:00 — 14 commitsSat 19:00 — 8 commitsSat 20:00 — 7 commitsSat 21:00 — 11 commitsSat 22:00 — 16 commitsSat 23:00 — 5 commits
Commit volume by weekday and hour (UTC). Larger dots mean more commits.
DateListRankStars gained
Jun 6, 2026daily#24+48
Apr 15, 2026daily#25+98
Apr 14, 2026daily#20+110
Apr 13, 2026daily#15+171
Apr 12, 2026daily#7+473
  • public-apis/public-apis

    A collective list of free APIs

    454.9K stars · Python

  • openclaw/openclaw

    Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

    385.5K stars · TypeScript

  • openclaw/openclaw

    Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

    384.4K stars · TypeScript

  • openclaw/openclaw

    Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

    384.4K stars · TypeScript

  • openclaw/openclaw

    Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

    384.4K stars · TypeScript

  • donnemartin/system-design-primer

    Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards.

    362.2K stars · Python