TechEmpower's production fork of MemPalace/mempalace (transferred from jphein/mempalace in May 2026)
Caution
MemPalace has NO other official websites.
The ONLY official sources are:
- The upstream GitHub repository and this fork's GitHub repository
- The PyPI package
- The docs at mempalaceofficial.com
ANY other domain (including .tech, .net, or other .com variants) is an impostor and may distribute malware. Do not download executables from untrusted sites. Details and timeline: docs/HISTORY.md.
Important
🚨 Claude Code sessions expire in 30 days w/out auto-save hooks wired! Read this →
Need the shortest recovery/setup path? Use the Claude Code retention setup checklist.
A verbatim-first local AI memory system. This fork tracks upstream/develop through the v3.3.6 sync (2026-05-24, commit 6957c7e) and runs in production on a 335K+ drawer Postgres + pgvector + Apache AGE palace behind palace-daemon. It carries ~574 fork-ahead commits that compose with — not replace — bensig's release direction; the v3.3.5 release (2026-05-10) includes our co-authored _get_collection retry-once via upstream #1377. 3908 tests pass on main.
The fork's architectural thinking — the four-layer memory model, the verbatim-vs-derivative thesis, design principles, and the two-memory-layer pairing with Auto Dream — lives in docs/ARCHITECTURE.md. The new things here are what we've learned, not just what we've fixed.
We surveyed the memory-system landscape in April 2026 and found no verbatim-first local system with MCP. The landscape has since fragmented — MCP memory servers proliferated in May 2026 — but the verbatim-vs-derivative axis remains the clearest architectural dividing line. Updated survey as of 2026-05-24:
| System | Local? | MCP? | First public | Notes |
|---|---|---|---|---|
| MemPalace (upstream) / techempower-org fork | Yes | Yes | 2026-04-06 (v3.0.0) | What we have. 335K+ drawers in production. Postgres + pgvector + AGE knowledge graph + BM25/vector/graph hybrid search. ~53K stars (upstream, 2026-05-28). |
| Longhand | Yes | Yes, 17 tools | 2026-04-14 (v0.9.1) | Closest cousin. Claude Code-specific — indexes ~/.claude/projects/*.jsonl verbatim. SQLite + ChromaDB. Deterministic file-state replay via stored diffs. |
| Celiums | Yes (SQLite, Docker, or DO) | Yes, 6 tools | 2026-04-08 | Full module text with PAD emotional vectors, importance scores, circadian metadata. 500K+ expert-module knowledge base alongside personal memory. |
| mcp-memory-service | Yes (SQLite) or Cloudflare Workers | Yes | 2024-12-26 | The long-standing verbatim option (v10.36.6). Turn-level storage; MiniLM local embeddings. REST API + MCP + OAuth + CLI + dashboard. |
| iai-mcp | Yes (LanceDB) | Yes | ~2026 | Three-layer: episodic (verbatim, write-once), semantic (consolidated summaries), procedural (stable preferences). Background sleep-cycle consolidation. |
| ai-memory | Yes (SQLite FTS5) | Yes, 43 tools | ~2026 | Rust binary. Three tiers with configurable TTL. Autonomous curator daemon (auto-tag, contradiction detection, dedup). Ed25519 attestation. |
| Open Brain (OB1) | Yes (Postgres + pgvector, Docker) | Yes, 10 tools | ~2026 | Separates raw data from embedding indexes — rebuild indexes without touching source. HNSW sub-ms vector search. |
| System | Local? | MCP? | First public | Notes |
|---|---|---|---|---|
| claude-mem | Yes (SQLite + ChromaDB) | Yes | ~2025-10 | 89K+ stars — largest community by far. AI-compressed summaries, not verbatim. "Endless Mode" for extended sessions. |
| Mem0 / OpenMemory | Partial | Yes | 2023-06 | ~48K stars. New 2026 algorithm: single-pass hierarchical extraction + multi-signal retrieval (91.6% accuracy). Opt-in infer=False for verbatim hard constraints. Graph Memory locked behind Pro. |
| Zep / Graphiti | Partial (Neo4j/FalkorDB) | Yes (Graphiti MCP v1.0) | 2023 / 2024 | ~22.8K stars. Temporal knowledge graph with dual timelines. 63.8% LongMemEval. Cloud Pro $99/mo+. |
| Letta (formerly MemGPT) | Yes | Partial (transitioning) | 2023-10 | ~22.8K stars. V1 architecture rework (Mar 2026) — heartbeats deprecated. New Letta Code (memory-first coding agent). Three-tier: core/recall/archival. MCP shifting from server-side to client-side skills. |
| Supermemory | Cloud-first (Cloudflare Workers) | Yes | ~2024 | 22.7K stars. Fact extraction + graph. Dual-layer timestamps. Plugins for Claude Code, OpenCode, Hermes. |
| Cognee | Yes | Yes | 2023-08 | ~14.8K stars. "Memory control plane" via ECL pipeline. MCP with graph/RAG/code/cypher search modes. v1.1.0.dev1. |
| Hindsight | Yes (Docker) | Yes | 2026-01-05 | ~14K stars. v0.6.2. Three ops: retain/recall/reflect. Bank Template Hub, Constellation graph view. Fortune 500 production use. |
| CaviraOSS OpenMemory | Yes | Yes | 2025-10-26 | 4.1K stars. TypeScript. Time-based filtering, connectors for GitHub/Notion/GDrive. Migration tools from Mem0/Zep/Supermemory. |
| System | Local? | MCP? | First public | Notes |
|---|---|---|---|---|
| agentmemory | Yes (SQLite) | Yes, 53 tools | ~2026-04 | 9.4K stars. BM25 + vectors + KG via RRF. Confidence decay, auto-archival. 95.2% R@5 on LongMemEval-S. |
| EngramX | Yes (SQLite) | Yes | 2026-04-11 | v4.0 "Skill Pack" (May 2026). Context spine intercepts file reads — ~89% token reduction. 8 IDEs. Bi-temporal mistake prevention. 3-layer cache (23us/op). |
| EverOS / EverMind | Yes (Docker) | Yes | ~2025 | SOTA on LoCoMo (93.05%), LongMemEval-S (83.0%). Three-phase lifecycle: episodic → semantic → reconstructive. Multimodal. |
| OMEGA | Yes (SQLite + ONNX) | Yes, 25 tools | ~2026-03 | 95.4% LongMemEval. Zero external deps. AES-256-GCM encryption at rest. Open-core (Apache 2.0 core; Pro for multi-agent). |
| System | Notes |
|---|---|
| True Memory | arXiv 2026-05. Six-layer verbatim-first architecture. 93.0% LoCoMo, 87.8% LongMemEval, 76.6% BEAM-1M. Argues "extraction at ingestion is the wrong primitive" — independent validation of the verbatim thesis. No code release yet. |
- The verbatim thesis has academic validation. True Memory (arXiv:2605.04897) independently argues that extraction at ingestion is the wrong primitive, scoring 93.0% on LoCoMo vs Mem0's 61.4%. New entrants iai-mcp and ai-memory both chose verbatim-first designs, suggesting the pattern has reached broader adoption.
- claude-mem (89K+ stars) is the elephant in the room. Explicitly non-verbatim (AI compression), but its community size makes it the default comparison point. The largest system taking the opposite architectural approach.
- Letta V1 rework (Mar 2026) deprecates heartbeats and server-side MCP. MCP support is shifting to client-side skills; the story is less clear-cut than before.
- Mem0 shipped a significant algorithm upgrade (single-pass hierarchical extraction + multi-signal retrieval → 91.6%) without going verbatim. Added opt-in
infer=Falsefor verbatim hard constraints — an escape hatch, not a core commitment. - MCP memory server space fragmented dramatically. At least 6 new systems with MCP support since April: agentmemory, OMEGA, ai-memory, iai-mcp, Open Brain, EngramX v4.0. Most are local-first SQLite. Differentiators narrowing to verbatim-vs-extraction and consolidation strategy.
The April-2026 verbatim cluster (MemPalace, Celiums, Longhand, engram all within ~8 days) is no longer an isolated coincidence — it was the leading edge of a pattern now confirmed by academic work and a second wave of implementations. The differentiator: verbatim storage is the foundation; everything else (tags, KG, decay, summaries, consolidated indices) is enrichment layered on top.
git clone https://github.com/techempower-org/mempalace.git
cd mempalace
uv sync --extra dev # recommended; or: python -m venv venv && pip install -e ".[dev]"
uv run mempalace init ~/Projects --yes
uv run mempalace mine ~/Projects/myproject
uv run mempalace search "why did we switch to GraphQL"For a daemon-fronted deployment (recommended once palace size reaches the multi-thousand-drawer range), see palace-daemon's setup. The fork's scripts/deploy.sh is a one-command Syncthing-aware redeploy: push fork main, restart palace-daemon, post-restart import-check that the new fork-ahead surface is loaded.
A Stop hook fires every 15 messages in Claude Code, triggers verbatim transcript mining via the daemon's /mine endpoint (no LLM in the loop), and renders a terminal line so the user sees the ingest land:
{"systemMessage": "✦ Transcript ingest triggered (wing=wing_realmwatch)"}search_memories (via mempalace_search MCP tool) returns results with scope-authoritative context so callers can tell when the vector layer underdelivered:
{
"query": "kiyo xhci usb crash fix razer",
"total_before_filter": 15,
"available_in_scope": 160351,
"warnings": [],
"results": [
{"drawer_id": "drawer_kiyo-xhci-fix_technical_a8b2c4...", "wing": "projects",
"room": "technical", "similarity": 0.859, "matched_via": "drawer", ...},
{"drawer_id": "drawer_kiyo-xhci-fix_technical_d5e7f9...", "wing": "kiyo-xhci-fix",
"room": "technical", "similarity": 0.852, "matched_via": "drawer", ...}
]
}When the HNSW index is genuinely degraded (rare, post-fix), the same call returns warnings: ["vector search returned 0 of 5 requested; filled 5 from sqlite+BM25 keyword match"] with hits tagged "matched_via": "sqlite_bm25_fallback" — data is never silently hidden.
Substrate (2026-05-15). Postgres + pgvector + Apache AGE shipped on main and serving production traffic. PG16 + pgvector 0.8.2 + AGE 1.6.0 on familiar.jphe.in:5433. One engine consolidates vector search, full-text search (tsvector BM25), graph traversal, and the temporal entity-relationship store — previously four separate systems (ChromaDB + SQLite + graph cache). 8/9 bench suites pass. Full operator narrative at docs/operators/pgvector-cutover-runbook.md.
AGE integration (2026-05-22). PR #101 merged — six-phase AGE integration complete. Writethrough middleware on every drawer write extracts entities and creates :MENTIONS edges in the AGE graph. Backfill running against 335K+ existing drawers at ~5/s. The mempalace_walk_palace MCP tool enables Cypher traversal by wing, room, or entity. A 2026-05-17 spike showed graph signal adds +9pp R@5 over vector-only retrieval.
Hybrid retrieval (2026-05-24). candidate_strategy="hybrid" (vector ∪ tsvector BM25 ∪ AGE graph-expanded candidates, hybrid-reranked) is now the MCP default for all callers.
Three bands of work, all instances of the architectural principles. Detail rows in the fork change inventory and FORK_CHANGELOG.md.
- Structural retrieval fixes. Verbatim-only model: hooks no longer write 1KB checkpoint summaries; auto-mined transcript chunks land in
mempalace_drawersandmempalace_searchreaches them directly. One collection, one search path, no kind-filter / over-fetch hack. - Single-writer architecture. palace-daemon is the only process that opens the palace; clients connect over HTTP. ChromaDB HNSW concurrency hazards become structurally impossible.
- Deterministic hook saves. Silent saves bypass auto-memory conflicts — the LLM is no longer in the save path. Verbatim transcript ingest is the entire save path.
Organized around the verbatim-vs-derivative axis. Each item evaluated against the architectural principles.
| ID | What | Status | Tracking |
|---|---|---|---|
| P0 | Multi-label tags (3-8 per drawer, TF-IDF extraction) | Shipped (auto-extract on write + length/count caps) | Fork-side; see FORK_CHANGELOG.md |
| P1 | Derive hierarchy from unambiguous signals (cwd, transcript path) | Open | Fork-side |
| P2 | Decay / recency weighting (Weibull) | Shipped (recency-decay search weighting + prune --stale-days) |
Fork-side; rerank also tracked upstream |
| P3 | Feedback loops (rerank + rating MCP tool) | Shipped (mempalace_rate_memory + bounded rating signal); rerank tracked upstream |
Fork-side; see FORK_CHANGELOG.md |
| P4 | KG auto-population + entity resolution | Shipped 2026-05-22 | PR #101 |
| P5 | Temporal fact validity (SPOC context slot) | Open, depends on P4 | — |
| P6 | Input sanitization on writes | Low priority while local-only | — |
| P7 | Alternative storage modes | Shipped (pgvector+AGE) | RFC 001 #743 |
| P8 | Corpus partitioning by purpose | On hold | Design doc |
- End-to-end QA measurement on the post-structural-fix palace — the "17% E2E QA" attribution to engram-2 in earlier drafts was not substantiated in their published materials; the corpus-shape pathology it surfaced (checkpoint domination of
mempalace_searchresults, pre-migrationkind=contentreturning 3 tokens/Q vs post-migration 1,267) is real and is closed. Results published innotebook/data/cat9-postmigrate-e2e/REPORT.md: on LongMemEval oracle (n=500, readero4-mini/ judgegpt-5.3-chat), the default/searchpath scores 97.0% R@5 and 60.40% E2E QA — a +38.4pp retrieval→answer gap that locates the open work in consumption, not retrieval. (age-fused 17.60% is a known-broken-harness reading — snippet-width starvation + empty triples layer — not a verdict on graph fusion.) - Cat 9 / The Handshake — generalizable measurement of the retrieval→consumption gap. 46.67% / 78.33% on RLM-vs-Familiar. Scaling across the verbatim-first cohort via
jphein/multipass-structural-memory-eval. - Multi-palace separation — curated "authority" vs auto-mined memory (upstream #1018). P8 may absorb. Design doc.
A meaningful shift in 2026-04 and 2026-05: this fork increasingly composes with upstream rather than carrying parallel implementations.
- Cherry-picks (in-flight upstream PRs we use early): #665 PostgreSQL backend (commit
5e90c72, the substrate work above), #1085 batched inserts (6be6fff— CLOSED 2026-05-16, superseded by merged #1185; safe to drop on next sync), #1087 rewritecmd_purgeviadelete(where=)(366a9ad), #1094 None-metadata coercion (43d728d). - Co-authored merges: #1377 (surgical
_get_collectionretry-once, shipped in v3.3.5 — originated from this fork via #1286 which igorls closed and re-extracted withCo-authored-bycredit). - Coordinated reviews: #1199 (rmdes' unbounded-ingest fix), #1219 (pepo72's drawer_id), RFC 001 #743 (storage backend spec).
- Closed in favor of upstream: #1171 cross-process write lock (closed 2026-04-25 — Felipe's #976 plus daemon-strict architecture obsoleted ours).
The fork ships structural moves first, validates them on the canonical palace, then either contributes upstream as PRs or aligns with upstream's parallel implementation. The composition is the point.
Four peer builds converged on the same architectural agreements as this fork (verbatim base layer, no LLM in index path, wings as scope routing, consumption problem unsolved by retrieval): Familiar (78.33% recall), CampaignGenerator (19.82x cost reduction), Kent (APO training), adaptmem (orthogonal encoder lift). The multipass-structural-memory-eval framework provides the Cat 9 / Handshake diagnostic.
Full inventory of companion tools, evaluation frameworks, competing systems, peer builds, and active forks in docs/ECOSYSTEM.md.
Open from this fork as of 2026-05-24. Run gh pr list --repo MemPalace/mempalace --author jphein --state open for the live list. Recently merged: #1142 (RELEASING.md, 2026-05-22), #1494 (recovery runbook, 2026-05-22), #1487 (rebuild_index progress, 2026-05-13), #1024 (configurable chunking, 2026-05-15), #1459 (empty-metadata sentinel, 2026-05-13) and #1474 (convo_miner bulk pre-fetch, 2026-05-13).
| PR | Status | Description |
|---|---|---|
| #660 | CI green, awaiting review | L1 importance pre-filter |
| #1005 | CI green, Dialectician-acked | Warnings + sqlite BM25 top-up — never silently return fewer results than scope contains |
| #1086 | CI green, awaiting review | mempalace export CLI wrapper |
| #1087 | CI green, rewritten 2026-04-26 per @igorls's review | mempalace purge --wing/--room via delete(where=) (no nuke-and-rebuild) |
| #1094 | CI green, awaiting review | Coerce None metadatas to {} at ChromaCollection boundary |
| #1378 | CI green | Hoist CLOSET_RANK_BOOSTS to module level + record VecRecall ablation finding |
| #1382 | CI green | Benchmarks UTF-8 encoding + ASCII print chrome on Windows |
| #1484 | CI pending | OpenCode source adapter on RFC 002 contract — co-authored with @JakobSachs |
| #1508 | CI pending | symbol_header_prefix kwarg in chunk_text |
- Publish Cat 9 end-to-end results on the post-migration palace, with adapter parity numbers across the verbatim-first cohort.
- Publish the multipass-structural-memory-eval harness with adapters for MemPalace, Longhand, Celiums, mcp-memory-service.
- Land P1 (derive hierarchy from cwd / transcript path) and P5 (temporal fact validity) — the remaining open planned-work items; P0 (tags), P2 (decay/recency), and P3 (rating feedback) have shipped fork-side.
- Agent-shaped CLI surface — shipped. A fast direct-to-daemon CLI quartet —
mempalace list,mempalace graph,mempalace cypher,mempalace stats— each with--json/--format jsonfor non-MCP integration. These skip the MCP/AI round-trip and hit the daemon directly, so they're faster than the equivalent tool call. Prior art: Grafana's GCX CLI. - First-class support across AI coding agents — Claude Code, OpenCode, Cursor, Aider, Gemini CLI, Codex CLI, Warp. Path: upstream's RFC 002 source-adapter spec. Three cells: read (MCP, already agent-agnostic), mine (per-agent via RFC 002), hook/event (per-host or mining-on-cron fallback).
# Setup
git clone https://github.com/techempower-org/mempalace.git
cd mempalace
uv sync --extra dev # recommended; or pip install -e ".[dev]"
# Develop
uv run pytest tests/ -q # 3498 tests (benchmarks deselected)
uv run mempalace status # palace health
uv run ruff check . && uv run ruff format --check .
# Doc maintenance (canonical YAML + renderer, see CLAUDE.md)
./scripts/render-docs.py # regenerate FORK_CHANGELOG from docs/fork-changes.yaml
./scripts/check-docs.sh # lint test count, fork hashes, render parity, upstream PR states
# Deploy fork main → palace-daemon on familiar.jphe.in:8085
./scripts/deploy.sh # one command: push, sync, restart, health, import-checkThe full enumeration of fork-ahead changes. The canonical source is docs/fork-changes.yaml; FORK_CHANGELOG.md is regenerated from it and contains the complete open/pending table. Run ./scripts/check-docs.sh to verify everything resolves to live state.
| # | Description | Upstream PR | Fork commit |
|---|---|---|---|
| 1 | auto_wake: opt-in wake-on-demand for a sleeping palace-daemon host (wake command + /health poll + single retry) | — | TBD |
| 2 | AGE graph-walk: auto edge-endpoint indexes in backfill + bind anonymous RELATION targets (MemPalace#335) | — | TBD |
| 3 | pluggable adaptmem_ft encoder backend selectable via MEMPALACE_EMBEDDING_MODEL (closes #308) | — | 5fba6d8 |
| 4 | README.md landscape table — refresh upstream MemPalace star count from ~23K → ~53K (current 2026-05-28) | — | TBD |
| 5 | README.md + docs/ECOSYSTEM.md — soften 'engram-2 17% E2E QA' framing per the 2026-05-24 research doc's unsubstantiated finding (#319) | — | ddf00b4 |
| 6 | kg_llm_extractor rewrites AGE dollar-quote tag in triples so drawers indexing palace source code don't fail at add_triple (#313) | — | 3fb9428 |
| 7 | scripts/maintain-fork-changes.py + ship-prep step 1: resolve commit:HEAD placeholders and de-dup yaml entries (#316) | — | 9060e09 |
| 8 | scripts/ship-prep.sh — one command bumps README test count and runs all three doc renderers (#312) | — | 4677db8 |
| 9 | mempalace_search MCP input schema accepts fusion_mode (convex|rrf) and forwards to search_memories (#302) | — | f753ec4 |
| 10 | scripts/check-docs.sh finds pytest via main checkout when run from a worktree, fails hard instead of silently skipping test-count check (#311) | — | 1d19a8b |
| 11 | kg_triple_worker retries add_triple within-worker on transient psycopg errors instead of abandoning to lease-reclaim (#298) | — | 36c0b02 |
| 12 | mempalace_kg_stats returns structured backend-unavailable envelope on transient psycopg failures (#299) | — | 8fd0b01 |
| 13 | mempalace why + tunnels — explain a drawer + inventory cross-wing tunnels (slice of #191) | — | fdcd0b4 |
| 14 | RRF vs convex-blend rerank — A/B measurement on our corpus (#162) | — | ea5d567 |
| 15 | KG triples gain SPOC context slot + worker auto-derives valid_from from drawer metadata (#161) | — | b87ce05 |
| 16 | mempalace bulk-move — multi-drawer metadata relocation by source wing/room (#191) | — | 1ca544b |
| 17 | mempalace move — fast direct-to-daemon single-drawer wing/room relocation (#191) | — | d007b6f |
| 18 | mempalace stats migrates to GET /stats REST + exposes graph/status sections (#191) | — | 853bb25 |
| 19 | mempalace cypher — read-only Cypher query CLI (#191) | — | 32a41b1 |
| 20 | mempalace graph — fast direct-to-daemon KG structural snapshot (#191) | — | 499f42d |
| 21 | mempalace list — fast direct-to-daemon drawer browser (#191) | — | 257137b |
| 22 | Recency decay weighting in search + mempalace prune --stale-days CLI (#158) | — | 558d327 |
| 23 | mempalace_rate_memory MCP tool + bounded rating signal in search ranking (#159) | — | 583536c |
| 24 | Formalize wing/room derivation order; demote entity detector to last-resort hint (#157) | — | TBD |
| 25 | RRF fusion mode + convex-vs-RRF A/B harness (#162) | #247 | 6c9d10c |
| 26 | mempalace stats: add ROOMS breakdown (drawer count by room) to the dashboard | — | 1673465 |
| 27 | Calibrated confidence field on search results + Brier-score eval column | — | TBD |
| 28 | Evaluation doc: curated-authority vs auto-mined separation (#202) | — | TBD |
| 29 | Apply AGE statement_timeout in same transaction as cypher() (PR #228 follow-up) | — | TBD |
| 30 | LLM-based KG triple extraction: queue table, async worker, llama.cpp on familiar | — | 59ac0bc |
| 31 | Promote verbatim-vs-derivative essay from research/ to README (#170) | — | 6a264d9 |
| 32 | mempalace stats — palace analytics dashboard (#191) | — | 6f994fb |
| 33 | CLI wiring: mempalace mine --source (#57) | — | 5ed9fa7 |
| 34 | Warp terminal source adapter (#62) | — | 2e85585 |
| 35 | OpenCode adapter smoke test against real DB (#56) | — | a9ed72b |
| 36 | Codex, Gemini, and Aider source adapters (#61, #59) | — | 0c23165 |
| 37 | Filesystem + conversation source adapters (#63) | — | 9a1facf |
| 38 | Widen auto-query signal patterns for natural recall phrases | — | 33e780e |
| 39 | Native rename_wing backend operation + CLI command (#154) | — | d045f83 |
| 40 | Standalone essay: the verbatim-vs-derivative axis (#47) | — | TBD |
| 41 | Research doc: uncertainty-aware retrieval analysis (#84) | — | TBD |
| 42 | Design doc: scope/collection filter on mempalace_search (#76) | — | TBD |
| 43 | Agent-shaped CLI surface — --json / --quiet for non-MCP integration | — | 25ed900 |
| 44 | Design eval: multi-palace separation — curated vs auto-mined (#45) | — | TBD |
| 45 | Document .sh shim delegation to palace-daemon (counter-position to upstream #1069) | — | bf0a4d0 |
| 46 | Honor ~/.mempalace/RETIRED marker — refuse default palace, surface retire message | — | 798cf14 |
| 47 | Empty repo .opencode/opencode.json mcp block — disabled flag wasn't being respected | — | 7133eee |
| 48 | Drop $comment from .opencode/opencode.json — schema rejects unknown root keys | — | 637bb01 |
| 49 | Disable repo-level MCP entry by default + venv-python fallback | — | 47018e5 |
| 50 | Stub resources/list + prompts/list so MCP clients stop ERROR-logging on connect | — | 6ca0670 |
| 51 | Bundled OpenCode live-capture plugin that bypasses option-K v1.2.1 bugs (filed upstream as #4, #5) | — | 5522623 |
| 52 | Documented OpenCode integration recipe (read-side MCP + push plugin + retrospective adapter) | — | 60dc9e6 |
| 53 | .opencode/opencode.json — repo-root MCP config so opencode picks up mempalace automatically | #1567 (OPEN) | ba16b82 |
| 54 | OpenCodeSourceAdapter (RFC 002) — retrospective ingest of OpenCode SQLite sessions | #1484 (OPEN) | 2ffe652 |
| 55 | mempalace_walk_palace MCP tool — agent walks the palace via AGE Cypher | — | 8022ecb |
| 56 | Backfill AGE graph from existing drawer table — restartable, checkpointed | — | b3f0206 |
| 57 | Wing/Room/Drawer hierarchy as native AGE nodes; Cypher MATCH walks palace structure | — | ff583c0 |
| 58 | Write-through middleware on PostgresCollection — entities populate AGE on every drawer write | — | 3321d83 |
| 59 | KnowledgeGraphAGE API parity with SQLite KG: add_entity, invalidate, query_entity, query_relationship, timeline, seed_from_entity_facts | — | ff7187d |
| 60 | Pending-writes journal + replay so daemon outages stop being silent | — | 0c34464 |
| 61 | MCP server distinguishes 'backend unreachable' from 'no palace found' | — | 0c34464 |
| 62 | Defense-in-depth metadata sanitizer at the chromadb-client chokepoint | — | f499814 |
| 63 | Route Stop/PreCompact hooks through palace-daemon/clients/hook.py | — | 42ded2e |
| 64 | KnowledgeGraphAGE skeleton — Apache AGE graph bootstrap over psycopg2 | — | a3ee623 |
| 65 | README pivots to the four-layer model + Auto Dream as vindication of the verbatim-vs-derivative axis | — | 55b36ca |
| 66 | CI: gate postgres-backend tests against a pgvector service container | — | da0bdbb |
| 67 | PostgreSQL backend via #665 cherry-pick + fork-side adaptations + smoke tests | #665 (OPEN) | 5e90c72 |
| 68 | daemon-route mempalace status / search / mine when PALACE_DAEMON_URL is set |
— | 22ef562 |
| 69 | daemon-route mcp_server.py via the handle_request JSON-RPC chokepoint |
— | 41359ba |
| 70 | Preserve dashed project names in transcript-derived wings | #10 | d76134d |
| 71 | Drop wing_ prefix from transcript-derived wings to converge with operator mines | #9 | 86d4700 |
| 72 | Retire mempalace_session_recovery collection + read tool | #8 | 0b945e1 |
| 73 | mempalace mined + purge --source-file (mining management surface) | #7 | 2e6ced9 |
| 74 | Drop hook-side checkpoint diary writes — verbatim-only architecture | #6 | 69768fc |
| 75 | Restore transcript ingest via daemon /mine when PALACE_DAEMON_URL is set | #2 | 09d2ca6 |
| 76 | hook_verbatim_mode config flag preserves system tags + full tool I/O during transcript ingest |
— | ef98961 |
| 77 | Retire the kind= filter — structural split made it inert |
— | 7ba28dc |
| 78 | Hoist CLOSET_RANK_BOOSTS to module level + record VecRecall ablation finding | — | 3cb03f3 |
| 79 | Strip embedded API key from .claude-plugin/ manifests; rely on env inheritance | — | 9f91e18 |
| 80 | Cherry-pick #1094 — coerce None metadatas at chromadb boundary | #1094 (OPEN) | 43d728d |
| 81 | Cherry-pick #1087 rewrite — collection.delete(where=) instead of nuke-and-rebuild | #1087 (OPEN) | 366a9ad |
| 82 | Canonical YAML manifest + renderer for fork-ahead docs | — | 5a01aec |
| 83 | Phase D migration + PreCompact recovery write | — | 42817d7 |
| 84 | Surface drawer_id in search/diary/recovery payloads | — | 9a8bb77 |
| 85 | Cherry-pick #1085 — batch ChromaDB inserts in miner (10–30× faster) | #1085 (CLOSED) | 6be6fff |
| 86 | scripts/deploy.sh — one-command Syncthing-aware redeploy | — | 8252025 |
| 87 | Phases A–C of the checkpoint collection split | — | e266365 |
| 88 | kind= filter on search_memories excludes Stop-hook checkpoints (transitional) | — | f9f5cc4 |
- 2026-05-22: #1142 (
docs/RELEASING.md), #1494 (recovery runbook for chromadb dimensionality=None corruption) - 2026-05-15: #1024 — Configurable
chunk_size/chunk_overlap/min_chunk_sizeexposed viaMempalaceConfig - 2026-05-13: #1487 (
rebuild_indexprogress callback), #1459 (empty-metadata sentinel), #1474 (convo_miner bulk pre-fetch) - 2026-05-06 (in v3.3.5): #1377 —
_get_collectionretry-once + log-on-failure (co-authored from this fork via the closed #1286) - 2026-05-01 (post-v3.3.4): #1262, #1289, #1303
- 2026-04-26: #1173, #1177, #1198, #1201
- 2026-04-23: #659 — diary
wingparameter - 2026-04-22: #661, #673, #1021
- 2026-04-21 (in v3.3.2): #1000, #1023, #681
- 2026-04-18: #999 — None-metadata guards across 8 read paths
- In v3.3.0: #664, #682, #683, #684, #635 (via #667)
- #1085 (cherry-pick — closed by @midweste 2026-05-16, superseded by merged upstream #1185)
- #1286 (drifted; @igorls closed and re-extracted the surgical fix as #1377 with co-author credit)
- #1171 (cross-process write lock — superseded by #976 + daemon-strict)
- #1146, #1115, #629, #632, #662, #663, #738, #1036 — all superseded
- The Verbatim-vs-Derivative Axis — standalone treatment of Principle 1. Structural argument, the April-May 2026 recovery-collection episode (210× token-budget gap closed by one structural change), and Anthropic's Dreams API as independent vendor-API ratification of the same axis.
- True Memory vs MemPalace — six-vs-four layers, benchmark comparison, convergent verbatim-first design.
- Memory System Benchmarks (2026-05) — LongMemEval/LoCoMo/BEAM landscape survey across 20+ systems.
- Three Patterns for Agent Memory — Familiar / RLM / parallel hybrid on jp-realm-v0.1; invocation as bottleneck.
See docs/BIBLIOGRAPHY.md for the complete documentation index and external references.
MIT — see LICENSE.