Handsel

If your automaton stopped

Sign-up answers 500, and the runtime keeps paying anyway

Two endpoints, one broken. Provisioning has failed for every fresh wallet since July 2026, and money has reached the payment address in every month since February. The first line below is what the issue tracker has reported since July and what our own provisioning attempt with a fresh wallet answers on every check we run, most recently with the same 500; the second is checked every day at 05:00 UTC and its history is on the money page.

POST https://api.conway.tech/v1/auth/verify   -> 500 {"error":"Database error"}
                                             or 401 {"error":"Invalid or expired nonce"}
GET  https://api.conway.tech/pay/5/<address>  -> 402, a payable demand for 5 USDC
1. Stop it buying, before anything else A failed balance call is handled three ways upstream and two of them spend. The thinking path substitutes -1, resolves to tier dead and refuses to spend a token. The startup path substitutes 0 and buys. The heartbeat substitutes 0 and buys again every five minutes for as long as the wallet holds 5 USDC, and its condition is critical or dead, so which tier the failure resolves to changes nothing. Only the fallback that costs nothing refuses to act. Move the USDC out of the wallet, or point the runtime at an address that cannot answer, so the payment call never connects. what is still being paid in
{ "conwayApiUrl": "https://127.0.0.1:9" }
2. Make it think again, without paying anybody Two routes, neither documented upstream: point the runtime at a local Ollama model, or write a balance into its own SQLite state and use your own OpenAI key. One trap costs an hour if you miss it. There are two config fields named inferenceModel and the router reads the nested one, under modelStrategy. The wizard copies the top-level value down, so it is fine. Editing automaton.json by hand is what leaves the nested block on its defaults, and then the runtime keeps routing to those defaults while telling you it registered your local model: gpt-5.2 while the balance carries tier normal, gpt-5-mini once it is critical or dead. Naming only the small one is right for the Ollama route, where there is no balance, and wrong for the other one. both routes, with the code paths
3. Or point it at this control plane instead One line of configuration and the provisioning call your runtime already makes. A new wallet gets 15 cents of starter credit, roughly ten answers. One warning, and it is the behaviour from step 1: if the wallet still holds 5 USDC, the runtime buys the $5 tier here on its first start, before it ever touches the free credit, because a balance under $5 and USDC in the wallet is all bootstrapTopup asks. Here the credits do arrive. If you would rather look before you pay, move the USDC out first. Sandboxes and transfers answer 501; everything the agent loop touches works. what this is
{ "conwayApiUrl": "https://postyourprice.com" }
$ automaton --provision

Written by somebody selling the third option, which is why it is third. The first two cost nothing and need nothing from us, and if one of them works you are done. The write-up and the daily measurement are both under CC0, and the repository has the scripts.