Skip to main content
Glama

Dauerhafter Speicher für KI-Agenten — temporaler Wissensgraph, hybride Suche, SQLite oder PostgreSQL.

crates.io Docker MCP Registry License

java-ai-memory.dev · Quellcode · JamJet-Dokumentation · Discord


Engram ist eine dauerhafte Speicherschicht für KI-Agenten. Es extrahiert Fakten aus Konversationen, speichert sie in einem temporalen Wissensgraphen und ruft sie mittels hybrider semantischer + Stichwort-Suche ab — unterstützt durch eine einzelne SQLite-Datei oder eine PostgreSQL-Datenbank.

Dieses Repository hostet den Glama-Registry-Eintrag. Der Quellcode befindet sich im Haupt-JamJet-Repository.

Schnellstart — 30 Sekunden

# Docker — uses local Ollama by default
docker run --rm -i \
  -v engram-data:/data \
  ghcr.io/jamjet-labs/engram-server:0.5.0

Oder über crates.io installieren:

cargo install jamjet-engram-server
engram serve

Claude Desktop-Konfiguration

Hinzufügen zu ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "engram": {
      "command": "docker",
      "args": [
        "run", "--rm", "-i",
        "-v", "engram-data:/data",
        "ghcr.io/jamjet-labs/engram-server:0.5.0"
      ]
    }
  }
}

Nach dem Neustart stehen dem Modell 11 MCP-Tools zur Verfügung.

MCP-Tools (11)

Speicher-Tools (7)

Tool

Beschreibung

memory_add

Extrahiert und speichert Fakten aus Konversationsnachrichten mittels LLM-gestützter Faktenextraktion. Nebeneffekte: Ruft das konfigurierte LLM auf, um Fakten zu parsen, und schreibt sie dann in den Wissensgraphen. Gibt die IDs der extrahierten Fakten zurück. Erfordert ein messages-Array und eine user_id.

memory_recall

Semantische Suche über gespeicherte Fakten mittels Vektorähnlichkeit. Nur lesend, keine Nebeneffekte. Gibt nach Relevanz sortierte Fakten zurück, die der Abfrage entsprechen, gefiltert nach user_id und optionaler org_id. Verwenden Sie dies, um relevanten Kontext vor der Generierung einer Antwort abzurufen.

memory_context

Stellt einen kontextbezogenen Block mit Token-Budget für LLM-Prompts zusammen, mit stufenbasierter Faktenauswahl. Nur lesend. Gibt einen formatierten String der relevantesten Fakten zurück, begrenzt auf das angegebene Token-Budget. Verwenden Sie dies anstelle von memory_recall, wenn Sie einen sofort einsatzbereiten Prompt-Schnipsel benötigen.

memory_search

Stichwortsuche über Fakten mittels Volltextsuche (SQLite FTS5 / Postgres). Nur lesend, keine Nebeneffekte. Gibt Fakten zurück, die exakten Stichworten entsprechen. Verwenden Sie dies, wenn Sie präzise Begriffübereinstimmungen anstelle der semantischen Ähnlichkeit von memory_recall benötigen.

memory_forget

Löscht einen Fakt per ID (Soft-Delete) mit optionalem Grund. Nebeneffekt: Markiert den Fakt im Wissensgraphen als gelöscht (entfernt ihn nicht physisch). Über dieses Tool nicht umkehrbar. Verwenden Sie dies, wenn ein Benutzer die Entfernung spezifischer Informationen anfordert.

memory_stats

Ruft aggregierte Statistiken ab: Gesamtzahl der Fakten, gültige (nicht gelöschte) Fakten, Entitätenanzahl und Beziehungsanzahl. Nur lesend, keine Nebeneffekte. Verwenden Sie dies, um Größe und Zustand des Speichers zu verstehen.

memory_consolidate

Führt einen Wartungszyklus über den Wissensgraphen aus — veraltete Fakten abbauen, Fakten mit hoher Konfidenz fördern, Duplikate entfernen und Cluster zusammenfassen. Nebeneffekte: Ändert Fakt-Scores und kann Fakten zusammenführen oder archivieren. Führen Sie dies regelmäßig aus, um den Speicher aktuell zu halten.

Nachrichten-Speicher-Tools (4)

Tool

Beschreibung

messages_save

Speichert Chat-Nachrichten für eine Konversation per ID. Nebeneffekte: Schreibt Nachrichten in den Speicher und löst optional die Faktenextraktion aus (gesteuert durch --extract-on-save). Verwenden Sie dies, um den vollständigen Konversationsverlauf zusammen mit extrahierten Fakten dauerhaft zu speichern.

messages_get

Ruft alle Nachrichten für eine Konversation per ID ab. Nur lesend, keine Nebeneffekte. Gibt das geordnete Nachrichten-Array zurück. Verwenden Sie dies, um eine vergangene Konversation erneut abzuspielen oder zu überprüfen.

messages_list

Listet alle Konversations-IDs im Nachrichtenspeicher auf. Nur lesend, keine Nebeneffekte. Gibt ein Array von Konversations-ID-Strings zurück. Verwenden Sie dies, um herauszufinden, welche Konversationen gespeichert sind, bevor Sie sie mit messages_get abrufen.

messages_delete

Löscht alle Nachrichten für eine Konversation per ID. Nebeneffekt: Entfernt die Nachrichten der Konversation dauerhaft aus dem Speicher. Nicht umkehrbar. Beeinflusst keine extrahierten Fakten — verwenden Sie dafür memory_forget.

Alle Speicher-Tools sind nach (org_id, user_id, session_id) gegliedert — org ist die gröbste, session die feinste Ebene.

LLM-Provider

Provider-agnostisch. Ein Binary, setzen Sie ENGRAM_LLM_PROVIDER=... und legen Sie los:

Provider

Env-Wert

Hinweise

Ollama

ollama (Standard)

Lokal, kostenlos, keine API-Keys

OpenAI-kompatibel

openai-compatible

OpenAI, Azure, Groq, Together, Mistral, DeepSeek, vLLM, LM Studio, ...

Anthropic

anthropic

Claude via Messages API

Google

google

Gemini via generateContent

Shell-Befehl

command

Pipe an ein beliebiges externes Skript

Mock

mock

Deterministisch, nur für Tests

# Example: use Groq instead of Ollama
docker run --rm -i \
  -e ENGRAM_LLM_PROVIDER=openai-compatible \
  -e ENGRAM_OPENAI_BASE_URL=https://api.groq.com/openai/v1 \
  -e OPENAI_API_KEY=gsk_... \
  -v engram-data:/data \
  ghcr.io/jamjet-labs/engram-server:0.5.0

Warum Engram?

Problem

Engrams Antwort

Jede Agenten-Speicherbibliothek ist Python-first

Rust-Kern mit nativen Python-, Java- und MCP-Clients

Benötigt Postgres + Qdrant + Neo4j zum Ausprobieren

Einzelne SQLite-Datei (keine Infrastruktur) oder Postgres, wenn Sie es brauchen

Konversationsverlauf ist kein Wissensspeicher

Faktenextraktions-Pipeline — strukturierte Fakten aus Nachrichten

Alte Fakten driften ab und widersprechen sich

Konflikterkennung + Konsolidierung — abbauen, fördern, deduplizieren, zusammenfassen

Speicherabruf ist entweder semantisch ODER Stichwort

Hybride Suche — Vektorsuche + FTS5 in einer Abfrage

MCP-Unterstützung ist ein nachträglicher Einfall

MCP-nativ — 11 Tools, die von einem einzigen Binary bereitgestellt werden

Speicher kann nicht pro Benutzer oder Mandant isoliert werden

Erstklassige Scopes — org / user / session in jede Abfrage integriert

Client-SDKs

Sprache

Paket

Installation

Python

jamjet (enthält EngramClient)

pip install jamjet

Java

dev.jamjet:jamjet-sdk (enthält EngramClient)

Maven Central

Spring Boot

dev.jamjet:engram-spring-boot-starter

Maven Central

Rust

jamjet-engram (direkt einbetten)

cargo add jamjet-engram

Verwandtes

Lizenz

Apache 2.0 — siehe LICENSE.


-
security - not tested
A
license - permissive license
-
quality - not tested

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jamjet-labs/engram-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server