OmniMem

offiziell

Ein selbst gehosteter MCP-Server, der KI-Agenten persistenten Speicher über Sitzungen, Projekte und Maschinen hinweg bietet.

Was kann man mit OmniMem MCP machen?

  • Persistenter Sitzungsspeicher — Bitten Sie Ihren Assistenten, wichtige Entscheidungen und Lektionen zu remember, damit diese über Sitzungen, Projekte und Maschinen hinweg erhalten bleiben.
  • Abruf mit Kontext — Verwenden Sie recall, um relevante Erinnerungen abzurufen, die nach Ähnlichkeit, Aktualität und Erfahrungsgewicht sortiert sind, bevor Sie neue Arbeiten beginnen.
  • Ein-Aufruf-Sitzungsbriefing — Erhalten Sie ein vollständiges briefing() mit Projektkontext, veralteten Erinnerungen, neuen Artikeln und Fähigkeitsvorschlägen in einem einzigen Aufruf.
  • Vergangene Sackgassen vermeiden — Prüfen Sie den Friedhof, bevor Sie Bibliotheken oder Muster vorschlagen, um Ansätze zu überspringen, die bereits fehlgeschlagen sind.
  • Wiederverwendbare Fähigkeiten kompilieren — Verwandeln Sie verstärkte Lektionen in ladbare compile_skill-Vorschläge, die vor der Aktivierung Ihre Überprüfung durchlaufen.
  • Speicher exportieren — Sichern Sie alles mit dump_to_file() in eine JSON-Datei, die vollständig in Ihrem Besitz liegt.

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 du liest, gespeichert in einer Valkey-Vektorsuche und als MCP-Server bereitgestellt. https://omnimem.org

Ric Harvey 50fde316a1

Sicherheits-Scans / Bandit SAST (push) Erfolgreich in 7s

Details

Sicherheits-Scans / Abhängigkeitsprüfung (mcp_server) (push) Erfolgreich in 40s

Details

Sicherheits-Scans / Abhängigkeitsprüfung (rss_worker) (push) Erfolgreich in 30s

Details

Sicherheits-Scans / Abhängigkeitsprüfung (web_ui) (push) Erfolgreich in 27s

Details

Sicherheits-Scans / Testabdeckung (push) Erfolgreich in 1m23s

Details

Sicherheits-Scans / Geheimnis-Scan (push) Erfolgreich in 4s

Details

Docker-Build & Push / Build mcp_server (push) Erfolgreich in 17m57s

Details

Docker-Build & Push / Build web_ui (push) Erfolgreich in 15m23s

Details

Docker-Build & Push / Build rss_worker (push) Erfolgreich in 2m5s

Details

Pull-Request 'v6.4.x' zusammenführen (#25) von v6.4.x nach main
2026-07-20 01:19:39 +02:00
.forgejo/workflowsci: buildx-Builds auf den Multiarch-Builder festlegen2026-07-17 15:08:57 +00:00
claude_configfeat: automatischer Skill-Scan schlägt Entwürfe aus projektübergreifenden Lektionsmustern vor2026-07-19 17:50:40 +00:00
docsfeat: automatischer Skill-Scan schlägt Entwürfe aus projektübergreifenden Lektionsmustern vor2026-07-19 17:50:40 +00:00
guideschore: ausführbares Bit von den Bereitstellungsanleitungen entfernen2026-07-17 12:09:52 +00:00
mcp_serverci: bandit B104 bei absichtlichen 0.0.0.0-Test-Fixtures stummschalten2026-07-19 23:15:31 +00:00
rss_workerci: bandit B104 bei absichtlichen 0.0.0.0-Test-Fixtures stummschalten2026-07-19 23:15:31 +00:00
scriptsdocs: Skill-Demo-Playbook – moo-reports-Skill laden, kompilieren, demonstrieren und aufräumen2026-07-17 12:28:05 +00:00
web_uici: bandit B104 bei absichtlichen 0.0.0.0-Test-Fixtures stummschalten2026-07-19 23:15:31 +00:00
.env.exampledocs: 6.3.1 – Web-UI-Anmeldung in Changelog, README, Env-Beispiel, Entwickleranleitung2026-07-13 20:44:03 +00:00
.gitignoretest: Abdeckung auf 99,9 % im gesamten Codebestand erhöhen2026-07-19 19:20:36 +00:00
.gitleaks.tomlci: gitleaks-Fehlalarm bei Valkey-Teststring auf die Zulassungsliste setzen2026-07-19 23:17:59 +00:00
CHANGELOG.mdchore: Version auf 6.4.2 anheben, Changelog für die 6.4.2-Linie2026-07-19 22:38:45 +00:00
CLAUDE.mdchore: Version auf 6.4.2 anheben, Changelog für die 6.4.2-Linie2026-07-19 22:38:45 +00:00
docker-compose.hub.ymlfeat: Einzeiler-Installationsskript mit Docker-Hub-Images2026-07-16 21:29:09 +00:00
docker-compose.test.ymlfeat: umfassende Testsuite mit Docker-basiertem Testläufer hinzufügen2026-03-12 16:44:58 +00:00
docker-compose.ymlfix(oauth+security): Refresh-Token-Gnadenfrist + Serveroberfläche härten2026-07-08 10:40:53 +01:00
install.shfix: verhindern, dass install.sh unter curl|bash hängen bleibt, und schrittweisen Fortschritt hinzufügen [skip ci]2026-07-17 16:13:10 +00:00
LICENSEchore: MIT-Lizenz hinzufügen2026-03-10 19:42:51 +00:00
OMNIMEM_BUILD_PROMPT.mdfeat: anfängliches Projektgerüst2026-03-09 22:13:35 +00:00
README.mddocs: die Codeberg-Entwicklungshinweise im Beitragsabschnitt wiederholen2026-07-17 12:10:22 +00:00
TODO.mddocs: TODO.md mit zukünftigen Feature-Ideen hinzufügen2026-03-17 17:46:16 +00:00

omnimem.org

Security Scans Docker Build Coverage

Die Entwicklung findet auf Codeberg statt – bitte Issues und PRs dort melden.

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 dauerhaftes Gedächtnis über Sitzungen, Projekte und Maschinen hinweg gibt. 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 | bash

Dann richte deinen Agenten darauf aus – der Schnellstart führt durch den Rest, oder springe zum ausführlicheren Schnellstart-Abschnitt unten.


Woran es sich erinnert

Fünf Arten von Gedächtnis, die beim Abruf alle zusammen durchsucht werden:

  • Episodisch – die Entscheidungen, die du getroffen hast, die Fehler, die du behoben hast, die Muster, die du entdeckt hast. Die Dinge, deren Erlernen echte Anstrengung gekostet hat und die nicht jeden Morgen neu gelernt werden sollten.
  • Projektkontext – dein Stack, deine Ziele und der aktuelle Stand. Der Agent kommt bei jeder Sitzung bereits eingewiesen an, statt kalt zu starten.
  • Wissen – RSS-Feeds, die du konfigurierst, planmäßig abgerufen, von Claude Haiku zusammengefasst, eingebettet und gespeichert. Wenn letzte Woche ein relevanter Artikel erschienen ist, taucht er als Ausgangspunkt auf, den es zu lesen lohnt.
  • Präferenzen – vorschreibende Regeln, wie du arbeiten möchtest („aktualisiere immer die README, nachdem ein Feature fertig ist“), automatisch aus deinen Gesprächen extrahiert und immer dann angezeigt, wenn sie zutreffen.
  • Fähigkeiten – SKILL.md-Dokumente, die aus deiner gesammelten Erfahrung in einem Bereich kompiliert werden, damit der Agent von der ersten Eingabe an auf deine Weise arbeitet. Abgeleitet aus den anderen Namensräumen, niemals manuell bearbeitet, und jede Änderung geht durch 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 eingetroffen ist. 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 hart 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 leichter taucht es beim nächsten Mal auf.
  • Memory lifecycleACTIVE → 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 ihren Weg zurück verdienen.
  • Contradiction detection — wenn eine neue Erinnerung mit etwas Gespeichertem nicht übereinstimmt, erkennt OmniMem es. Schnelle Heuristik bei jedem Schreiben, optionale tiefere Analyse über Claude Haiku.
  • Semantic deduplication — nahezu identische Erinnerungen werden beim Schreiben markiert und mit find_duplicates() in großen Mengen bereinigt.
  • One-call briefing — ein einzelner 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 Vorschlagen-und-Annehmen-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 Gedächtnisschicht 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 Embeddings über sentence-transformers, Speicherung in Valkey mit Vektorsuche, und beide Fronttüren teilen sich dieselbe Gedächtnis-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 Abruf-Pipeline, das Speichermodell und die Designentscheidungen — finden Sie in docs/architecture.md.


Selbst gehostet, Open Source, deins

Kein SaaS. Keine Anbieterbindung. Kein Kontext, der an 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 Embeddings lokal aus, ohne API-Aufrufe.
  • MIT-lizenziert bedeutet: Forken, erweitern, überall ausführen, wo du willst.
  • Ein Backup-Befehl ruft dump_to_file() auf und exportiert alles in eine JSON-Datei, die dir gehört.

Setze den MCP-Port über deinen Reverse-Proxy frei, und jeder Rechner, von dem du arbeitest, teilt sich dasselbe Gedächtnis. Eine Bereitstellung, überall — siehe docs/remote-access.md.


Schnellstart

Das Installationsprogramm 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 richte deinen Agenten darauf aus — Claude Code (~/.claude.json):

{
  "mcpServers": {
    "omnimem": {
      "type": "sse",
      "url": "http://localhost:8765/sse"
    }
  }
}

Der Server liefert seinen Nutzungsleitfaden automatisch an jeden verbindenden Agenten über das MCP instructions Feld — keine Konfigurationsdatei erforderlich. Das Web-Dashboard befindet sich unter http://localhost:8080.

Die vollständige Anleitung, einschließlich Authentifizierungstokens, Berechtigungseinstellungen und der anderen Agenten, finden Sie in docs/quick-start.md.


Dokumentation

Quick startInstallationsprogramm, Bauen aus dem Quellcode, Verbinden deines Agenten
Features in depthLebenszyklus, Friedhof, Erfahrungsbewertung, Deduplizierung, Widersprüche, Briefing
The skill compilerErfahrung in ladbare Fähigkeiten kompilieren
MCP tool referenceAlle 30+ Werkzeuge
Configuration referenceJede Umgebungsvariable
RSS & knowledgePassive Wissensaufnahme und -förderung
Multiple machinesReverse-Proxy, OAuth 2.1 für claude.ai, Fehlerbehebung
Web UIDas Verwaltungs-Dashboard und Prometheus-Metriken
ArchitectureContainer, Abruf-Pipeline, Designentscheidungen
Memory type specsDas Speichermodell, Feld für Feld
Connection guidesEinrichtung pro Agent
BereitstellungsanleitungenmacOS · Raspberry Pi · AWS · GCP · Linux + Tailscale Funnel

Spezifikationen für die Speicherung pro Namespace, wenn du genau wissen willst, was in Valkey geschrieben wird und von wem: overview · episodic · project · knowledge · preference · skill


Mitwirken

Issues und PRs sind willkommen. Die Entwicklung findet auf Codeberg statt — bitte Issues und PRs dort. OmniMem ist so konzipiert, dass es erweitert werden kann, und die Bewertungs-Pipeline ist so strukturiert, dass neue Multiplikatoren hinzugefügt werden können, ohne den Kern zu berühren. Neue MCP-Werkzeuge, zusätzliche Namespace-Typen und alternative Embedding-Backends sind alles sinnvolle Richtungen.


Lizenz

MIT. Frei zu verwenden, 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.