github MemPalace/mempalace v3.3.4

6 hours ago
  • Setup got smart and a local language model does the work for free. Mempalace init now uses a local LLM if you have one running, Ollama or LM Studio or llama.cpp, whichever you prefer. Zero cloud calls, no API key to set up, nothing costs anything. If you do not have one running, it falls back gracefully and never blocks. You are never stuck waiting on something that is not there.

  • The palace now connects ideas across projects. Cross wing topic tunnels are a new feature where, when two projects talk about the same theme, like a framework you use everywhere or a person who shows up across domains, the palace links them together. So when an LLM scans your memories for one project, it can follow the thread into related projects without you having to set anything up.

  • Setup and first ingest are now one step. When you run mempalace init, it asks if you want to mine the directory right after onboarding, and shows you a size estimate first so you are not surprised by a long ingest. One command, two things done, no manual second pass.

  • A storage fix made big palaces dramatically smaller. There was a bug where active palaces could bloat into many gigabytes on disk over time. One contributor reported their palace dropped from about thirty gigabytes down to under four hundred megabytes after the fix landed, and operations that were timing out before now respond instantly. The number is one person's field report, but the underlying fix is in place for everyone.

  • Background hooks now correctly recognize Claude Code conversations. The hooks that auto save your sessions used to treat conversation transcripts as if they were source code, which caused indexing confusion. Now they are tagged correctly as conversations, which means cleaner storage and better recall when you go looking for what you said.

  • The promises have not moved. Every word stored exactly. Everything stays on your machine. Nothing goes anywhere we have not explicitly told it to go. No telemetry. Zero. Each release sharpens what is already there instead of asking you to give up something you care about.

What's Changed

  • perf(mining): batch per-chunk upserts + optional GPU acceleration by @igorls in #1185
  • feat(graph): cross-wing tunnels by shared topics (#1180) by @igorls in #1184
  • chore: add OpenArena owner claim verification file by @igorls in #1189
  • fix(search): CLI hybrid rerank, legacy-metric warning, invariant tests (3.3.4) by @igorls in #1179
  • feat(cli): init prompts to mine, mine handles Ctrl-C gracefully (#1181, #1182) by @igorls in #1183
  • docs: fix HOOKS_TUTORIAL.md paths, matcher, and missing timeout (#1037) by @wahajahmed010 in #1101
  • chore(deps): bump actions/deploy-pages from 4 to 5 by @dependabot[bot] in #967
  • chore(deps): bump actions/upload-pages-artifact from 3 to 5 by @dependabot[bot] in #968
  • chore(deps): bump actions/checkout from 4 to 6 by @dependabot[bot] in #969
  • ci: add pip caching and bump Python on macOS/Windows by @mvalentsev in #939
  • fix(security): restrict tunnels.json file permissions by @arnoldwender in #1168
  • fix: HNSW graph corruption, PreCompact deadlock, mine fan-out (closes #974, #965, #955) by @felipetruman in #976
  • ci: bump Windows and macOS jobs to Python 3.13 by @igorls in #1205
  • fix: guard against data loss in repair, migrate, and CLI rebuild by @shaun0927 in #935
  • fix(repair): refuse to overwrite when extraction looks truncated (#1208) by @bensig in #1210
  • fix: sanitize topic parameter in tool_diary_write by @shaun0927 in #936
  • feat(init): context-aware corpus detection by @milla-jovovich in #1211
  • fix: call quarantine_stale_hnsw() in make_client(); lower threshold to 5min by @jphein in #1173
  • feat(corpus-origin): merge LLM fields into heuristic result instead of replacing by @milla-jovovich in #1221
  • fix: skip _fix_blob_seq_ids sqlite open on already-migrated palaces (#1090) by @jphein in #1177
  • fix(palace_graph): skip None metadata in build_graph by @jphein in #1201
  • fix(searcher): tolerate None documents in BM25 reranker by @jphein in #1198
  • feat(privacy): warn when LLM tier sends content to external API by @milla-jovovich in #1224
  • chore(corpus-origin): tag merged evidence by tier + pin confidence-source contract by @igorls in #1223
  • feat(privacy): treat Tailscale CGNAT range (100.64.0.0/10) as local by @milla-jovovich in #1225
  • fix(repair): detect HNSW capacity divergence and fall back to BM25 (#1222) by @igorls in #1227
  • fix(hooks): pass --mode convos when mining Claude Code transcript dirs by @igorls in #1230
  • fix(hooks): always mine the active transcript as convos, additive to MEMPAL_DIR by @igorls in #1231
  • fix(graph): normalize wing slug at init so topic tunnels fire for hyphenated dirs (#1194) by @bensig in #1195
  • fix(tunnels): normalize wing names in topic tunnel lookup for hyphenated dirs by @wahajahmed010 in #1197
  • fix: narrow _fix_blob_seq_ids + add repair --mode max-seq-id by @sha2fiddy in #1135
  • fix: prevent HNSW index bloat from resize+persist cycles by @funguf in #1191
  • feat(privacy): blocking consent gate for env-fallback LLM API keys by @milla-jovovich in #1233
  • feat(normalize): Gemini CLI session JSONL adapter by @milla-jovovich in #1234
  • fix(repair): decode BLOB embeddings.seq_id in max-seq-id heuristic (#1254) by @igorls in #1288
  • fix(repair): scale HNSW divergence floor with hnsw:sync_threshold by @messelink in #1287
  • fix(storage): stop ChromaDB from crashing when reopening an existing … by @Legion345 in #1262
  • fix(mcp_server): split get_or_create_collection on reopen (follow-up to #1262) by @igorls in #1289
  • chore(release): v3.3.4 by @igorls in #1232

New Contributors

Full Changelog: v3.3.3...v3.3.4

Don't miss a new mempalace release

NewReleases is sending notifications on new releases.