Built on, plays well with, ships in

Ecosystem.

x401 is a thin protocol that depends on a thicker stack of existing standards and composes with several adjacent ones. The point is to be the boring HTTP glue that makes those standards usable from a route handler.

Built on

These are the load-bearing standards x401 references normatively. If you understand these, you understand x401.

Plays well with

Optional layers that compose cleanly with x401 without modifying its contract. Use them when your deployment needs them; skip them when it doesn't.

Implementations

Reference and community libraries.

The reference TypeScript implementation ships from the proof/x401-lib monorepo. Other languages and platforms welcome — see the contributing guide.

Verifier libraries
@x401/core — protocol primitives (TypeScript)
@x401/express
@x401/hono
@x401/next
@x401/tanstack-start
your-language-here — open a PR
Agent SDKs
@x401/client — TypeScript fetch wrapper
Python, Go, Rust — planned / community
Wallets

Any OpenID4VP-compliant wallet works at the protocol level.

Interop matrix coming with v0.2 — see tracking issue.

Sister protocol — x402

x401 governs proof. x402 governs payment.

x401 and x402 are deliberately orthogonal. x401 governs proof at the HTTP boundary; x402 governs payment at the same boundary. They share a design instinct (lean on HTTP semantics, refuse to absorb each other) and a coordination promise (a route can demand both, in either order, without either protocol trying to be the other).

See composing with payment for the recommended sequencing.

Get involved

Help shape the protocol.