keel
A Python library and CLI around model calls and side effects, so a retry never sends twice, spend stops at a cap, irreversible actions wait for a human, and any run replays exactly.
- Year
- 2026
- Kind
- Systems · Python
- Status
- Shipped

Putting a model call in a cron job is easy. The hard part is around it: the retry that must not send a second email, the timeout that leaves you unsure whether the action landed, the provider outage at night. keel is that part. Nothing reaches the outside world except through one boundary, which writes a ledger row before each call and a trace event after it.
From that one rule come idempotency keys, budget charged before spending, an approval gate for irreversible actions, and exact replay from the trace. Each guarantee has a named test that goes red if it breaks. 289 tests run offline with no API key. The recorded model answers in the demos were written by a deterministic rule, not a model, so they say nothing about model quality.
The runtime was attacked on purpose, one working payload per finding. Before the fixes, a sink that landed and then raised was resent, two runners sent twice, and a retried step re-worded its message and sent it twice. Some limits remain: a budget cap can be crossed by one call, and it runs on one machine with SQLite.
