CurbiCurbi

Curbi / Promises

Six rules the gate runs.
Each one with its proof.

A promise is live only while the tests that prove it pass on main. Everything else ships with its label.

PromiseStatusProofLimits
Every mutation is checked against an exact grant (agent, tenant, operation, resource, amount limit) before it is signed for execution.Limited
Merged reference module on main; not integrated with production provider/ledger
revenue-engine/attest/test/attest.test.mjs (PR #124)Prevention applies only where the target system runs the verifier.
An unknown or negative cost blocks signing, and an estimate over the remaining budget is refused.Limited
Merged reference module on main; not integrated with production provider/ledger
revenue-engine/attest/test/attest.test.mjs (PR #124)Budget bounds run cost; savings are the customer's math.
A reply that says "I booked" or "you're refunded" fails unless the record you supply shows that operation DONE.Live
public Check API, /check/ playground, local MCP server
revenue-engine/claimcheck-web-v14/v15/check-api.test.cjs
revenue-engine/claimcheck-web-v14/v15/receipts.test.cjs
Records are supplied by the caller and unverified unless they are Curbi-signed receipts. Curbi does not query providers.
Curbi publishes receipt verification keys and their validity windows. Production signing is off. Unsigned caller records remain labeled caller_supplied_unverified.Live
Receipt verification keys: /.well-known/curbi-receipt-keys.json
revenue-engine/claimcheck-web-v14/v15/receipts.test.cjsProof covers operation and subject (and amount for completion receipts), not facts or authorization.
The control-plane ledger design is append-only: database triggers reject updates and deletes.Limited
control-plane prototype (caio/control-plane, PR #88 lineage, latest reviewed PR #103); not in any deployed service
caio/control-plane/migrations/0001_control_plane.sql (PR #103)Describes the schema and its tests, not a third-party audit; the reference attestation ledger is in-memory.
The checker is deterministic and uses no model inference: the same input always gives the same findings.Live
Check API, playground, MCP server (same checker bytes)
revenue-engine/claimcheck-web-v14/v15/determinism.test.cjsRule-based: it catches what the policy describes. A pass is not authorization to act.

Source of truth: the claims registry, checked by scripts/check-claims.mjs before copy ships.

Security & disclosure.

Report a vulnerability to hello@curbi.io with “SECURITY” in the subject. Please don’t open a public issue. Every fix ships with an attack test that fails without it.

Public endpoints are bounded (size, items, rate) and stateless. Private signing keys never live in source, issues or chat. Production signing remains off. Published public keys and their validity windows are available in the current key set; publication alone does not enable signing.

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.