Platform

The runtime contract.

What the runtime guarantees, stated precisely enough to be falsifiable. Four hops, one schema, zero slogans.

01 — A run, end to end

Four hops. Every hop accounted for.

Latency budgets are measured across the last 30 days of production runs. Verification overhead is billed to RIG, not to you.

CAPTURE
Input is frozen to a hash before anything runs. input_hash is the run's identity; nothing downstream can mutate it.
p50 12ms · p99 41ms
BUILDER
Your code computes. Isolated credentials, workspace-scoped token, no access to the verifier's context. RIG adds nothing here.
overhead 0ms · model-bound
VERIFIER ×≤3
A separate runtime tries to refute the output. Separate process, memory, and credentials. Fail 3× and the run halts — unsealed.
p50 340ms · p99 1.9s · on RIG
GOVERN
On a clean refute pass, the packet is hash-chained to the previous packet, signed, and appended to the ledger — immutable from that point.
p50 37ms · p99 123ms · seal + append
SEALED

Sealed is a state, not a slogan. A packet only exists when the verifier passed and the chain accepted the hash.

02 — The ProofPacket schema

Every field, in writing.

This is the complete schema. If a field isn't here, it isn't in the packet.

FieldTypeDescription
proof_idstringUnique packet identifier, pkt_-prefixed. Addressable via the proof API.
agentstringName of the agent that produced the run, e.g. prior.
agent_versionsemverExact agent version sealed, e.g. 2.4.1. A version bump never reuses a packet.
runtimestringRuntime fingerprint of the builder environment (image digest).
job_idstringCaller-supplied job correlation id. Yours, not ours.
builder_runobjectBuilder attempt record: started/finished timestamps, model id, token counts.
verifier_runs[]arrayOne entry per refute attempt (max 3): verdict, evidence refs, latency.
verifier_statusenumPASSED · REFUTED · EXHAUSTED (3 failed attempts). Only PASSED seals.
input_hashsha256Hash of the frozen input, captured before the builder ran.
output_hashsha256Hash of the exact artifact the verifier passed.
prev_hashsha256this_hash of the previous packet in the ledger. The chain link.
this_hashsha256Hash over prev_hash + input_hash + output_hash + sealed_at. Locally recomputable.
sealed_atRFC 3339Seal timestamp, UTC. Part of the hashed payload.
sealed_bystringIdentity of the govern node that signed, e.g. govern-us-east-1/04.
signatureed25519Signature over this_hash. Verify offline with the published govern pubkey.
A complete packet — GET /v1/proof/pkt_9f31aa2
{
  "proof_id": "pkt_9f31aa2",
  "agent": "prior",
  "agent_version": "2.4.1",
  "runtime": "sha256:8bd04e1",
  "job_id": "acme-q3-forecast-0117",
  "builder_run": { "model": "claude-sonnet-4-6", "started": "2026-08-04T17:02:11Z", "finished": "2026-08-04T17:02:19Z", "tokens": 41280 },
  "verifier_runs": [
    { "attempt": 1, "verdict": "REFUTED", "evidence": "brier-missing", "latency_ms": 388 },
    { "attempt": 2, "verdict": "PASSED", "evidence": "all-checks-green", "latency_ms": 331 }
  ],
  "verifier_status": "PASSED",
  "input_hash": "c41dd90",
  "output_hash": "77be1a4",
  "prev_hash": "5e02c8f",
  "this_hash": "a3f9c21",
  "sealed_at": "2026-08-04T17:02:20Z",
  "sealed_by": "govern-us-east-1/04",
  "signature": "ed25519:6f2…c9"
}
Fetch it
curl -s https://api.rig.run/v1/proof/pkt_9f31aa2 \
  -H "Authorization: Bearer $RIG_TOKEN"
Verify the chain locally — 4 lines, no SDK
const crypto = require('crypto');
const p = await (await fetch('https://api.rig.run/v1/proof/pkt_9f31aa2')).json();
const h = crypto.createHash('sha256').update(p.prev_hash + p.input_hash + p.output_hash + p.sealed_at).digest('hex').slice(0, 7);
console.log(h === p.this_hash ? 'CHAIN OK' : 'DIVERGENT — do not trust');
03 — Guarantees, and non-guarantees

What you can hold us to.

The left column is contractual. The right column is us telling you where the contract ends — before your security review finds it.

Guaranteed hold us to it

builder ≠ verifier

Structural, not conventional. Separate process, runtime image, memory space, and credential scope. The verifier cannot read the builder's context; the builder never sees the refutation strategy. Enforced by the orchestrator.

replay divergence

If a replayed run diverges from the sealed output, the packet is marked DIVERGENT, surfaced in the ledger, and alerted. It is never silently resealed. The original packet stays immutable either way.

monotonic risk

No unrecoverable side effects mid-workflow. Any step that can touch the outside world requires a sealed checkpoint first; a failed run rolls back to the last sealed state, not to zero.

drift alerts

Alert fires when an agent's verifier pass-rate drops >3pp over a 7-day rolling window, or replay-divergence rate exceeds 0.5% over 24h. Thresholds are per-workspace configurable.

Not guaranteed and why that's honest

model correctness

A seal proves the run happened and survived refutation — not that the model was right. A sealed wrong answer is possible; an unsealed one is not.

upstream API uptime

Model providers carry their own SLAs. We route around failures where possible; we don't absorb their availability.

your rubric quality

The verifier refutes against your bar. If the bar is wrong, the output is faithfully, sealedly wrong. We flag weak rubrics; we don't override them.

04 — Build on RIG

Two functions. That's the integration.

Free until you ship · 70/30 after. Full reference in the docs.

@rig/sdk · typescript
import { RigAgent } from '@rig/sdk';

const agent = new RigAgent({
  name: 'release-notes',
  builder: async (job) => {
    // your code. your model. your prompt.
    return draft(job.diff, { model: 'claude-sonnet-4-6' });
  },
  verifier: {
    refute: async (out, job) => {
      // return a receipt that could prove the output wrong
      const claims = extractClaims(out);
      const checks = await Promise.all(claims.map(c => job.ground(c)));
      return { ok: checks.every(Boolean), evidence: checks };
    },
    maxAttempts: 3,
  },
});

await agent.run({ diff: gitDiff('HEAD~1') }); // sealed packet on success

Publish to the marketplace. Your agent, our verifier runtime, 12.4k teams already installing.

70 / 30 · you keep the 70 See pricing

Read it, then test it.

The quickstart gets you to a sealed proof in four commands.

posture-gated tool calls

Every tool surface carries a security posture — Strict/Auto/Dangerous (Strict, Auto, Dangerous) — with classifier screening and audit provenance before side effects land.

plug-and-play MCP · rig-memory-os

Install governed memory jobs in Claude/Cursor/Hermes: remember_allowed, recall, brier_report, mutation_gate_status, proof_export.