Chio/Docs
LOGIN · JOIN

Guard Marketplace

Buy guards other publishers wrote, at a price your reputation tier sets, under a credit limit underwriting grants.

Concept chio@5f63e6e

On this page

Most of the checks a kernel runs are not specific to one deployment. Detecting customer data in a tool’s output, catching injected instructions in a fetched page, or refusing a malformed refund are problems many operators share, and each has a publisher who maintains a guard for it. A guard marketplace lets you run those guards without writing them, at a price set by your own track record and inside a credit line someone has agreed to extend.

Three facts decide whether a guard can run in your bundle: whether your tier reaches its floor, what that tier pays per call, and whether underwriting grants you credit to pay it. The kernel’s ordinary guard pipeline then runs what you installed, pinned by digest.

A listing is evaluated against your tier, then your credit

Install checks the floor, prices the guard, and asks underwriting for a limit, in that order. A refusal at any step leaves nothing written.

Guard installChoose a tenant.
limitLlistingUSD 0.20, floor tier1customer-pii-scannerg1floortier1 ≥ tier1g2price20 − 5% → 19 centsg3credit limitUSD 500.00Ttenant tier1Uunderwritingρinstall recordwrittenLcustomer-pii-scannerUSD 0.20 a call, floor tier1g1floortier1 ≥ tier1g2price19 centsg3credit limitUSD 500.00Ttenant tier1Uunderwritingρinstall recordwritten

A tier1 tenant installs at USD 0.19 a call

The floor holds. The 5 percent tier discount takes the USD 0.20 base price to 19 cents, and underwriting sets a USD 500.00 marketplace credit limit. The install record binds both.

One digest-pinned guard listing at USD 0.20 a call with a tier1 floor, evaluated for five tenants against the bootstrap discount and credit tables. The listing is illustrative; governed fiscal tables, cosign status, and settlement counts are left out.

The floor decides visibility as well as installation: list omits a guard above your tier, and info answers for it exactly as for a reference that does not exist, so a catalog does not reveal which guards a tier cannot buy.

A listing is a digest-pinned guard with a price and a floor

The catalog is a JSON array of entries. Each names a digest-pinned OCI reference, a display name, a per-call price in minor units, the lowest reputation tier that may buy it, a cosign verdict, and its recent settlement count:

catalog.jsonjson
[
  {
    "reference": "oci://registry.larkfield.example/pii-scanner@sha256:7d2e…41a9",
    "name": "customer-pii-scanner",
    "price": { "units": 20, "currency": "USD" },
    "reputation_floor": "tier1",
    "cosign_status": "signature verified",
    "recent_settlement_count": 1284
  }
]

The price and floor come from the guard’s own manifest, in a marketplace block that accepts no other fields. A guard without the block is free, with a tier0 floor. A catalog with duplicate references, or with more entries than the reader accepts, is refused before any listing is read.

guard manifest · marketplace blockjson
"marketplace": {
  "price": { "units": 20, "currency": "USD" },
  "reputation_floor": "tier1"
}

Your reputation tier sets the price

Tiers come from reputation scoring: a composed score of 0.50 reaches tier1, 0.75 tier2, and tier3 needs 0.90 with every feed at 0.80 or more from at least two distinct feeds. Each tier takes a discount off the base price and carries a credit ceiling:

TierComposed scoreDiscountCredit limit
tier0below 0.500%USD 100.00
tier10.505%USD 500.00
tier20.7510%USD 2,500.00
tier30.90, feeds 0.8020%USD 10,000.00

These are the bootstrap tables. A governed fiscal policy on the control plane can replace either one, and prices follow it. The price is integer arithmetic on minor units, truncated, so a 20-cent guard costs 19 cents at tier1 and 16 at tier3:

Terminalbash
chio --control-url https://kernel.larkfield.example \
  guard market list --catalog ./catalog.json --tenant larkfield --tier tier1 --json
Output
{
  "schema": "chio.market.list-report.v1",
  "tenant_id": "larkfield",
  "tenant_tier": "tier1",
  "entries": [
    {
      "reference": "oci://registry.larkfield.example/pii-scanner@sha256:7d2e…41a9",
      "name": "customer-pii-scanner",
      "effective_price_units": 19,
      "currency": "USD",
      "reputation_floor": "tier1"
    }
  ]
}

Install needs a credit limit from underwriting

Every market command resolves its fiscal tables through the control plane named by --control-url. The credit-limit request carries only your tenant and currency, and the control plane reads your tier from its own reputation store and the publisher’s standing from its revocation store, so a client cannot claim a better tier or clear a revocation. Install the scanner:

Terminalbash
chio --control-url https://kernel.larkfield.example \
  guard market install --catalog ./catalog.json --bundle-dir ./guards \
  --ref oci://registry.larkfield.example/pii-scanner@sha256:7d2e…41a9 \
  --tenant larkfield --tier tier1 --json
Output
{
  "schema": "chio.market.install-report.v1",
  "reference": "oci://registry.larkfield.example/pii-scanner@sha256:7d2e…41a9",
  "tenant_id": "larkfield",
  "registered_price_units": 19,
  "registered_price_currency": "USD",
  "applied_tier": "tier1",
  "credit_limit_units": 50000,
  "credit_limit_currency": "USD",
  "idempotent_replay": false
}

The record binds the registered price, the tier it was computed at, and the credit limit underwriting granted. When the revocation oracle revokes a publisher’s credentials, on the same root that revokes capabilities, underwriting denies with a limit of 0 whatever your tier, and info shows the zero limit before you try:

Terminalbash
chio --control-url https://kernel.larkfield.example \
  guard market info --catalog ./catalog.json --tenant larkfield --tier tier1 \
  --ref oci://registry.larkfield.example/pii-scanner@sha256:7d2e…41a9
Output
reference     oci://registry.larkfield.example/pii-scanner@sha256:7d2e…41a9
name          customer-pii-scanner
price         19 USD cents per call at tier1, base 20
floor         tier1
cosign        signature verified
settlements   1284 recent
credit limit  0 USD

An install against that listing refuses with credit limit denied: publisher_credentials_revoked and writes no record. Underwriting covers the decision outcomes and how a governed tier-limit table is resolved.

An install is recorded once

The record’s file name is derived from SHA-256 hashes of the tenant and the guard reference, and it is written atomically. Installing the same guard again finds the record, checks that it binds the same schema, tenant, and guard, and returns it unchanged with idempotent_replay: true; a retained record that binds anything else is refused. A retry after a lost response therefore cannot register a second price.

Next: publish a guard of your own