Trust
What we hold, and what you can check without us.
And how to tell us when something is wrong.
The short version
- YesThe six protocols never hold your coins or your keys.
- YesAnything made with a protocol can be checked offline, without us.
- YesThe protocol tools are free and need no account.
- YesThe specs and the packages are open source. App code is mostly private; see Open source.
- Not yetochk.app holds none of your money. While ochk.app is in testing, orangecheck holds what you earn there. A coin that backs your account never leaves your wallet. Who holds what (opens in a new tab)
- In testingochk.app needs no KYC. It is the design; testing checks that it still holds once payouts run.
- NoLightning payments. They are off across orangecheck since 2026-09-02. Payments to orangecheck are on-chain.
| True today? | The claim |
|---|---|
| Yes | The six protocols never hold your coins or your keys. |
| Yes | Anything made with a protocol can be checked offline, without us. |
| Yes | The protocol tools are free and need no account. |
| Yes | The specs and the packages are open source. App code is mostly private; see Open source. |
| Not yet | ochk.app holds none of your money. While ochk.app is in testing, orangecheck holds what you earn there. A coin that backs your account never leaves your wallet. Who holds what (opens in a new tab) |
| In testing | ochk.app needs no KYC. It is the design; testing checks that it still holds once payouts run. |
| No | Lightning payments. They are off across orangecheck since 2026-09-02. Payments to orangecheck are on-chain. |
Security
What happens next
- A reply
- We aim to reply to every report within 30 days. We can’t promise a time to a fix yet.
- Disclosure
- Once the fix ships. We publish an advisory and credit you, unless you prefer not to be named.
- Bounty
- There is no paid bounty programme yet.
What’s in scope
- Spec flaws in any
oc-*-protocolrepo: an ambiguous canonical message, a replay path, a weight mode that rewards collusion, a hole in anchor checking. - Bugs in our packages: any
@orangecheck/*npm package, and theorangecheckPython package. - Bugs in our sites: anything on ochk.io or its subdomains, and on ochk.app. For example: sign-in or session flaws, cross-site scripting, request forgery, SSRF, rate-limit bypasses, leaked secrets.
- Cryptographic bugs in the BIP-322, X25519, AES-GCM or OpenTimestamps code paths, including under unusual inputs.
Out of scope: chain analysis of proofs you chose to publish (that is the threat model, not a bug), social engineering of operators, and volume denial-of-service.
What each protocol protects against
Every spec has a SECURITY.md that says what the protocol proves, what it does not, and which attackers it is designed for. Start with the family-wide threat model in the docs, then read the one for the protocol you use:
OC Attest (opens in a new tab)OC Lock (opens in a new tab)OC Vote (opens in a new tab)OC Stamp (opens in a new tab)OC Agent (opens in a new tab)OC Pledge (opens in a new tab)
Keeping dependencies patched
Our own packages reach every site through automated update pull requests. Third-party advisories are triaged by whether the code runs in production and an attacker can reach it. The web framework, which every site uses and which faces untrusted input, is patched across all sites together, never one at a time.
Transparency
Who holds what
The protocols hold nothing. ochk.app is the one place orangecheck holds anything that can move funds, and its custody page (opens in a new tab) shows every role, who holds it today, and what replaces it, read live from the running system. Today orangecheck holds them all. No real sats move yet.
Trust anchors, by name
When you use our sites, these are the parties you rely on:
- ochk.io, the sign-in host
- It issues the sign-in sessions every orangecheck site accepts, signed with a key it publishes at ochk.io/.well-known/jwks.json. Whoever controls that key can mint a session. They cannot forge a signature from your Bitcoin wallet.
- me.ochk.io, ochk.app’s API
- It signs ochk.app’s receipts with a separate key, published at me.ochk.io/.well-known/oc-envelope-jwks.json (opens in a new tab).
- Nostr relays
- Artifacts are published to public relays, including relay.ochk.io (opens in a new tab), which orangecheck runs. A relay can hide something. It cannot forge it.
- A source of Bitcoin data
- Our verifiers read the chain from mempool.space by default. The packages let you point them at your own node.
- OpenTimestamps calendars
- For anchoring stamps and receipts to a block. A calendar can fail to anchor something. It cannot backdate it.
Each protocol page lists its own anchors under “What you trust”.
What we store
For the protocol tools: none of the six tool sites has a database. What you make stays in your browser until you publish it to relays or share it yourself.
For your orangecheck account, ochk.io keeps your account id, a display name, how you sign in (an email, encrypted at rest, or a Bitcoin address, which is public anyway) and a record of each session, including its device and IP address. No password, no private key, no recovery phrase. The full list, field by field, including what ochk.app keeps: ochk.app/security (opens in a new tab).
What we count
Page views on ochk.io are counted by Plausible, through our own domain, and by our own beacon at insights.ochk.io. Neither sets cookies. The IP address is hashed and discarded, never stored. No advertising trackers. Privacy policy.
How orangecheck is paid for
A grant. Open-source work on orangecheck is supported by OpenSats. The grant funds the open layer: the specs, the test vectors, the verifier and the packages. It does not fund the hosted product.
Products. ochk.app charges apps a fixed 20% platform fee on the events they pay their users for. Signing people in is free. vault.ochk.io sells cloud sync in sats.
No token, no investors. There is no token and there will not be one. About orangecheck has the rest.
Lightning
Lightning is off across orangecheck since 2026-09-02. vault.ochk.io takes payment on-chain, into a watch-only wallet, so the server that takes payment holds no key that can spend it.
Open source
- oc-attest-protocolthe OC Attest specMIT
- oc-lock-protocolthe OC Lock specMIT
- oc-vote-protocolthe OC Vote specMIT
- oc-stamp-protocolthe OC Stamp specMIT
- oc-agent-protocolthe OC Agent specMIT
- oc-pledge-protocolthe OC Pledge specMIT
- oc-chat-protocolthe OC Chat spec, a mode of OC LockMIT, adapted for a specification
- oc-packagesevery
@orangecheck/*npm package and the Python packageMIT - oc-docsthe docs at ochk.io/docsMIT
- oc-relay-infrarelay.ochk.ioMIT
- oc-guardian-kita command-line kit for running a federation guardianMIT
- oc-vault-extensionthe browser extension for vault.ochk.ioMIT
- oc-agent-examplescopy-ready OC Agent integrationsMIT
- oc-vote-examplescopy-ready OC Vote integrationsMIT
- oc-load-vault-secrets-actiona reusable GitHub ActionMIT
- oc-media-kitlogos and iconsCC BY 4.0
All of it is at github.com/orangecheck (opens in a new tab). Every change to a spec is a public commit, and each spec keeps a changelog.
Status
- ochk.app: ochk.app/status (opens in a new tab), with every dependency checked live and who runs it.
- The protocol tools: there is no shared status page yet.