docs / overview

SDKs

Every published package in the OrangeCheck ecosystem, with its purpose and the protocol(s) it serves. All are MIT-licensed and live in the oc-packages monorepo.

Core — cross-cutting

Serve every sibling protocol:

PackagePurpose
@orangecheck/sdkCore TypeScript SDK — check(), verify(), createAttestation(), issueChallenge(), canonical-message builders, Nostr discovery, scoring.
orangecheck (Python)Python SDK. Same surface, same conformance vectors.
@orangecheck/gateHTTP middleware for Express / Next / Fastify / Hono / Workers.
@orangecheck/clioc shell — check / verify / create / challenge / discover.
@orangecheck/react<OcBadge>, <OcGate>, <OcChallengeButton>.
@orangecheck/wallet-adapterOne sign(message) API across UniSat / Xverse / Leather / Alby.
@orangecheck/relay-filterSybil-filter policy for Nostr relays. Strfry plugin + framework-agnostic core.
@orangecheck/airdrop-gateTurn a candidate list into a sybil-resistant allowlist.

OC Lock

PackagePurpose
@orangecheck/lock-cryptoX25519 / HKDF-SHA256 / AES-256-GCM primitives. Narrow surface, audited.
@orangecheck/lock-coreEnvelope format, RFC-8785 canonicalization, seal(), unseal().
@orangecheck/lock-deviceDevice-key generation, BIP-322-bound binding statements, Nostr directory publish.

OC Stamp

PackagePurpose
@orangecheck/stamp-coreCanonical message, envelope format, stamp() + verify(), optional OC Attest reference.
@orangecheck/stamp-otsOpenTimestamps calendar client, proof upgrade, pluggable anchor verifier.

OC Vote

PackagePurpose
@orangecheck/vote-coreReference implementation of oc-vote-protocol — canonicalize, pollId, commit, voterWeight, deterministic tally().
@orangecheck/vote-cliShell interface to tally / verify / inspect polls.

Which to install

You're building…Install
Gate an HTTP route@orangecheck/gate
Sign-in-with-Bitcoin flow@orangecheck/sdk (for issueChallenge / verifyChallenge)
React app rendering badges@orangecheck/react
Browser wallet integration@orangecheck/wallet-adapter
Server-side TypeScript verifier@orangecheck/sdk
Python / Django / FastAPI serviceorangecheck (plus '[verify]' for local BIP-322 checks)
Scripts + one-shot checks@orangecheck/cli
Nostr relay filter@orangecheck/relay-filter
Airdrop list filter@orangecheck/airdrop-gate
E2E-encrypted envelopes@orangecheck/lock-core + lock-device
Timestamped signed statements@orangecheck/stamp-core + stamp-ots
Stake-weighted poll tally@orangecheck/vote-core

Semver

Everything below 1.0. Minor bumps CAN change exported types; patch bumps won't. Check the per-package README before upgrading; diff the changelog if something looks ambiguous.

Cross-impl conformance

The TypeScript SDK and the Python SDK ship vendored copies of the same canonical test vectors from the protocol repos. CI re-runs both suites on every push and fails on drift. This means: a canonical message built in TS and a canonical message built in Python for the same inputs are byte-identical. Ditto attestation IDs, poll IDs, stamp envelope IDs. If you ever observe otherwise, it's a bug — please file it.