OmniMem
offiziellEin selbst gehosteter MCP-Server, der KI-Agenten persistenten Speicher über Sitzungen, Projekte und Maschinen hinweg bietet.
Was kann man mit OmniMem MCP machen?
Geben Sie Ihrem KI-Agenten ein persistentes, selbst gehostetes Gedächtnis über Sitzungen, Projekte und Maschinen hinweg — bitten Sie ihn, „das Grab zu prüfen, bevor er eine Bibliothek vorschlägt, die bereits gescheitert ist.“
- Sitzungs-Briefing — Fragen Sie nach einem
briefing, um Projektkontext, Erfahrungsstatistiken, veraltete Erinnerungen, neue Artikel und Fähigkeitsvorschläge in einem einzigen Aufruf zu erhalten. - Vergangene Sackgassen vermeiden — Lassen Sie den Agenten das Grab prüfen, bevor er eine Bibliothek oder ein Muster vorschlägt, das zuvor gescheitert ist.
- Frühere Entscheidungen abrufen — Verwenden Sie
recall, um Entscheidungen, Fixes und Muster aus früheren Sitzungen über Projekte hinweg sichtbar zu machen. - Mühsam gewonnene Erfahrung festhalten — Protokollieren Sie einen Fix mit
record_experience, damit Lektionen, die echte Anstrengung erfordert haben, beim nächsten Mal leichter auftauchen. - Erinnerungen deduplizieren — Führen Sie
find_duplicatesaus, um nahezu identische gespeicherte Erinnerungen zu kennzeichnen und in großen Mengen zu bereinigen. - Ihr Gedächtnis sichern — Exportieren Sie alles mit
dump_to_filein eine JSON-Datei, die Ihnen gehört.
Dokumentation
Self-hosted semantischer Speicher für KI-Agenten. Permanente Sitzungen, Erfahrungsbewertung und ein Friedhof für Sackgassen, unterstützt durch Wissen aus den RSS-Feeds, die Sie lesen, gespeichert in einer Valkey-Vektorsuche und dann als MCP-Server bereitgestellt. https://omnimem.org
<OmniMem>omnimem.org
Die Entwicklung findet auf Codeberg statt — bitte Issues und PRs dort einreichen.
Hör auf, dieselbe Sitzung zweimal zu erleben.
Jede Claude-Code-Sitzung beginnt bei null. Keine Erinnerung an dein Projekt. Keine Erinnerung daran, was letzte Woche fehlgeschlagen ist. Keine Erinnerung daran, dass du letzten Dienstag drei Stunden damit verbracht hast herauszufinden, warum onnxruntime auf Alpine explodiert, bevor du etwas gefunden hast, das tatsächlich funktioniert.
Also erklärst du das Projekt erneut. Claude schlägt wieder dieselbe kaputte Bibliothek vor. Derselbe Alarm. Dasselbe Lied. Du bist Bill Murray und Claude ist Punxsutawney.
OmniMem behebt das. Es ist ein selbst gehosteter MCP-Server, der deinem KI-Agenten persistenten Speicher über Sitzungen, Projekte und Maschinen hinweg bietet. Er läuft auf deiner eigenen Hardware und ist für immer kostenlos.
claude> use onnxruntime for the embeddings
⚠ WARNING: previously abandoned approach
onnxruntime — SIGILL crash on Alpine musl libc (effort: 4/5)
→ switched to sentence-transformers instead
Diese Warnung kam aus dem Gedächtnis, nicht aus Glück. Der Fehler, für den du bereits bezahlt hast, darf dich nicht zweimal kosten.
Schnell loslegen
Tipp
Ein Befehl bringt den gesamten Stack mit den vorgefertigten Docker-Hub-Images zum Laufen:
curl -fsSL https://codeberg.org/ric_harvey/omnimem/raw/branch/main/install.sh | bashDann richte deinen Agenten darauf aus — der Schnellstart führt dich durch den Rest, oder springe direkt zum ausführlicheren Abschnitt „Schnellstart“ weiter unten.
Woran es sich erinnert
Fünf Arten von Erinnerungen, die beim Abruf alle gemeinsam durchsucht werden:
- Episodisch — die Entscheidungen, die du getroffen hast, die Fehler, die du behoben hast, die Muster, die du entdeckt hast. Die Dinge, die echte Anstrengung erforderten, um sie zu lernen, und die nicht jeden Morgen neu gelernt werden sollten.
- Projektkontext — dein Stack, deine Ziele und dein aktueller Stand. Der Agent kommt in jede Sitzung bereits eingewiesen, statt kalt zu starten.
- Wissen — RSS-Feeds, die du konfigurierst, werden nach Zeitplan abgerufen, von Claude Haiku zusammengefasst, eingebettet und gespeichert. Wenn letzte Woche ein relevanter Artikel erschienen ist, taucht er als Ausgangspunkt auf, den es wert ist, gelesen zu werden.
- Präferenzen — verbindliche Regeln, wie du arbeiten möchtest („aktualisiere nach jedem Feature immer die README“), die automatisch aus deinen Gesprächen extrahiert und immer dann angezeigt werden, wenn sie zutreffen.
- Fähigkeiten — SKILL.md-Dokumente, die aus deiner gesammelten Erfahrung in einem Bereich kompiliert werden, damit der Agent von der ersten Eingabeaufforderung an auf deine Weise arbeitet. Abgeleitet aus den anderen Namensräumen, niemals manuell bearbeitet, und jede Änderung durchläuft deine Überprüfung. Siehe den Skill-Compiler. Das beste Abrufergebnis könnte eine Entscheidung von vor sechs Monaten aus einem anderen Projekt sein, eine Lösung von gestern oder ein Artikel, der Dienstagnacht veröffentlicht wurde. Es spielt keine Rolle, woher es kommt, solange es nützlich ist.
Was es anders macht
Nicht nur ein Key-Value-Store mit einem MCP-Wrapper. OmniMem modelliert, wie Gedächtnis tatsächlich funktioniert: Dinge verblassen mit der Zeit, sie widersprechen sich manchmal, und das schwer Erarbeitete verdient sich seinen Platz.
- The Graveyard — jede Sackgasse wird protokolliert mit dem, was du versucht hast, warum es fehlschlug und wie viel Zeit du verbrannt hast. Der Agent prüft es, bevor er eine Bibliothek oder ein Muster vorschlägt.
- Experience scoring — etwas, das vier Versuche und einen seltsamen Plattform-Workaround erforderte, ist Gold. Je schwieriger es war, desto eher taucht es beim nächsten Mal auf.
- Memory lifecycle —
ACTIVE → DEPRIORITISED → ARCHIVED → DELETED. „Vergiss X“ bedeutet normalerweise, es nicht mehr zu erwähnen, nicht es aus der Existenz zu löschen. Herabgestufte Erinnerungen können sich zurückverdienen. - Contradiction detection — wenn eine neue Erinnerung mit etwas Gespeichertem nicht übereinstimmt, erkennt OmniMem das. Schnelle Heuristik bei jedem Schreiben, optionale tiefere Analyse über Claude Haiku.
- Semantic deduplication — nahezu identische Erinnerungen werden beim Schreiben markiert und in großen Mengen mit
find_duplicates()bereinigt. - One-call briefing — ein einziger
briefing()liefert Projektkontext, Erfahrungsstatistiken, veraltete Erinnerungen, neue Artikel, Widerspruchswarnungen und Fähigkeitsvorschläge. Kein dreistufiges Aufwärmen. - The skill compiler — destilliert verstärkte Lektionen und Sackgassen in ladbare Fähigkeiten, hinter einem Vorschlag-und-Annahme-Gate, damit schlechte Lektionen nicht stillschweigend zur Richtlinie werden.
- Auto-maintenance — Duplikate archiviert, Widersprüche markiert, abgelaufenes Wissen bereinigt, alles im Hintergrund.
- Web UI — durchsuchen, suchen und verwalten Sie alles über ein htmx-Dashboard, mit Telemetrie und einem Prometheus-
/metrics-Endpunkt.
Die Ranking-Formel hinter jedem Abruf:
score = similarity x surface_score x recency x experience_weight
Vier Faktoren entscheiden, was zurückkommt. Semantische Ähnlichkeit allein reicht nicht — Lebenszyklusstatus, Alter und wie schwer die Lektion zu lernen war, spielen alle eine Rolle.
Funktioniert mit jedem MCP-Agenten
Eine Speicherschicht für alle: claude.ai, Claude Code, Claude Desktop, Cursor, GitHub Copilot, GitLab Duo, AWS Kiro, OpenCode, OpenAI Codex CLI und Open Design.
Architektur
Vier Container. Nichts verlässt deinen Rechner. Lokale Einbettungen über sentence-transformers, Speicherung in Valkey mit Vektorsuche, und beide Fronttüren teilen sich dieselbe Speicher-Engine.
flowchart TB
agent["AI agent<br/>Claude Code · claude.ai · Cursor · Copilot · ..."]
browser["Browser"]
agent -- "MCP · Streamable HTTP / SSE · :8765" --> mcp
browser -- "HTTP · :8080" --> webui
subgraph stack["Docker Compose stack"]
mcp["MCP server<br/>Python · FastMCP<br/><i>remember · recall · briefing<br/>compile_skill · record_experience</i>"]
webui["Web UI<br/>Starlette · htmx · Jinja2<br/><i>dashboard · search · skills<br/>projects · backups · /metrics</i>"]
rss["RSS worker<br/>feedparser · APScheduler<br/>Claude Haiku summaries"]
valkey[("Valkey + valkey-search<br/>HNSW vector indexes<br/><i>idx:episodic · idx:project · idx:knowledge<br/>idx:preference · idx:skill</i>")]
mcp <--> valkey
webui <--> valkey
rss --> valkey
end
Das vollständige Bild — die Abrufpipeline, das Speichermodell und die Designentscheidungen — findest du in docs/architecture.md.
Selbst gehostet, Open Source, deins
Kein SaaS. Keine Herstellerbindung. Kein Kontext, der auf fremde Server geschickt wird.
- Valkey ist ein Open-Source-Redis-Fork. Alle deine Daten bleiben in einem benannten Docker-Volume auf deinem eigenen Rechner.
- Multi-Arch-Docker-Images für amd64 und arm64. Es läuft auf einem Raspberry Pi, AWS Graviton oder Apple Silicon genauso gut wie auf x86.
- sentence-transformers führt Einbettungen lokal ohne API-Aufrufe aus.
- MIT-lizenziert bedeutet: Forken, erweitern, überall ausführen.
- Ein Backup-Befehl ruft
dump_to_file()auf und exportiert alles in eine JSON-Datei, die dir gehört.
Lege den MCP-Port über deinen Reverse-Proxy frei, und jeder Rechner, von dem du arbeitest, teilt denselben Speicher. Eine Bereitstellung, überall — siehe docs/remote-access.md.
Schnellstart
Der Installer prüft, ob Docker installiert ist, generiert sichere Passwörter, schreibt eine sinnvolle .env und startet alles aus den vorgefertigten Docker-Hub-Images:
curl -fsSL https://codeberg.org/ric_harvey/omnimem/raw/branch/main/install.sh | bash
Oder aus dem Quellcode bauen:
git clone https://codeberg.org/ric_harvey/omnimem.git && cd omnimem
cp .env.example .env
# Set VALKEY_PASSWORD and ANTHROPIC_API_KEY in .env
docker compose up -d
Dann verbinde deinen Agenten damit — Claude Code (~/.claude.json):
{
"mcpServers": {
"omnimem": {
"type": "sse",
"url": "http://localhost:8765/sse"
}
}
}
Der Server liefert seine Nutzungsanleitung jedem verbindenden Agenten automatisch über das MCP-instructions-Feld — keine Konfigurationsdatei nötig. Das Web-Dashboard ist unter http://localhost:8080.
Die vollständige Anleitung, einschließlich Authentifizierungstokens, Berechtigungseinstellungen und der anderen Agenten, findest du in docs/quick-start.md.
Dokumentation
| Schnellstart | Installer, Bauen aus dem Quellcode, Verbinden deines Agenten |
| Funktionen im Detail | Lebenszyklus, Graveyard, Erfahrungsbewertung, Deduplizierung, Widersprüche, Briefing |
| Der Skill-Compiler | Erfahrung in ladbare Fähigkeiten kompilieren |
| MCP-Tool-Referenz | Alle 30+ Tools |
| Konfigurationsreferenz | Jede Umgebungsvariable |
| RSS & Wissen | Passive Wissensaufnahme und -förderung |
| Mehrere Rechner | Reverse-Proxy, OAuth 2.1 für claude.ai, Fehlerbehebung |
| Web-UI | Das Verwaltungs-Dashboard und Prometheus-Metriken |
| Architektur | Container, Abrufpipeline, Designentscheidungen |
| Speichertypspezifikationen | Das Speichermodell, Feld für Feld |
| Verbindungsanleitungen | Einrichtung pro Agent |
| Bereitstellungsanleitungen | macOS · Raspberry Pi · AWS · GCP · Linux + Tailscale Funnel |
Speicher-Spezifikationen pro Namespace, falls du genau wissen willst, was in Valkey geschrieben wird und von wem: Übersicht · episodisch · Projekt · Wissen · Präferenz · Fähigkeit
Mitwirken
Issues und PRs sind willkommen. Die Entwicklung findet auf Codeberg statt — Issues und PRs bitte dort. OmniMem ist darauf ausgelegt, erweitert zu werden, und die Bewertungspipeline ist so strukturiert, dass neue Multiplikatoren hinzugefügt werden können, ohne den Kern anzufassen. Neue MCP-Tools, zusätzliche Namespace-Typen und alternative Einbettungs-Backends sind alles sinnvolle Richtungen.
Lizenz
MIT. Frei zu nutzen, zu forken und zu modifizieren. Keine Enterprise-Stufe, keine gehostete Version, keine Bedingungen.
Erstellt von Ric Harvey @ SquareCows Ltd, einer KI- und Automatisierungsberatung für Menschen, die ihre Werkzeuge lieber selbst besitzen.