Blog
What we measured, what it showed, and what we changed because of it. Numbers first, then the reason.
- · GNL team
Exactly-once or at-most-once? What an AI agent's tool call can actually promise
Exactly-once tool calls sound like the goal. For an effect outside your process, no library can promise them alone. Here is what can be promised, and when it adds up to exactly-once.
Read the post → - · GNL team
We put a million agent runs in one Postgres and timed every screen
Sending a message stayed at about 20 ms. Erasing one person took 90 seconds, the approval inbox 23 seconds, and a new thread read every run in the store. Each slow case had the same cause, and the same kind of fix.
Read the post → - · GNL team
The release gate that stopped 0.14.0: a Postgres bug that hid for two months
One test failed about one run in ten, only on en_US.utf8, only in a process that had just started. It was a real bug, it had been there since August, and the release refused to ship until it was fixed.
Read the post → - · GNL team
What happens when your agent crashes?
The work starts over, an email goes out twice, an approval is lost. Each has a fix, and one moment has no fix at all — only an honest answer.
Read the post → - · GNL team
One line, a third off: we measured the prompt cache on a paid key
With one cache key, three of four runs read 1,792 of 1,964 opening tokens from cache. The whole experiment cost less than half a cent. It also showed us a case our own diagnosis had missed.
Read the post → - · GNL team
A full agent framework, durable from the core
Durability is not a plug-in we added later. It is the core every other GNL package stands on. Use all of it, or only the core — and go from one to the other a step at a time.
Read the post →