Inbound · receive
Configure once, per source
import { Postel, Secret, Keyset } from "@postel/core";
import { config } from "./config.js";
export const postel = Postel({
inbound: {
// any producer signing with the Standard Webhooks header scheme
acme: {
verify: Secret(config.acmeSecret),
},
// rotate keys with zero downtime — accept either during the window
billing: {
verify: [Secret(config.billingSecretNew), Secret(config.billingSecretOld)],
},
// or verify asymmetric signatures straight from a JWKS endpoint
partner: {
verify: Keyset({ jwksUri: "https://partner.example/jwks" }),
},
},
});- ›HMAC v1 + Ed25519 v1a signatures
- ›JWKS consumer — caching, auto-refresh
- ›Multi-secret rotation windows
- ›Idempotent dedup (Postgres / SQLite / memory)
- ›Raw-bytes preservation
- ›Typed errors that name the failed step