You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The relay records every call a run makes (app/nullius/standard/relay.py), but nothing stops a run at a budget: a run on a paid key spends until it ends. To run within a fixed budget I put a small proxy between the relay and the provider. Before each call it reserves an upper bound of its cost (prompt characters / 3 as input tokens, max_tokens as output, at list prices). It refuses the call with HTTP 402 when the run's spend plus the calls in flight would pass the cap, and it keeps a ledger of what was spent.
Wanted
A spending cap per run, for anyone running benchmarks on a prepaid or shared key, as an option such as --max-usd 5 or a setting. Once the run's spend, counting the calls in flight, would pass the cap, no further call goes out, and the job says so. A cap per task would be a useful addition, to stop one runaway unit.
Acceptance
A run can be given a spending cap, and no call goes out once the spend plus the calls in flight would pass it.
A capped run's result says the cap stopped it, what was spent, and which units did not run.
Waits on #38 (pull request #39): a cap needs a price for every model a run calls, and prices move out of the code into the user's own list there. The cap itself is not started.
Implemented in #46: nullius standard run --max-usd USD, with both acceptance criteria covered by tests and by hand runs (local and docker). It is stacked on #39, so this issue's Development panel will show it only once it targets main.
Left out and recorded in #45: the cap in the builder and on a host, shards sharing one cap, a cap per unit, and the job page showing the budget.
Activity
aitianshi commentedon Nov 10, 2026
Waits on #38 (pull request #39): a cap needs a price for every model a run calls, and prices move out of the code into the user's own list there. The cap itself is not started.
aitianshi commentedon Nov 10, 2026
Implemented in #46:
nullius standard run --max-usd USD, with both acceptance criteria covered by tests and by hand runs (local and docker). It is stacked on #39, so this issue's Development panel will show it only once it targetsmain.Left out and recorded in #45: the cap in the builder and on a host, shards sharing one cap, a cap per unit, and the job page showing the budget.