MemothDB
A database that stores memory, and proves what it served.
A bitemporal memory database for AI agents, written in Rust. Every read names who is asking and leaves a sealed record before the answer goes out.
The query language
Permission is part of the question.
Built for sub-millisecond retrieval, and a read cannot be written without naming who is asking and when. Four lines from a real session:
| Statement and reply | What it shows |
|---|---|
GRANT 7 LABEL 42 VALID 1743465600 1775001600{"ok":true,"lsn":1} | Agent 7 may see label 42, and only within that window. |
RECALL FOR 7 AT 1756000000 TAGS 11{"ok":true,"served":["4a7f2c9e…93b41d7c"],"epoch":1,"reverified":false,"decision_lsn":3} | The read comes back with the position of its own receipt, durable before you saw this line. |
RECALL AT 1756000000{"ok":false,"error":"parse error: RECALL FOR <principal> AT <valid_at> — a read cannot be expressed without its principal"} | There is no anonymous read to forget to authorise. The grammar will not form one. |
REPLAY 3{"ok":true,"outcome":"match","served":["4a7f2c9e…93b41d7c"]} | The decision re-derived from the log alone. It agrees with what was served. |
The data model
Typed memory, not rows and not chunks.
The four kinds Memoth serves, stored as themselves rather than flattened into documents.
What happened
Incidents, decisions, the run that failed and why.
What's true
Facts, ownership, configuration; a new value supersedes the old one.
How it's done
Runbooks and sequences, including what an agent learned on the job.
What's in hand
A bounded, decaying set per agent, always a subset of what it may see.
At a glance
The specification.
| Time model | When a memory or a grant was valid, and when the system knew it. Both are queryable. |
| Durability | An acknowledgement means on disk. A failed sync stops the writer rather than retrying. |
| Read semantics | Every read names its principal and seals a decision record before the answer is returned. |
| Retrieval | Tag and label filters, vector search, a per-agent working set. Entitlement is resolved before anything is scored. |
Measured, not promised
A database earns trust by how it's checked.
Points of who could see what and when, cross-checked against a brute-force calculation.
Each disk operation failed in turn, plus power loss and process kills. Acknowledged data survives.
Randomized histories replayed with zero failures.
Get started
Put it under your agents.
We work with a small number of teams whose agents touch data someone will ask about later.