MemPalace-Deployment und Praxis: Ein KI-Erinnerungssystem, das nie etwas vergisst

April 8, 2026

TIP

MemPalace wurde gemeinsam von der Schauspielerin Milla Jovovich (aus „Das fĂŒnfte Element“) und ihrem technischen Partner Ben Sigman entwickelt und ist ein rein lokales KI-Erinnerungssystem. Bei LongMemEval erreichte es im „raw verbatim“-Modus 96,6% R@5 – ohne die ganze Zeit ĂŒber irgend eine externe API aufzurufen und völlig kostenlos. GitHub: milla-jovovich/mempalace

Mittlere Schwierigkeit · ca. 20 Minuten · Du erhĂ€ltst die komplette Deployment-Pipeline fĂŒr MemPalace, verstehst die Palace-Schichten und lernst, mit MCP ein beliebiges KI-System an das Speichersystem anzuschließen.


Zielgruppe

1–3 Jahre Berufserfahrung als Entwickler:in, bereits mit KI-Programmier-Tools wie Claude Code / Cursor / Copilot gearbeitet. Ziel: Damit KI in langfristigen Projekten den Kontext behĂ€lt und nicht jedes Mal bei Null beginnt.


Kernerfordernisse und Umgebung

  • Python: 3.9+
  • KernabhĂ€ngigkeiten: chromadb>=0.5.0,<0.7、pyyaml>=6.0
  • Installation: pip install mempalace oder uv pip install mempalace
  • Betriebssystem: macOS / Linux / Windows (WSL ebenfalls)
  • Speicher: ChromaDB (Vektor-DB) + SQLite (Wissensgraph), alles lokal, ohne Netzwerk

WARNING

MemPalace ist als reiner Local-Run konzipiert: Die Daten verlassen deine Maschine nicht. Bei der Erstinstallation wird zwar ChromaDB ĂŒber pip installiert, aber ChromaDB selbst benötigt keine Internetverbindung – es reicht, wenn du es korrekt importieren kannst.


VollstÀndige Projektstruktur

mempalace/
├── mempalace/                 # Kern-Python-Paket
│   ├── cli.py                 # CLI-Entrypoint, routet zu mine/search/init usw.
│   ├── mcp_server.py          # MCP-Server, stellt 19 Tools bereit
│   ├── knowledge_graph.py     # Zeitlicher Wissensgraph (SQLite)
│   ├── palace_graph.py        # Palace-Navigationsgraph (BFS-Traversal, Tunnel-Findung)
│   ├── convo_miner.py         # Dialog-Mining, schneidet nach Q+A
│   ├── miner.py               # Projektdateien minen, schneidet nach AbsĂ€tzen
│   ├── searcher.py            # Semantische Suche (ChromaDB)
│   ├── normalize.py           # 5 Dialogformate vereinheitlichen
│   ├── dialect.py             # AAAK-Kompressionsdialekt
│   ├── layers.py              # Vier-Schichten-Speicher-Stack (L0–L3)
│   ├── onboarding.py          # Initialisierung per Onboarding
│   ├── entity_detector.py     # Automatisches Erkennen von Personennamen/Projektbezeichnungen
│   └── split_mega_files.py    # Aufteilen und ZusammenfĂŒhren großer Sitzungsdateien
├── hooks/                     # Claude-Code-Auto-Save-Hooks
│   ├── mempal_save_hook.sh     # Speichert alle 15 Nachrichten automatisch
│   └── mempal_precompact_hook.sh  # Notfall-Save vor Kontextkompression
├── benchmarks/               # Reproduzierbare Benchmarks (LongMemEval / LoCoMo)
│   ├── longmemeval_bench.py
│   ├── locomo_bench.py
│   └── BENCHMARKS.md
└── examples/
    ├── basic_mining.py
    └── mcp_setup.md

Schritt-fĂŒr-Schritt

Step 1: Installation

pip install mempalace

Die niedrigste unterstĂŒtzte Python-Version ist 3.9. Nach der Installation prĂŒfen, ob es funktioniert:

mempalace --version

TIP

Wenn du uv nutzt: uv pip install mempalace – das Ergebnis ist identisch.


Step 2: Erinnerungspalast initialisieren

mempalace init ~/projects/myapp

Der init-Befehl startet den gefĂŒhrten Prozess und fragt nacheinander:

  • die Personen, mit denen du hĂ€ufig zusammenarbeitest (in die Wing-Konfiguration aufnehmen)
  • das Projekt, an dem du arbeitest (pro Projekt ein wing)
  • deine KI-IdentitĂ€t (wird in die L0-Schicht geschrieben)

Nach Abschluss des Onboardings werden zwei Konfigurationsdateien erzeugt:

  • ~/.mempalace/config.json — globale Konfiguration (u. a. palace-Pfad)
  • ~/.mempalace/wing_config.json — Mapping zwischen wing und Keywords

Die erzeugte wing_config.json sieht ungefÀhr so aus:

{
  "default_wing": "wing_general",
  "wings": {
    "wing_kai": { "type": "person", "keywords": ["kai", "kai's"] },
    "wing_driftwood": { "type": "project", "keywords": ["driftwood", "analytics", "saas"] }
  }
}

Wenn die KI startet, lĂ€dt sie nur L0 + L1 (ca. 170 Tokens) und weiß so, wie deine Welt aussieht.


Step 3: Daten auswerten (Mining)

MemPalace unterstĂŒtzt zwei Mining-Modi – je nachdem, welche Datenquelle du verwendest.

Modus A: Projektdateien minen (Code, Dokumente, Notizen)

mempalace mine ~/projects/myapp

Der miner scannt das Verzeichnis rekursiv, schneidet nach AbsĂ€tzen und speichert in ChromaDB; die Drawer speichern den ursprĂŒnglichen Inhalt.

Modus B: Dialog-Exports minen (Claude/ChatGPT/Slack)

# Grundverwendung
mempalace mine ~/chats/ --mode convos

# Konkretes wing angeben, damit spÀter nach Projekt gefiltert werden kann
mempalace mine ~/chats/ --mode convos --wing myapp

# Automatische Klassifizierung aktivieren (extrahiert Entscheidungen, PrÀferenzen,
# Meilensteine, Problemfragen sowie emotionale Kontextinformationen)
mempalace mine ~/chats/ --mode convos --extract general

Der convo_miner schneidet die Dialoge nach Q+A, erkennt automatisch die room-Zugehörigkeit (ĂŒber 70+ Modi-Matching in room_detector_local.py, ohne API).

TIP

Wenn deine ChatGPT/Claude-Exportdatei aus mehreren Sitzungen besteht und diese zusammengefĂŒhrt sind, teile sie zuerst mit mempalace split ~/chats/ in Einzelsitzungsdateien auf – dann ist das Ergebnis deutlich besser.


Step 4: Semantische Suche zur Verifikation

Wenn das Mining abgeschlossen ist, probiere eine Suche:

mempalace search "why did we switch to GraphQL"

Mit wing-Filter, damit nur in einem bestimmten Projekt gesucht wird:

mempalace search "auth decision" --wing driftwood

Noch genauer: ZusÀtzlich room filtern:

mempalace search "auth decision" --wing driftwood --room auth-migration

ZurĂŒckgegeben wird der Originaltext aus dem Drawer (verbatim) – ohne Zusammenfassung und ohne Informationsverlust. ChromaDB macht die Vektor-Retrievals, Closet liefert die strukturierten Zusammenfassungen.


Step 5: MCP-Service anbinden

MCP (Model Context Protocol) macht MemPalace als Tool fĂŒr jede beliebige KI verfĂŒgbar. Einmal konfigurieren, fĂŒr immer aktiv.

Einbindung in Claude Code:

claude mcp add mempalace -- python -m mempalace.mcp_server

Nach der Konfiguration erhĂ€lt Claude Code automatisch 19 Tools; die KI ruft mempalace_search bei Bedarf selbst auf – du musst nicht manuell suchen.

Einbindung in Gemini CLI:

# siehe examples/gemini_cli_setup.md
claude mcp add mempalace -- python -m mempalace.mcp_server

Die Gemini CLI bietet fĂŒr MCP eine umfassendere UnterstĂŒtzung; außerdem können save hooks automatisch konfiguriert werden.

Liste der MCP-Tools (19):

ToolZweck
mempalace_statusGibt das Gesamtbild des Palastes + AAAK-Protokoll zurĂŒck
mempalace_list_wingsListet alle wings und die Anzahl der Memory-EintrÀge auf
mempalace_list_roomsListet alle rooms innerhalb eines wings auf
mempalace_searchSemantische Suche, unterstĂŒtzt wing/room-Filter
mempalace_kg_queryFragt die zeitlichen Beziehungen von EntitÀten ab
mempalace_kg_addFĂŒgt Fakt-Dreiergruppen hinzu
mempalace_kg_invalidateMacht eine bestimmte Tatsache ungĂŒltig
mempalace_kg_timelineErzeugt die zeitliche ErzÀhlung einer EntitÀt
mempalace_diary_writeAgent schreibt AAAK-Tagebuch
mempalace_diary_readAgent liest AAAK-Tagebuch
mempalace_traverseBFS-Traversal innerhalb eines wings
mempalace_find_tunnelsFindet Tunnel ĂŒber wings hinweg
......

Die KI lernt automatisch AAAK-Syntax und den Memory-Mechanismus aus der Antwort von mempalace_status – ohne dass du manuell Prompts konfigurieren musst.


Step 6: Claude-Code-Auto-Save-Hooks konfigurieren

Mit den Hooks von Claude Code kann MemPalace bei jedem Dialog automatisch Erinnerungen speichern.

Passe ~/.claude/settings.json an (globale Konfiguration von Claude Code) und ergÀnze:

{
  "hooks": {
    "Stop": [
      {
        "matcher": "",
        "hooks": [
          {
            "type": "command",
            "command": "/path/to/mempalace/hooks/mempal_save_hook.sh"
          }
        ]
      }
    ],
    "PreCompact": [
      {
        "matcher": "",
        "hooks": [
          {
            "type": "command",
            "command": "/path/to/mempalace/hooks/mempal_precompact_hook.sh"
          }
        ]
      }
    ]
  }
}

Der Unterschied zwischen den beiden Hooks:

  • Stop: Triggert alle 15 Nachrichten. Strukturierte Speicherung – Thema, Entscheidungen, Zitate sowie Code-Änderungen werden vollstĂ€ndig erfasst. ZusĂ€tzlich wird die L1-Schicht neu aufgebaut (wichtige Faktenschicht).
  • PreCompact: Triggert vor der Kontextkompression. Speichert als Notfall noch nicht gesicherte Erinnerungen, um zu vermeiden, dass beim Komprimieren wichtiger Kontext verloren geht.

WARNING

In Hook-Skripten sind Shell-Aufrufpfade enthalten. Es wird empfohlen, sie nach dem Clone an einer festen Stelle abzulegen und den Pfad in der Konfiguration einzutragen. Die Skripte fĂŒhren keine gefĂ€hrlichen Aktionen aus – sie schreiben nur strukturierte Erinnerungen in ChromaDB.


Step 7: Palace-Struktur verstehen

MemPalace basiert auf der Kernabstraktion „Erinnerungspalast“: inspiriert von den GedĂ€chtnistechniken antiker griechischer Redner, bei denen man mit rĂ€umlicher Struktur statt flacher Suchindizes arbeitet.

  WING: kai (person)

    ┌──────────┐  ──hall──  ┌──────────┐
    │ auth-mig │            │ security  │
    └────┬─────┘            └──────────┘
         │
         ▌
    ┌──────────┐      ┌──────────┐
    │  Closet  │ ───▶ │  Drawer  │  ← Originaltext liegt hier
    └──────────┘      └──────────┘

  TUNNEL (Verbindung ĂŒber wings hinweg):
  kai/auth-mig  ←→  driftwood/auth-mig  ←→  priya/auth-mig

Wings: Eine Person oder ein Projekt – die Hauptkategorie der Erinnerungen. Unter jedem wing können mehrere rooms existieren.

Rooms: Konkrete Themen innerhalb eines wings, z. B. auth-migration, ci-pipeline, pricing. Wenn ein room mit demselben Namen in verschiedenen wings vorkommt, wird automatisch ein Tunnel erzeugt.

Halls: GĂ€nge fĂŒr Erinnerungstypen. Jeder wing hat dieselbe Menge an halls:

  • hall_facts — festgeschlossene Entscheidungen
  • hall_events — Sitzungen, Meilensteine, Debugging-Prozesse
  • hall_discoveries — DurchbrĂŒche und neue Erkenntnisse
  • hall_preferences — Gewohnheiten, PrĂ€ferenzen, Meinungen
  • hall_advice — Empfehlungen und Lösungen

Closets: Die Zusammenfassungsebene, die auf die Position des Originalinhalts (Drawer) zeigt. Der Originaltext geht nicht verloren – es kommt nur eine zusĂ€tzliche, navigierbare Strukturschicht hinzu.

Drawers: Ort der Aufbewahrung fĂŒr den Originaltext. Der „raw verbatim“-Modus von MemPalace liest genau von hier den Originaltext aus und fĂŒhrt dann die Vektor-Suche aus – damit werden 96,6% R@5 erreicht.


Step 8: Zeitliche Beziehungen im Knowledge Graph nutzen

ChromaDB speichert Vektoren aus dem Originaltext; der Knowledge Graph (SQLite) speichert strukturierte Fakten-Dreiergruppen. Beide ergÀnzen sich.

from mempalace.knowledge_graph import KnowledgeGraph

kg = KnowledgeGraph()

# Fakten hinzufĂŒgen, inklusive GĂŒltigkeitszeitraum
kg.add_triple("Kai", "works_on", "Orion", valid_from="2025-06-01")
kg.add_triple("Maya", "assigned_to", "auth-migration", valid_from="2026-01-15")
kg.add_triple("Maya", "completed", "auth-migration", valid_from="2026-02-01")

# Abfragen, woran Kai gerade arbeitet
print(kg.query_entity("Kai"))
# → [Kai → works_on → Orion (current)]

# Abfragen, wie es am 2026-01-20 war (damals war Maya auth-migration noch nicht fertig)
print(kg.query_entity("Maya", as_of="2026-01-20"))
# → [Maya → assigned_to → auth-migration]

# Zeitleiste des Projekts Orion ansehen
print(kg.timeline("Orion"))
# → Faktenkette in zeitlicher Reihenfolge

# Maya wechselt das Projekt: alte Fakten werden ungĂŒltig
kg.invalidate("Maya", "assigned_to", "auth-migration", ended="2026-02-01")
# Jetzt gibt query_entity("Maya") kein auth-migration mehr zurĂŒck

Das GĂŒltigkeitsfenster (valid_from / ended) ist die KernfĂ€higkeit von MemPalace: Bei der Abfrage des historischen Zustands erfĂ€hrst du „was damals passiert ist“, nicht „was jetzt passiert“.


Step 9: Vier-Schichten-Architektur des Memory-Stacks

MemPalace teilt die Retrieval-Strategie in vier Schichten auf. Je weiter oben, desto leichtergewichtig; je weiter unten, desto prÀziser:

EbeneInhaltGrĂ¶ĂŸeWann laden
L0KI-IdentitÀt (wer du bist)~50 TokensBei jeder Sitzung
L1Wichtige Fakten (Team, Projekt, PrÀferenzen)~120 TokensBei jeder Sitzung
L2Room-Recall (aktuelle, jĂŒngere Sitzungen des Projekts)Nach BedarfWenn das Thema L2 berĂŒhrt
L3Deep Search (vollstÀndige semantische Retrieval)Nach BedarfBei expliziten Fragen

Wenn die KI startet, lÀdt sie zuerst L0 + L1 (mempalace wake-up); bereits nach 170 Tokens steht ein vollstÀndiger Hintergrundkontext. L2 wird nur geladen, wenn ein Thema einen bestimmten room triggert; L3 wird nur aktiviert, wenn explizit nach einer vollstÀndigen ChromaDB-Suche gefragt wird.

Das erklĂ€rt auch, warum MemPalace so geringe Kosten hat – $10/Jahr Suchkosten gegenĂŒber $507/Jahr fĂŒr die reine Zusammenfassungs-Variante.


HĂ€ufige Probleme beheben

Q1: Suchergebnisse sind leer, aber der Inhalt ist sicher vorhanden

In drei Schritten prĂŒfen:

# 1. PrĂŒfen, ob wing- und room-Namen korrekt sind
mempalace list-wings
mempalace list-rooms --wing myapp

# 2. Bereich erweitern, nicht wing/room einschrĂ€nken und Vollsuche durchfĂŒhren
mempalace search "SchlĂŒsselwort"   # ohne --wing

# 3. PrĂŒfen, ob wirklich etwas in ChromaDB geschrieben wurde
mempalace status            # Drawer-Gesamtzahl ansehen: ist sie 0?

Wenn mempalace status 0 Drawer anzeigt, ist das Mining vermutlich nicht erfolgreich gewesen – möglicherweise ist das Dialogformat nicht unterstĂŒtzt (derzeit unterstĂŒtzt: Claude Code JSONL, Claude.ai JSON, ChatGPT JSON, Slack JSON, plain text).

Q2: ChromaDB-Collection-Namenskonflikt

Der Standard-Collection-Name ist mempalace_drawers. Wenn du mehrfach init machst oder in verschiedenen Verzeichnissen arbeitest, kann es zu Konflikten kommen. In ~/.mempalace/config.json den Pfad explizit setzen:

{
  "palace_path": "/custom/path/to/palace",
  "collection_name": "mempalace_drawers"
}

Dann mit --palace <path> ĂŒberschreiben:

mempalace search "query" --palace /custom/path/to/palace

Q3: MCP-Verbindung schlÀgt fehl

Zuerst manuell verifizieren, dass der MCP-Service korrekt startet:

python -m mempalace.mcp_server
# Normalerweise wird nichts ausgegeben; im Vordergrund laufen lassen
# Ctrl+C zum Beenden

Wenn es einen ModuleNotFoundError gibt, prĂŒfe die korrekte Installation:

pip show mempalace

Wenn du ein Virtual Environment nutzt, stelle sicher, dass in der MCP-Konfiguration von Claude Code der korrekte Python-Pfad eingetragen ist:

which python   # holt den richtigen Python-Pfad
claude mcp add mempalace -- /path/to/python -m mempalace.mcp_server

Q4: MCP-Toolaufrufe funktionieren, aber das Ergebnis entspricht nicht den Erwartungen

Wenn die KI mempalace_search aufruft, mĂŒssen die wing/room-Parameter exakt ĂŒbereinstimmen, um die Palace-Struktur maximal auszunutzen. FĂŒhre die KI im Prompt an, den korrekten Filter zu verwenden:

When searching for project-specific memories, always pass --wing <project>.
When searching for a specific topic, always pass --room <room-name>.

Q5: Hook-Skripte werden nicht getriggert

# PrĂŒfen, ob die hooks in Claude Code aktiviert sind
claude doctor

Stelle sicher, dass in settings.json die Hook-Pfade absolute Pfade sind. Relative Pfade können scheitern, weil Claude Code in unterschiedlichen Working Directories lÀuft.

Q6: Zeitliche Knowledge-Graph-Abfragen liefern unerwartete Ergebnisse

Zeitliche Abfragen hÀngen vom as_of-Parameterformat ab; das Datum muss YYYY-MM-DD sein:

# Falsches Format
kg.query_entity("Kai", as_of="2026/03/01")

# Korrektes Format
kg.query_entity("Kai", as_of="2026-03-01")

Außerdem prĂŒfen, ob du beim HinzufĂŒgen von Fakten mit add_triple valid_from ebenfalls im korrekten Format verwendet hast – sonst greift das zeitliche Fenster nicht.


WeiterfĂŒhrende LektĂŒre / Fortgeschrittene Richtungen

AAAK experimentelle Kompressionsschicht

AAAK ist eine verlustbehaftete AbkĂŒrzungs-Dialektvariante: Durch regulĂ€re Ersetzungen werden wiederkehrende EntitĂ€ten zu Code komprimiert. In großem Maßstab (wenn dasselbe Projekt in hundertfacher Wiederholung erwĂ€hnt wird) kann es Token-Kosten sparen – aktuell ist der „raw verbatim“-Modus (96,6%) jedoch immer noch besser als der AAAK-Modus (84,2%). Geeignet sind Szenarien mit langen Laufzeiten, mehreren Sitzungen und vielen wiederholten EntitĂ€ten.

Specialist Agents: Memory-Isolation durch Multi-Agent

Jeder Agent hat ein eigenes wing und ein AAAK-Tagebuch:

~/.mempalace/agents/
  ├── reviewer.json    # CodequalitĂ€t, Muster, Bugs
  ├── architect.json   # Architekturentscheidungen, Trade-offs
  └── ops.json         # Deployment, AusfĂ€lle, Infrastruktur

Die KI entdeckt Agents zur Laufzeit dynamisch aus dem palace heraus – du musst keine Konfiguration in CLAUDE.md schreiben.

Benchmarks reproduzieren

Im benchmarks/-Verzeichnis liegen vollstĂ€ndige Reproduktionsskripte fĂŒr LongMemEval und LoCoMo:

python benchmarks/longmemeval_bench.py

Über den gesamten Lauf sind keine API-Keys nötig. Auf einem M2 Ultra lĂ€uft das Ganze in unter 5 Minuten durch und testet 500 Aufgaben – damit wird die Reproduzierbarkeit von 96,6% validiert.

Quervergleich mit anderen Systemen

SystemLongMemEval R@5API-AnforderungKosten
MemPalace (raw)96,6%KeineKostenlos
MemPalace (hybrid + rerank)100%OptionalKostenlos
Mem0~85%Muss$19–249/Monat
Zep~85%Muss$25/Monat+
Mastra94,87%Muss (GPT)API-Kosten

MemPalace ist die einzige Lösung, die ohne jegliche API-Aufrufe die höchste Punktzahl erreicht.

Updated April 8, 2026