Bi-temporal graph storage that runs in your process — no cloud, no server, no data leaves your device.
Your agent says "Alice works at Stripe" — but she left six months ago. The old value was overwritten. There's no history, no correction trail, no way to ask "what did we believe, and when?"
UPDATE overwrites the previous value. The moment you correct a fact, the old one is gone forever.
A created_at column tells you when a row was inserted — not when the fact was true in the world.
Most graph memory tools need a cloud server or external database. Your private knowledge gets sent over the wire.
Kronroe solves all three at the engine level.
four timestamps per fact — not an app-layer patch
from kronroe import AgentMemory
memory = AgentMemory.open("./agent.kronroe")
# Store facts — four timestamps added automatically
memory.assert_fact("alice", "works_at", "Acme")
memory.assert_fact("alice", "lives_in", "London")
# Ask a question — full-text search with ranked results
results = memory.recall("where does Alice work?", limit=5)
for fact in results:
print(fact["subject"], fact["predicate"], fact["value"])
Kronroe doesn't pick a lane. The same bi-temporal core runs inside an AI agent on your laptop and inside an iOS app on a plane.
Give Claude, Cursor, or any MCP client a memory that understands time. Eleven native MCP tools cover the full lifecycle: store facts, recall with ranked scoring, correct history without losing it, and detect contradictions at write time. Three tools go further than any vector store: assemble_context builds token-budgeted LLM context in one call, what_changed surfaces exactly what shifted about an entity since any timestamp, and recall_for_task returns decision-ready facts scoped to a specific task.
A pure Rust binary — no C dependencies, no SQLite, no libgraph — that passes App Store review with no surprises. iOS ships as an XCFramework staticlib via Swift Package. Android covers all four real-device ABI targets in one integration. Assert facts, query current state, search, correct, invalidate. No server to fall back to because there was never one to begin with — offline by design, not as a fallback mode.
One install. Four timestamps on every fact. History that never disappears.
Kronroe powers Kindly Roe — we built the engine because we needed it.