GVNR
You need Node.js. Check with node --version. If that fails, install it from nodejs.org.
npx --yes enforcer-governor start
The first run downloads it, then the dashboard opens in your browser by itself. Leave that terminal running, it is the guard. Ctrl+C stops it and your agents carry on working normally.
The general case. Anything that talks to an API, on any provider, in any language.
# OpenAI-shaped agents, also Gemini, Grok, Groq, Together, most local runtimes
export OPENAI_BASE_URL=http://localhost:4000/v1
# Anthropic-shaped agents
export ANTHROPIC_BASE_URL=http://localhost:4000
Every request now passes through GVNR. It meters real usage from each response and refuses with HTTP 429 once an agent is over budget or grounded. Tag requests per agent with an x-enforcer-agent: <name> header so they appear separately on the dashboard.
To forward somewhere other than OpenAI, set GOVERNOR_OPENAI_URL:
# Gemini
GOVERNOR_OPENAI_URL=https://generativelanguage.googleapis.com/v1beta/openai/chat/completions \
npx --yes enforcer-governor start
# Grok
GOVERNOR_OPENAI_URL=https://api.x.ai/v1/chat/completions npx --yes enforcer-governor start
# OpenRouter
GOVERNOR_OPENAI_URL=https://openrouter.ai/api/v1/chat/completions npx --yes enforcer-governor start
# a local runtime
GOVERNOR_OPENAI_URL=http://localhost:11434/v1/chat/completions npx --yes enforcer-governor start
Stronger where it exists, because a refused action never executes at all rather than being refused at the API, and it catches actions that cost nothing, like rm -rf or reading a .env, which an API-level guard never sees. Claude Code is wired today.
In a second terminal, in the project you want watched:
npx --yes enforcer-governor install-hook
Then start a new session in that project. Add --global to watch every project. Remove it with npx enforcer-governor uninstall-hook, or the Remove Enforcer button on the dashboard.
The public ChatGPT website is closed and cannot be governed. Anything built on the OpenAI API can.