Skip to content

Architecture Decision Records

This page lists the design decisions behind Agent Manifest. Each one is written up as an Architecture Decision Record (ADR): a short note on what was decided, what else was considered, and what follows from it. Read them when you want to know why the format works the way it does; you do not need them to use the SDK.

An accepted ADR is never edited to reverse it. A decision that replaces an earlier one gets a new ADR that points back to the old one.

ADR Title Status
0001 RFC 8785 (JCS) for canonical serialization Accepted
0002 Ed25519 as the standard cryptographic profile Accepted
0003 RFC 9162 Merkle tree with domain separation Accepted
0004 Pydantic v2 for schema modeling in the Python SDK Accepted
0005 ML-DSA-65 and hybrid Ed25519+ML-DSA-65 signature support Accepted
0006 Human-in-the-Loop (HITL) embedded approval record design Accepted
0007 JSON-Lines append-only CRL as the SDK revocation format Accepted
0008 Four conformance levels (0 to 3) rather than binary conformant/non-conformant Accepted
0009 SPIFFE URIs as the canonical identity format for agent_id and issuer Accepted
0010 Runtime attestation freshness proofs via caller-controlled REPORT_DATA Accepted
0011 The manifest is a signed document, not a JWT/JOSE profile; envelope moves to COSE_Sign1 Accepted
0012 @context URI moves to a domain we control; v0.1 URL withdrawn, consumers cut over Accepted
0013 Take a CBOR library, not a COSE library; the COSE structures are built in-repo Accepted
0014 Sign with the fully-specified Ed25519 code point (-19); keep verifying the deprecated -8 Accepted
0015 Agent Plugins manifest reference Accepted

To propose a new ADR, open a GitHub issue using the spec change template and follow the ADR template.


For practical implementation guidance that corresponds to these decisions, see the tutorials: HITL approval workflows (ADR-0006), revocation and key rotation (ADR-0007), hardware attestation (ADR-0008), and server-side verification.