Barycenters / Quick Start
Quick Start · Substrate v0

Zero to a decision
you can prove.

One POST, and the Substrate admits or refuses a proposed action against a boundary — and hands back a signed, single-use receipt anyone can verify. No signup for the demo. It never blocks anything itself; it decides, and the decision is a fact you can hold. authority_effect = 0.

propose an action substrate decides signed receipt you verify it
Checking the runtime…
How it works · the vocabulary

Five words, and you have the whole model.

The Substrate is small on purpose. Learn these and every call below reads itself.

Namespace

Your org's slice of admission space, claimed like a domain — one name, one owner. Every boundary and every decision lives inside it, and it scopes who may govern what.

e.g. acme.support · reserve it once, and it is yours

Boundary

A signed grant: one allowed action, with its limits. Permissions, not prohibitions — a consequential action is denied by default, and a boundary is what permits it. Authored in Lumen, bound by a human.

“Support can issue a refund up to $100.”

Shadow mode

The honest first posture. The Substrate adjudicates every action and binds nothing — it returns ACCEPT/REFUSE and a signed receipt, but never blocks. Enforcement is a switch a human flips later, earned by the record of what it would have caught.

authority_effect = 0 · it decides; it does not act

Day-1 Law

The first boundary you charter for your namespace, signed by your hand. It is the moment the shared demo becomes your policy — and authority enters at exactly one point, which is yours.

one boundary · one steward signature

Receipt

The signed, single-use PASETO proof of a decision. Verify it offline with the public key — no trust in us required. It carries the decision, the proposal hash, the policy version, and the time.

the receipt is the product — you can curl the truth

Admit

The one verb. POST /v1/admit a proposed action and the boundary judges it before it runs — over REST, or over the live MCP endpoint that agents already speak.

propose → decide → signed receipt → verify
~60 seconds · live over REST today

Four calls. Run each one against the real runtime.

Everything below is the live service at api.barycenters.ai (it resolves to barycenters-admit.fly.dev today). Copy the curl, or press Run live and watch the actual response. Nothing here binds authority — it adjudicates and signs.

01

Confirm it can adjudicate

GET /readyz returns the runtime's real state — fail-closed, so a healthy response means it can decide, never that it is binding anything.

curl -s https://barycenters-admit.fly.dev/readyz
{
  "ready": true,
  "issuer_kid": "iss-prod-1",
  "receipt_single_use": "durable",
  "binding_posture": { "adjudicates": true, "binds": false, "authority_effect": 0 }
}
02

Ask for a decision

POST a proposed action to /v1/admit. A lawful one comes back ACCEPT with a token — a PASETO v4.public receipt, signed by iss-prod-1, consumable exactly once.

curl -sX POST https://barycenters-admit.fly.dev/v1/admit -H 'content-type: application/json' -d '{"domain":"infrastructure.compute_deploy","environment":"staging","service":"checkout-api","image_digest":"sha256:abababababababababababababababababababababababababababababababab","requested_by":"release-bot"}'
curl -X POST https://barycenters-admit.fly.dev/v1/admit \
  -H "Content-Type: application/json" \
  -d '{
    "domain": "infrastructure.compute_deploy",
    "environment": "staging",
    "service": "checkout-api",
    "image_digest": "sha256:abababababababababababababababababababababababababababababababab",
    "requested_by": "release-bot"
  }'

# =>  "decision": "ACCEPT", "token": "v4.public.eyJhdWQ…"
03

Watch it refuse — for free never billed

Change one field — deploy to development instead — and the boundary says REFUSE with a reason_code and no token. A refusal is the product working; charging for it would give a governance layer a reason to refuse, so it never does.

curl -sX POST https://barycenters-admit.fly.dev/v1/admit -H 'content-type: application/json' -d '{"domain":"infrastructure.compute_deploy","environment":"development","service":"checkout-api","image_digest":"sha256:abababababababababababababababababababababababababababababababab","requested_by":"release-bot"}'
curl -X POST https://barycenters-admit.fly.dev/v1/admit \
  -H "Content-Type: application/json" \
  -d '{
    "domain": "infrastructure.compute_deploy",
    "environment": "development",
    "service": "checkout-api",
    "image_digest": "sha256:abababababababababababababababababababababababababababababababab",
    "requested_by": "release-bot"
  }'

# =>  "decision": "REFUSE", "reason_code": "INVALID_ENVIRONMENT", "token": null
04

Prove the receipt yourself

The token is signed with an Ed25519 key. Fetch the public key at /.well-known/jwks.json and verify the receipt offline, with no trust in us — the whole point of a decision you can hold.

curl -s https://barycenters-admit.fly.dev/.well-known/jwks.json
{
  "keys": [ {
    "kty": "OKP", "crv": "Ed25519",
    "alg": "EdDSA", "kid": "iss-prod-1", "x": "…"
  } ]
}

Verify with any PASETO v4.public library. The receipt's payload records the decision, the proposal_hash (canon-v1), the policy_version, and the time — so a customer re-derives the whole thing from public material and the audit ledger. We are not trusted not to lie; we are unable to.

From the shared demo to your own boundary

Make it yours.

The calls above run against a shared demo policy. To govern your actions, reserve a namespace and author your Day-1 Law — one boundary, signed by your hand. Authority enters at exactly one point, and it is yours.

Reserve a namespace

Lock your org's admission space like a domain — one name, one owner. A one-time $79 reserves it and unlocks your own laws in shadow, today.

Pick a tier at the door →

Author your Day-1 Law

Write the boundary in Lumen — permissions, not prohibitions. Consequential actions are denied by default; a boundary is a grant. Then every /v1/admit is judged against your law.

Mint a boundary →

Point any agent at it

The Substrate speaks MCP — an agent that already speaks the protocol gets every consequential action admitted or refused before it runs, over the live endpoint at /mcp. MCP live · REST live too.

See the plug →

Read the whole contract

Every endpoint, the signed price list, the audit checkpoint. Bills are derived from the chain, not reported — recompute yours and check our number.

API reference →
The receipt is the product. Everything here is a signed, re-derivable fact: the decision, the price it was billed under, the ledger it landed in. A governance layer you have to trust is not governance — it is a promise. This one you can curl.
One line. Then run.

Get a governed decision now.

The primitive is live over REST today. Ask it to admit an action, hold the receipt, and prove it — then reserve a namespace and make the law your own.

live over REST + MCP · a REFUSE is never billed · authority_effect = 0