Kremis
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
A deterministic knowledge graph MCP server. Local, single binary, no LLM in the loop.
A minimal, graph-based cognitive substrate in Rust.
Records, associates, retrieves — but never invents.
> **Alpha** — Functional and tested. Breaking changes may still occur before v1.0.
---
Why Kremis
| Problem | How Kremis addresses it |
|---------|------------------------|
| **Hallucination** | Every result traces back to a real ingested signal. Missing data returns explicit "not found" — never fabricated |
| **Opacity** | Fully inspectable graph state. No hidden layers, no black box |
| **Lack of grounding** | Zero pre-loaded knowledge. All structure emerges from real signals, not assumptions |
| **Non-determinism** | Same input, same output. No randomness, no floating-point arithmetic in core |
| **Data loss** | ACID transactions via redb embedded database. Crash-safe by design |
> Design Philosophy — why these constraints exist.
---
Features
- **Deterministic graph engine** — Pure Rust, no async in core, no floating-point. Same input always produces the same output
- **CLI + HTTP API + MCP bridge** — Three interfaces to the same engine: terminal, REST, and AI assistants
- **BLAKE3 hashing** — Cryptographic hash of the full graph state for integrity verification at any point
- **Canonical export (KREX)** — Deterministic binary snapshot for provenance, audit trails, and reproducibility
- **Proof-carrying knowledge (KVQC)** — POST /certify returns a reproducible Verifiable Query Certificate: a portable proof of a fact, or proof of its absence
- **Zero baked-in knowledge** — Kremis starts empty. Every node comes from a real signal
- **ACID persistence** — Default redb backend with crash-safe transactions
---
Use Cases
AI agent memory via MCP
Give Claude, Cursor, or any MCP-compatible assistant a verifiable memory layer. Kremis stores facts as graph nodes — the agent queries them, and every answer traces back to a real data point. No embeddings, no probabilistic retrieval.
LLM fact-checking
Ingest your data, let an LLM generate claims, then check each claim against the graph. Every response carries a grounding field — fact, inference, or unknown — and POST /certify turns an unknown into a certificate bound to a BLAKE3 hash of the graph state. No confidence scores, no ambiguity.
Provenance and audit trail
Export the full graph as a deterministic binary snapshot, compute its BLAKE3 hash, and verify integrity at any point. Every node links to the signal that created it. Useful for compliance workflows where you need to prove what data was present and when.
---
Fabrication Benchmark
A closed registry of 9 fictional services and 5 one-way dependencies. 24 questions of
the form *"does A depend on B, directly or transitively?"* — 8 have an answer, 16 do
not, and no answer exists for them anywhere. Nothing in the prompt asks any model to
invent: the facts are supplied and UNKNOWN is offered.
qwen3.5:4b, temperature 0, 5 runs:
| System | False assertion | Answer accuracy |
|--------|----------------:|----------------:|
| **Kremis** (/query + /certify) | **0.00 %** | 100 % |
| LLM holding the entire registry | 0.00 % | 100 % |
| LLM + naive retrieval | 0.00 % | 75 % |
| LLM, no context | 0.00 % | 0 % |
On a world this small a *capable* model does not fabricate: given every fact it needs,
qwen3.5:4b matches the substrate here, answering all 8 answerable questions and
abstaining on the 16 that have no answer. But capability is not free with the year on the
model card — phi4-mini, a current local 4B from another lab, holds the identical
registry and still asserts marn-ledger -> quoll-auth, the reverse of a stated
dependency, on every run (12.50 %). Which model you run already decides it. Kremis stores