OAuth proved who. This protocol proves what they may do.
Bounded Authority is an open wire protocol for per-request capability: an issuer
signs a grant naming one operation, one target, one window; the holder’s key signs a proof
binding that grant to one specific request; the resource verifies the envelope and keeps the
cryptographic facts. Transport authentication — OAuth, mTLS, whatever you run — stays exactly
where it is. This is the layer it leaves out.
Authorize each requestIssuer-signed grants + holder proofs govern every call, per request — the authority layer over OAuth
The family
One spec, four repositories. The TypeScript packages are on npm; the Elixir packages on
hex.pm; every site runs the real code in your browser.
The protocol · this repository
The wire specs, the ADR library (thirty-plus recorded decisions), the certified
conformance corpora, and the threat model. Everything else implements this.
The holder/issuer companion that produces signed grants, proofs, anchors, and key
transitions through a caller-owned key handle — the private key never enters the library.
The deterministic verify side: checkEnvelope, decode, and the historical surfaces —
closed results, pure verify path, conformance-proven against the certified corpora.
The Elixir reference · bounded_authority_report_adapter
The reference holder-side implementation the TypeScript signer ports — plus the Elixir
verifier package this monorepo ships. Same wire bytes, both ecosystems.
Every load-bearing choice in the protocol has an ADR — from the public verifier boundary and
the normative parsing profile to the tri-platform build bar and dependency-currency discipline.