What PEAC verifies
Signed, portable evidence across ten domains. Each maps to specific receipt types, extension groups, and packages. 224 conformance requirements across 12 typed extension groups.
Identity
Agent identity verification
Cryptographic proof-of-control for agent identity with 8 proof types. ActorBinding schema with origin-only enforcement, MVIS validation, and key lifecycle management with rotation and revocation.
- ActorBinding with 8 proof types (ed25519-cert-chain, sigstore-oidc, did, spiffe, x509-pki, custom)
- MVIS: 5 required fields (issuer, subject, key_binding, time_bounds, replay_protection)
- Key lifecycle (PENDING, ACTIVE, DEPRECATED, RETIRED, REVOKED) with 30-day overlap
- Kid reuse detection and revoked_keys[] in issuer config
@peac/crypto@peac/protocol@peac/schema// ActorBinding with proof type
import { ActorBindingSchema } from '@peac/schema';
const binding = ActorBindingSchema.parse({
id: 'agent-xyz',
proof_type: 'sigstore-oidc',
origin: 'https://org.example',
intent_hash: 'sha256:abc123...',
});
// ext["org.peacprotocol/actor_binding"]Purpose
Intent declaration and enforcement
Purpose-based access control with canonical purpose tokens. Agents declare intent, services enforce terms, and receipts record what purpose was applied.
- Canonical purpose tokens (train, search, inference, index)
- Purpose declaration via PEAC-Purpose header
- Purpose enforcement in control chains
- Purpose audit trail in receipts (purpose_declared, purpose_enforced)
@peac/control@peac/policy-kit@peac/protocol// Purpose-based access
const receipt = await issue({
iss: 'https://api.example.com',
purpose_declared: ['inference'],
purpose_enforced: 'inference',
purpose_reason: 'policy_match',
privateKey,
kid: 'key-2026-02',
});Consent
Policy-based authorization
Policy Kit evaluation with purpose tracking. GDPR-compliant consent revocation with deterministic first-match-wins semantics.
- Policy Kit YAML configuration
- Purpose-based access control (train, search, inference, index)
- Subject type filtering (human, org, agent)
- Revocation tracking with audit trails
@peac/policy-kit@peac/control@peac/privacy// Policy Kit evaluation
const result = await evaluate(policy, {
purpose: 'train',
subject_type: 'agent',
subject_id: 'openai-crawler',
});
// result.allowed: false
// result.reason: "Training requires
// explicit agreement"Privacy
Data protection
Privacy-preserving hashing with evidence redaction. k-anonymity >= 20 for aggregated metrics with minimal data exposure.
- Privacy-preserving content hashing
- Evidence redaction for sensitive fields
- k-anonymity (k >= 20) for metrics
- Minimal PII exposure design
@peac/privacy@peac/crypto@peac/protocol// Privacy-preserving hash
const hash = privacyHash(content, {
algorithm: 'sha256',
salt: ephemeralSalt,
});
// Redact sensitive evidence
const safe = redactEvidence(evidence, {
fields: ['email', 'ip'],
});Safety
AI safety evidence
Portable evidence for AI safety reviews, incident response, and governance workflows. Receipts capture what terms applied and what happened for post-hoc analysis.
- Incident response evidence bundles
- Safety review audit trails
- Governance workflow artifacts
- Post-hoc interaction analysis
@peac/audit@peac/protocol@peac/control// Generate incident evidence
const bundle = await createAuditBundle({
receipts: incidentReceipts,
policy_snapshot: activePolicy,
time_range: incidentWindow,
});
// Portable evidence for review
// No trust in issuer requiredAccess
Discovery and authorization
Standardized discovery via peac.txt and AIPREF headers. Control Abstraction Layer (CAL) evaluation with DPoP L3/L4 binding for secure request authorization.
- peac.txt discovery at /.well-known/peac.txt
- AIPREF HTTP headers for policy signaling
- Control Abstraction Layer evaluation
- DPoP proof-of-possession (L3/L4)
@peac/policy-kit@peac/control@peac/protocol// Fetch and evaluate policy
const policy = await fetchPeacTxt(
'https://example.com'
);
const decision = await evaluate(policy, {
purpose: 'inference',
subject_type: 'agent',
});
if (decision.allowed) {
// Proceed with request
}Commerce
Multi-rail payments
HTTP 402 payment flow with cryptographic receipts. Support for x402, Stripe, card, and Razorpay payments with unified receipt format.
- HTTP 402 Payment Required flow
- x402 blockchain payments (USDC)
- Stripe SaaS billing + crypto payments
- Card and Razorpay rail adapters
@peac/rails-x402@peac/rails-stripe@peac/rails-card@peac/protocol// Handle HTTP 402 response
const receipt = await acquire402Receipt({
offer: response.headers['x-402-offer'],
rail: 'x402',
wallet: agentWallet,
});
// Retry with receipt
headers['PEAC-Receipt'] = receipt.jws;Attribution
Provenance tracking
Track content usage with cryptographic attribution chains. Bind content hashes to receipts for verifiable provenance across AI workflows.
- Attribution attestations with content hashes
- Chain resolution up to 8 levels deep
- Usage type tracking (quote, derive, summarize)
- Weight-based contribution scoring
@peac/attribution@peac/protocol@peac/schema// Create attribution attestation
const attribution = createAttribution({
sources: [{
receipt_ref: 'jti:abc123',
content_hash: 'sha256:...',
usage: 'quote',
weight: 0.3,
}],
issued_at: Date.now(),
});Provenance
Verifiable records
Deterministic verification with dispute bundles. C2PA integration for media provenance with cryptographic proof chains.
- Deterministic receipt verification
- Dispute resolution workflow
- C2PA media provenance integration
- Cryptographic proof chains
@peac/protocol@peac/crypto@peac/audit// Verify receipt chain
const result = await verifyChain({
receipt: signedReceipt,
jwks_uri: issuerJwks,
require_attribution: true,
});
// Deterministic verification
assert(result.valid === true);Compliance
Audit and evidence
Audit bundles for regulatory compliance. SOC2 and EU AI Act ready exports with deterministic verification and portable evidence.
- Audit bundles with signed manifests
- Offline-verifiable evidence packages
- SOC2 control mapping
- EU AI Act transparency reports
@peac/audit@peac/protocol@peac/schema// Create audit bundle
const bundle = await createAuditBundle({
receipts: verifiedReceipts,
policy_snapshot: currentPolicy,
time_range: { start, end },
signing_key: auditKey,
});
// Export for SOC2 auditPillar Usage Profiles
9 profiles document how to use each extension group for regulatory, operational, or evidence workflows. Each profile includes schema-vs-profile field tables, non-goals, and strict-mode demonstrations.
12 Typed Extension Groups
Each receipt type maps to a typed extension group. In strict mode, registered first-party evidence types require their mapped extension group to be present.
Ready to implement?
Start with the quickstart guide or explore the full documentation.