Saltar al contenido principal

budget

Since v2.28.0 (daemon-attached); top-level v2.69.0 · Top-level declaration

Grammar

# Top-level (v2.69.0) — governs every flow that calls the named tools:
budget <Name> {
rate: <n> per <second|minute|hour> on Tool(<ToolName>)
}
# Daemon-attached (v2.28.0) — governs that daemon's ticks:
daemon <Name> { budget { rate: <n> per <minute> on Tool(<ToolName>) } }

budget is a linear-effect rate ceiling: it bounds how often the named tools may be invoked, per declared window.

What the runtime actually does (v2.69.0)

The ceiling binds on the canonical use Tool(...) dispatch path — the same seam every entry point (sync, SSE, daemon) runs through. A call over quota is refused, not queued: spend ceilings fail closed.

This was v2.69.0's live bug: before it, budget was discussed in the README seventeen times, badged zero, tracked in no table — and the runtime never read it on the canonical path. The v2.69.0 gate widening exists because of this primitive.

Proof

axon-rs/tests/budget_governs_the_canonical_path.rs (9/9) — the ceiling really binds, on the path production takes.

See also

  • axon://primitives/tool — what the quota names.
  • axon://primitives/daemon — the attached form's host.
  • axon://primitives/window — the temporal (when), vs budget's how-much.