GVNR

Configure

Drop a governor.config.json in the directory you run it from.

{
  "dollars": 20,
  "model": "claude-opus-5",
  "soft": 0.75,
  "loopLimit": 4,
  "softAction": "escalate",
  "burnLimit": 2,
  "fleetBurnLimit": 10,
  "fanoutLimit": 8,
  "retryLimit": 6,
  "port": 4000
}

The spend cap

dollars is the cap per agent per session. model is which model's prices convert that into a token budget. The dashboard shows what it buys before anything runs: how many tokens, and roughly how long an agent can work on it. Change it there at any time. Agents already running pick up the new limit immediately, and one that was stopped for hitting the old limit is released.

Claude, ChatGPT, Gemini and Grok are all supported and the model is detected for you. Every agent reports which model answered, so each is priced at its own rate. $20 means $20 whether that agent is on Opus 5, GPT-5 mini or Gemini 2.5 Pro. Pick a model by hand and your choice sticks.

Under the hood the cap is cost-weighted effective tokens, not raw counts. Cached sessions re-read their whole context every turn, so raw sums explode into the billions while costing very little. Weighting by price instead means one effective token is one input-token of cost at that model's price, and dollars converts with a single multiply.

Rates, which is where the money actually goes

The incidents that cost people money are rate incidents, and nearly every cap that ships elsewhere is a total. Three shapes are watched.

SettingWatchesWhy that default
burnLimitDollars per minute, per agentOrdinary work sits around $0.10 to $0.25 a minute, so $2 leaves normal sessions alone
fleetBurnLimitDollars per minute, whole fleet$10 across every agent at once
fanoutLimitNew agents per minuteA team that starts over an hour is a choice. Eight inside a minute is an orchestrator spawning orchestrators
retryLimitErrors per minuteA rate-limited call fails cheaply. The retry after it does not

Each one asks rather than blocks, and asks once, so an overnight run stops and waits for you instead of dying or nagging.

The rest

Choosing the right model for the job

Running a test suite on your most expensive model is the most common way to overspend without noticing. GVNR reads the task the agent was given and says when the model looks mismatched, in either direction, a top-tier model on mechanical work or a light one on work that needs reasoning. It moves one step at a time along named tiers, and says nothing when the task is ambiguous, because a bad downgrade costs more in wasted work than it saves in tokens.

It does not claim to detect hallucination. Nobody can do that reliably. It catches mechanical waste that is actually detectable and escalates the judgment calls to you.

Powered by Instruxi. Verified against the GVNR source on 15 September 2026. Free and open, runs on your own machine, nothing is sent to Instruxi. Related: GVNR · Stop an agent overspending · Block dangerous commands · Quickstart · Configure · Receipts · How it compares · Live demo · Enforcer. Enforcer, the identity and authorization service, is at enforcer.instruxi.dev.