PEAC is an open standard for publishing machine-readable terms, returning signed interaction records, and verifying them offline. It is the evidence layer: portable proof across organizational boundaries, without replacing auth, payment rails, or observability.
For API providers, MCP tool hosts, agent operators, platforms, and auditors who need proof that crosses boundaries.
1. Publish terms at /.well-known/peac.txt
2. Return PEAC-Receipt with signed proof
3. Verify offline with the issuer's public keyWhat a governed HTTP response looks like:
HTTP/1.1 200 OK
PEAC-Receipt: eyJhbGciOiJFZERTQSIsInR5cCI6ImludGVyYWN0aW9uLXJlY29yZCtqd3QifQ...
Link: </.well-known/peac-issuer.json>; rel="issuer"Requirements: Node 24 (tested); Node 22+ (compatible). Go 1.26+ and Python 3.12+ also supported.
pnpm add @peac/protocol @peac/cryptoimport { verifyLocal } from '@peac/protocol';
const receipt = response.headers.get('PEAC-Receipt');
const result = await verifyLocal(receipt, publicKey, {
issuer: 'https://api.example.com',
});
if (result.valid) {
console.log(result.claims.iss, result.claims.kind, result.claims.type);
}Or from the CLI:
peac verify 'eyJhbGciOiJFZERTQSIsInR5cCI6ImludGVyYWN0aW9uLXJlY29yZCtqd3QifQ...'import { generateKeypair } from '@peac/crypto';
import { issue } from '@peac/protocol';
const { privateKey, publicKey } = await generateKeypair();
const { jws } = await issue({
iss: 'https://api.example.com',
kind: 'evidence',
type: 'org.peacprotocol/access-decision',
pillars: ['access'],
extensions: {
'org.peacprotocol/access': {
resource: 'https://api.example.com/inference/v1',
action: 'execute',
decision: 'allow',
},
},
privateKey,
kid: 'key-2026-03',
});
// Return jws in the PEAC-Receipt headerpnpm install && pnpm build
pnpm --filter @peac/example-minimal demoSee examples/minimal/ for the full source. For HTTP/REST, Express middleware, and Go examples, see docs/README_LONG.md.
PEAC is most useful where logs are not enough: payments, cross-boundary verification, audit, dispute review, and multi-agent workflows.
Full decision tree with quickstarts and integration kits
npx -y @peac/mcp-serverMore paths: Go SDK | Python examples | paymentauth Kit | ACP Kit | x402 Kit | Governance Mappings
| Existing system | What PEAC adds |
|---|---|
| Logs | Portable proof that survives organizational boundaries |
| OpenTelemetry | Signed evidence that correlates to traces |
| MCP / A2A | Proof carried alongside tool calls and agent exchanges |
| AP2 / ACP (Agentic Commerce Protocol) / UCP | Proof of terms and outcomes across commerce protocols |
| paymentauth | Evidence from HTTP Payment authentication challenges and receipts |
| x402 | Settlement proof mapping with offline verification |
| Stripe SPT / Payment rails | Delegation and settlement references made verifiable |
What changes in your stack: keep auth, keep payments, keep observability. Add /.well-known/peac.txt and return PEAC-Receipt on governed responses.
| Artifact | Description |
|---|---|
/.well-known/peac.txt | Machine-readable terms |
PEAC-Receipt | Signed interaction proof in headers or transport metadata |
verifyLocal() | Local verification once keys are available |
peac-bundle/0.1 | Portable audit/dispute package |
Install:
pnpm add @peac/clior run from this repo:pnpm --filter @peac/cli exec peac --help.
peac verify 'eyJhbGc...' # Verify a receipt
peac conformance run # Run conformance tests
peac reconcile a.bundle b.bundle # Merge and diff evidence bundles
peac policy init # Create peac-policy.yaml
peac policy validate policy.yaml # Validate policy syntax
peac policy generate policy.yaml # Compile to deployment artifactsSee packages/cli/README.md for the full command reference.
interaction-record+jwt)peac-receipt/0.1) is frozen; verifyLocal() returns E_UNSUPPORTED_WIRE_VERSIONSee docs/specs/VERSIONING.md for the full versioning doctrine.
/.well-known/peac-issuer.json JWKS with SSRF guardsSee SECURITY.md and docs/specs/PROTOCOL-BEHAVIOR.md.
| Document | Purpose |
|---|---|
| Spec Index | Normative specifications |
| Interaction Record Spec | Receipt envelope, kinds, extensions |
| Architecture | Kernel-first design |
| Kernel Constraints | Structural limits enforced at issue and verify |
| Policy Kit Quickstart | Policy authoring guide |
| Profiles | Integration profiles (Stripe x402, etc.) |
| Evidence Carrier Contract | Transport-neutral carrier placement rules |
| Developer Guide | Package catalog, integration examples, layer maps |
Building an implementation? Open an issue.
Contributions are welcome. For substantial changes, please open an issue first. See docs/SPEC_INDEX.md for normative specifications and docs/CI_BEHAVIOR.md for CI guidelines.
Apache-2.0. See LICENSE. Stewardship: Originary and the open source community.
Source: github.com/peacprotocol/peac | Website: peacprotocol.org | Discussions: GitHub Discussions
peacprotocol/peac
July 14, 2025
April 13, 2026
TypeScript