Kremis – Graph-based memory for AI agents with no hidden state (Rust)
Deterministic graph memory that traces every result back to ingested data—no hallucination by design.
A minimal graph engine for grounded AI — records, associates, and retrieves, but never invents. Written in Rust.
Deterministic graph memory vs. embeddings is clever, but fragmentation of AI memory ecosystems is already painful.
AI researchers, agent builders, and LLM application engineers concerned with transparency, auditability, and hallucination prevention.
LangChain memory modules · Pinecone · Weaviate
I was tired of "black-box" memory where you can't trace why an agent "remembers" or "hallucinates" something. Kremis is an attempt to fix this by using a deterministic graph engine instead of probabilistic embeddings for core state.
Key features:
- Zero Hidden State: Every query result is a concrete path in a graph. You can audit exactly why the AI reached a conclusion. - Strict Determinism: Same input leads to the same graph state. No randomness or floating-point drift in the core logic. - ACID Reliable: Built on redb for crash-safe persistent storage.
How to use it: It ships as a Rust library, a CLI/HTTP API, and an MCP Server. You can plug it directly into Claude Desktop or Cursor to give your AI assistants a verifiable memory.
Development was heavily AI-assisted, and I'm sharing it today to get technical feedback from the Rust and AI community on the architecture.
I'd value your thoughts on: 1. Does a deterministic graph feel like a viable path for long-term agent memory? 2. How can I improve the query ergonomics for complex traversals?
Thanks for any feedback!
Deterministic graph memory that traces every result back to ingested data—no hallucination by design.
Unifies siloed agent memory via MCP, but Mem0 and Zep already exist.
MESI coherence for agent memory is clever, but LangGraph and AutoGen already own this space.
Classifies AI query results as fact, inference, or unknown without using embeddings.
Five queries vector stores can't answer: why(), tensions(), blocked(), whatIf(), alternatives().
Snapshots active Wasm memory to migrate agents edge-side, cutting context latency.