Ask about something never ingested and you get an explicit not-found — and the certify tool will hand you a certificate of that absence, re-derivable offline against the graph's BLAKE3 state hash. Same input, same output: no randomness and no floating-point arithmetic in the core, with ACID persistence underneath.
A deterministic graph engine written in Rust, with an MCP bridge. It starts empty, every node comes from a signal you ingested, and a missing fact returns an explicit not-found rather than a plausible guess.
- `kremis_ingest` — record an entity, attribute and value, or a relationship between two entities
- `kremis_lookup` and `kremis_properties` — a node by id, and all of its properties
- `kremis_traverse` — walk out from a node to a depth (default 2, maximum 100), optionally keeping only the `top_k` highest-weight edges
- `kremis_path` for the strongest path between two nodes, and `kremis_intersect` for the nodes connected to all of several inputs
- `kremis_retract` — decrement an edge's weight, floored at 0
- `kremis_status` for node count, edge count and density; `kremis_hash` for the canonical BLAKE3 hash of the whole graph state
- `kremis_certify` — a Verifiable Query Certificate carrying the verdict, the canonical state hash, and a base64 proof a third party re-derives offline, including proof that something is absent
Rust 1.89+ and Cargo. A release build produces `kremis` — the CLI and HTTP server — and `kremis-mcp`, the MCP server; the Docker image runs the MCP server by default. `KREMIS_URL` points the bridge at the HTTP server, defaulting to `http://localhost:8080`. `KREMIS_API_KEY` enables bearer authentication and `KREMIS_RATE_LIMIT` defaults to 100. Marked alpha: breaking changes are possible before v1.0.
One command — docker run -i --rm kremis
