CurbiCurbi

Curbi / How it works

Can it do that?
What does the record show?

Curbi connects three developer tasks: check the action’s boundary, verify its signed record, and reproduce the integration failure when something breaks.

Try an action scenario →Verify a bundleReplay a repair

1 · Before the action: permission.

The reference gate checks one proposed mutation against an explicit grant, scope and limits. Action Lab makes those decisions visible in a browser simulation. The public Check API checks replies; it does not issue a production grant or execute an action.

2 · After the action: inspect the evidence.

The reference issuer can bind a receipt to an attested mutation and a digest of its completion evidence. A proof bundle adds the signed checkpoint and inclusion proofs needed for local verification. The reference examples use fixture evidence and test keys, with production signing off.

The offline verifier checks the bundle against keys you choose. Valid signatures establish what those keys signed. They do not independently establish that an external provider completed the action. Read exactly what verification establishes.

3 · When it breaks: reproduce and keep the test.

Repair Lab replays an included failure and its bounded repair. MCP Chaos exercises documented faults against the included refund fixture. Download the example, inspect its assertions, and adapt the test to your own safe environment. A fixture passing is evidence about that fixture, not a guarantee about an arbitrary integration.

Use the same surfaces from your tools.

Start with the HTTP API or the hosted read-only MCP endpoint. Framework adapters are local source distributions. The agent manifest identifies current endpoints and availability; release evidence records their boundaries.

Current public tooling does not move money, update customer records, sign production receipts or provide a hosted production permission gate.

How it works · one action, end to end

Permission, confirmation, receipt, log, verification.

One discount, run through the real gate and log at build time. Fields below are copied from the actual signed tokens.

StepSigned objectKey fields (actual)
1 · Permissionattestationmutation: billing.invoice.apply_discount
resource: inv_500
agent_id: agent:voice
amount_minor: 5000
currency: usd
payload_hash: sha256:73d1ubUALiRf9QzV2D4lBaNkYg9l_ydYZZNWlPJqCyI
2 · Confirmation → receiptreceiptop: billing.invoice.apply_discount
status: DONE
amount_minor: 5000
att: sha256:1Yv4fvhHWTjWryBYcyHSM96vZYmuIy5sgKEo7NE_hhk
evidence: sha256:j2YE9m6Cz9AmaG2AUZdjthl2w_YSxXlHPNGfyePhFJg
3 · Append-only logcheckpointlog: curbi:log:site-example
size: 1
root: e-5q3i_-Rou4Desv78RSCW-6QlA5WxwWRbqozAtw0qc
alg: rfc9162-sha256
4 · Verify anywherebundleverified offline leaf 0, billing.invoice.apply_discount by agent:voice

Runs wherever your agents run

Any model engineThe checker and verifier use no model. Hosted APIs, open models, NVIDIA NIM microservices, vLLM or Ollama all sit upstream; the AI SDK and LangChain connectors wrap whatever model object you pass.Tested with the frameworks’ own fake models; individual engines not yet tested by us.
Private networks and offlineVerification needs a public key and the bundle, nothing else, so it works inside a VPN, an isolated private cluster or on a device. /verify/ proves it: its security policy blocks data connections; scripts and styles load from Curbi.The check and MCP endpoints are hosted; the verifier is not.
Open standardsEd25519 (RFC 8032) signatures, JWK key sets (RFC 7517), RFC 9162 Merkle logs, MCP Streamable HTTP, OpenAPI 3.1 and JSON Schema. No proprietary wire format to adopt.Read the proof spec

Run a check. Keep the result.

Check a reply Connect your agent →

A pass means no configured rule fired. It grants no execution authority or provider-completion proof.