open source

PEAC Protocol

An open protocol for portable signed interaction records. PEAC defines the record format, verification model, conformance requirements, and carrier mappings. It can be implemented and used independently of Originary.

Apache-2.0Offline-verifiable

PEAC Protocol is published by Originary and distributed through GitHub and package registries under Apache-2.0.

what peac is

A signed record another party can check.

PEAC defines how a system issues a signed record for an automated action so another party can verify what the issuer recorded, without access to the issuer's private systems, under an explicit issuer-and-key policy.

signed

Signed by the issuer

Every record is signed with Ed25519. Issuers publish their public key once. Verifiers check the signature offline against that key.

portable

Verifiable away from the issuer

Records are carried as compact JWS strings or exported as bundles. They do not depend on the issuer's dashboard, database, or API to stay verifiable.

current state

v0.16.4 on npm latest.

Released 2026-08-09. Reference implementation, conformance fixtures, and signed-record adapters published in the open.

latest release
v0.16.4
released 2026-08-09
tests passing
13,149
across all packages
conformance ids
290
across 32 sections
published packages
36
on npm latest
what a record contains

Six parts in every record.

Every record carries the same skeleton: facts, policy, result, time, issuer, signature. The issuer asserts the first four; the last two identify who signed it and let anyone check it.

action

What happened

The action itself: an API call, MCP tool run, gateway decision, provisioning event, or payment-related machine action, captured as a typed signed record with its selected facts.

policy

Under what terms

A digest of the policy or terms that applied at issue time. A verifier can check which version of peac.txt or another published policy document the record binds.

result

What returned

Status, digests, observed outcome. The record commits to what the issuer says happened, so a later review does not depend on log retention.

time

When it happened

Issue time and, where relevant, the observed event time, as the issuer recorded them, so a later review can place the action on a timeline.

issuer

Who issued it

The system that observed the action and signed the record, identified by its issuer URL. Keys resolve from the issuer's published configuration, so a verifier can check which key signed it.

signature

Signature

Ed25519 signature over the canonical JWS signing input. Verification is offline with a public key you supply.

workflows

The surfaces PEAC already maps.

PEAC composes with the systems your stack already uses. Each profile maps an existing surface to a portable signed record without replacing the runtime that produced it.

API requests
POST / GET / scoped calls behind an issuer
MCP tool calls
Tool name, policy, result digest
A2A handoffs
Task ids, parent task, signature observation
Gateway decisions
Allow, deny and review decisions
Provisioning lifecycle
10 observed event kinds
Runtime governance
AGT mapper and lifecycle observation
HTTP 402
Challenge / response for paid surfaces
Commerce
paymentauth / MPP / ACP / x402 observations
how to adopt

Self-host the protocol or use it with Originary.

Anyone can self-host PEAC Protocol, issue records, and verify them without an Originary account or managed service. Originary publishes and maintains PEAC Protocol and also offers commercial tools and implementation support for teams running it in production.

self-host

Apache-2.0

  • Full protocol specification
  • Reference TypeScript implementation
  • CLI for issuance and verification
  • MCP server for tool-call records
  • No Originary account or managed service required
commercial

Verification Pilot

  • Supported self-hosted issuance and verification
  • Bring-your-own-key signing (local or your KMS)
  • Audit bundle export
  • Implementation and rollout support
  • Procurement-ready record artifacts
install

Verify a record with one command.

Install the public packages from the npm latest dist-tag and verify a signed record locally.

npx -y @peac/cli@0.16.4 verify ./record.jws --public-key ./jwks.json

Or install the libraries: @peac/protocol @peac/crypto @peac/schema @peac/mcp-server