GVNR

You already understand Enforcer

GVNR is the easy half of an idea. If you have run it and watched it refuse something, you already understand the hard half, because it is the same question asked somewhere else.

One question, two places

GVNR asks it on your machine, about an agent you are running:

May this agent do this, right now?

Enforcer asks it inside your application, about whoever is calling:

May this caller do this, to this thing, right now?

Same shape. Same three outcomes. The actor changes from an agent on your laptop to a user, a tenant, a service or an agent hitting your API, and the thing being protected changes from your token budget and your shell to your customers' data and your money movement.

GVNREnforcer
Where it runsYour machine, localA service your application calls
Who is askingAn AI agent you startedA user, tenant, service or agent
What it protectsSpend, and what the agent may doActions on your own resources
How you askA proxy or a pre-execution hookPOST /authz/check
What comes backallow, deny, escalateallow plus a reason
Who signs the caller inNobody, it is your own machineEnforcer does, it is one service
PriceFree and openCommercial

The check, side by side

GVNR, you set it up once and it decides silently on every call:

export ANTHROPIC_BASE_URL=http://localhost:4000
# over budget or grounded, the agent gets HTTP 429

Enforcer, you ask it at the point the action happens:

curl -sS -X POST "$BASE/authz/check" \
  -H "Authorization: Bearer $TOKEN" \
  -d '{ "policy_id": "<your rule>",
        "action": "issue",
        "resource": { "type": "payment", "id": "pay_123",
                      "tenant_id": "<its tenant>" },
        "contexts": { "amount": 820 } }'

# -> { "success": true, "allow": false, "reason": "over_refund_ceiling" }

The reason is the part worth noticing. A refusal that says why is the difference between an agent that reports "that failed" and one that can tell the user what would make the answer yes.

What is genuinely different, not just marketing

These are not the same product with two price tags, and it is worth being straight about where each is weaker.

GVNR gives you receipts. Enforcer does not.

Every GVNR decision is hash-chained on your machine, and editing one visibly breaks the chain. Enforcer returns the reason and the policy_id that decided, and you log those yourself at your call site. Its /audit-events endpoint is the identity and administration trail, sign-ins, API keys, roles, tenants, and it does not record authorization decisions. If you want an Enforcer decision trail, you build it from what the check hands back.

Enforcer knows who the caller is. GVNR does not need to.

On your own machine there is no question of identity. Inside an application there is nothing but. Enforcer signs the caller in and holds tenants, roles and groups, so the policy is handed an already-resolved caller rather than being passed claims it has to trust. That is the whole reason it is one service rather than two.

GVNR gates actions that cost nothing. Enforcer gates actions on your data.

A spend cap has no opinion on rm -rf, and GVNR does, because the hook sees the action before it runs. Enforcer is not watching your shell. It is answering whether this caller may touch this row.

Neither one previews.

GVNR asks you at the moment it matters. Enforcer has no shadow or dry-run mode either: a policy created inactive is stored and simply not evaluated. In both cases you find out what a rule does by turning it on.

When the second one starts to matter

GVNR is enough while the risk is on your own machine. The question changes when other people start using what you built:

At that point you are asking GVNR's question about your own product, and that is what Enforcer is.

Try the harder one

There is an open sandbox, no sales call. Sign in and get a first allow and deny, or point an agent at it and let it set itself up from the setup page. Neither one requires GVNR, and GVNR does not require Enforcer. They are the same idea at two layers, and plenty of people will only ever need the free one.

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.