Overview
OrangeCheck is a family of Bitcoin-stake primitives for the open web. These docs cover the whole family — shared plumbing up top, then one dedicated section per protocol. Everything links back to the same canonical message format, same BIP-322 signing primitive, same Nostr kind-30078 conventions. Learn the shared layer once; each protocol adds a small sibling-specific layer on top.
The family
Six verbs of sovereign sociality: am, whisper, decide, declare, delegate, swear.
| Protocol | Verb | What it does | Status |
|---|---|---|---|
| OC Attest | am | Sybil resistance via proof of Bitcoin stake. Sign one message; any verifier can check that you've held N sats for N days. | live |
| OC Lock | whisper | End-to-end encryption addressed to a Bitcoin address. Sealed envelopes that only the key-holder of a specific address can unseal. | live |
| OC Vote | decide | Stake-weighted sybil-resistant polls. Three canonical weight modes. Deterministic, cross-impl-testable tally. | live |
| OC Stamp | declare | Bitcoin-block-anchored signed statements. BIP-322 + OpenTimestamps. Immutable authorship + priority. | live |
| OC Agent | delegate | Bitcoin-identity-bound delegation authority. Scoped rights, bonded to sats, revocable on-demand. Every agent action is signed. | live |
| OC Pledge | swear | Forward-looking commitment primitive. BIP-322-signed declarations about future-verifiable propositions, bonded to an OC Attest. | live |
OC Attest is the base layer — every other sibling can optionally reference an Attest proof as a "stake at signing" signal. The other five siblings are peers: none depends on the others at the protocol level.
How they compose
flowchart TB
subgraph PEERS [" "]
direction LR
LOCK["<b>OC Lock</b><br/><i>whisper</i>"]
STAMP["<b>OC Stamp</b><br/><i>declare</i>"]
VOTE["<b>OC Vote</b><br/><i>decide</i>"]
AGENT["<b>OC Agent</b><br/><i>delegate</i>"]
PLEDGE["<b>OC Pledge</b><br/><i>swear</i>"]
end
ATTEST["<b>OC Attest</b><br/><i>am · base layer</i><br/>proof of bitcoin stake"]
LOCK -->|optional gate| ATTEST
STAMP -->|stake at signing| ATTEST
VOTE -->|ballot weight| ATTEST
AGENT -->|bond| ATTEST
PLEDGE -->|bond| ATTEST
PLEDGE -->|resolution mechanism| STAMP
PLEDGE -.->|dispute mechanism| VOTE
AGENT -->|every action anchored| STAMP
classDef base fill:#0a0a0a,stroke:#f97316,stroke-width:2px,color:#fafafa;
classDef peer fill:#18181b,stroke:#52525b,color:#fafafa;
classDef invisible fill:transparent,stroke:transparent;
class ATTEST base;
class LOCK,STAMP,VOTE,AGENT,PLEDGE peer;
class PEERS invisible;
Eight real composition arrows across six protocols: every peer can pin its artifacts to Attest stake; Pledge resolves through Stamp and disputes through Vote; every Agent action is itself a Stamp. None of these compositions is required — but each one is what turns six small protocols into a single substrate.
Commercial products on top
The protocol family is open and free to self-host. On top of it OrangeCheck ships two managed commercial products. They use the same envelopes, the same BIP-322 signing, the same anchor pipeline — they're consumers of the protocol, not extensions to it.
| Product | What it is | Audience |
|---|---|---|
| OC Me | Consumer-side Bitcoin-backed identity. Sign in with your address; integrators pay you sats per billable event. Federation custody by default with one-click self-custody graduation. | end users + sites that want sat-paying user auth |
| OC Fleet | Managed enterprise tier for OC Agent and OC Pledge. Integration adapters, webhook signing service, audit-bundle generation, compliance review. Same envelopes as the open protocol path. | enterprises running AI agents under bounded authority |
Both products operate under the same charter — eight commitments that bind every OrangeCheck surface (no token, custody you can graduate out of, the protocol stays open, audit verifies without us, and so on).
How these docs are organized
- Getting started — land here first. Decision tree across the six protocols, plus a running integration in under five minutes.
- Ecosystem — the plumbing every protocol inherits. The canonical message format, BIP-322 signing, Nostr kind-30078, conformance vectors, and the shared security model. Written once; never duplicated.
- Per-protocol sections — one each for Attest, Lock, Stamp, Vote, Agent, Pledge. Each follows the same shape: overview → how it works → concepts → API → guides. Pattern-match once; navigate them all.
- OC Me · OC Fleet — the two commercial products. Each section follows: overview → quickstart → SDK reference → integrations → webhooks → API → custody/operations.
- SDKs — every published
@orangecheck/*package, mapped to which protocol or product it serves. - Charter — single source of truth for the eight company commitments. Every product subdomain links here.
- Reference — FAQ and glossary.
Where the authoritative bits live
| Repo | |
|---|---|
| Canonical protocol spec | oc-protocol (CC-BY-4.0) |
| Reference implementations | oc-packages (MIT) — one monorepo for every published package |
| OC Lock spec | oc-lock-protocol |
| OC Stamp spec | oc-stamp-protocol |
| OC Vote spec | oc-vote-protocol |
| OC Agent spec | oc-agent-protocol |
| OC Pledge spec | oc-pledge-protocol |
| This site | oc-docs |
Conventions
- Short code snippets are runnable as-is. Longer ones link to a full working
example in
oc-packages/EXAMPLES.md. - "Attestation" (lowercase) refers specifically to an OC Attest signed proof. Lock envelopes, Stamp envelopes, Vote ballots, etc. are not called attestations.
- Every protocol ships a spec repo and a reference impl. If the two disagree, the spec is authoritative and the impl is the bug.
Start somewhere
- Which protocol do I need? — 60-second decision tree
- Quickstart — ship an integration in 5 minutes
- Ecosystem concepts — learn the shared layer once
- OC Attest overview — the base-layer protocol
- OC Me overview — sat-paying identity for consumer apps
- OC Fleet overview — managed Agent + Pledge for enterprises
- Charter — what OrangeCheck commits to, in writing