๐Ÿ›‚ Tollgate

The governance gate for AI agents that move money. The LLM is an untrusted component โ€” it proposes; deterministic code disposes. Every tool call crosses one enforcement point, or it never happens.
pip install tollgate-gateway && python -m tollgate demo-web โ†’ open http://127.0.0.1:8765 ยท approve the $4,200 transfer in your browser ยท no API key needed

One gate, 16 rings default-deny, fail-closed, measured

unknown toolโ†’rate limitโ†’circuit breakerโ†’integrity fingerprintโ†’read cacheโ†’accountability registryโ†’blacklistโ†’budget reserve (atomic)โ†’field-semantics contractโ†’injection fence + canariesโ†’financial guardrailsโ†’adaptive risk scoreโ†’policy rulesโ†’signed approvalโ†’executionโ†’hash-chained audit

Denial reasons flow back to the model so it can adapt. Anything not explicitly allowed is denied.

Money gets a lifecycle, not a flag

ReserveAtomic budget hold (BEGIN IMMEDIATE) โ€” concurrent agents can never overspend on a stale balance.
ApproveEd25519/HMAC signatures, per-approver keys, four-eyes above thresholds, non-repudiable verification.
Hold24h escrow window. Execution โ‰  settlement.
Recoverfreeze โ†’ clawback โ†’ payee blacklist. Fraud reversed in two operator-signed steps, every one chain-logged.

Proof, not vibes

32/32injection corpus blocked
0/8benign false positives
300fuzz cases ยท 4 invariants hold
189tests ยท CI green on 8 matrix cells
0mandatory dependencies

One invariant is enforced by fuzzing: actual executions โ‰ก audited executions. Policy hot-reloads land in the hash chain themselves โ€” changes to the law are auditable too.

Plug it into any agent

Ships as an MCP server (stdio JSON-RPC 2.0, zero deps). Point Claude Desktop, Cursor or your own agent at it and every tool call is governed โ€” callers write no security code.