The open specification for establishing trust between autonomous Agents and the Services they use.
The Agent Enrollment Protocol (AEP) defines how an Agent discovers a Service's requirements, enrolls a cryptographic identity, authenticates requests, obtains optional scoped credentials, checks its enrollment state, and revokes access. The protocol is machine-first, transport-aware, and designed for independent implementation.
Discover Establish trust Use access Manage lifecycle
Inspect ─────────▶ Enroll ────────────────▶ Authenticate ─────────▶ Status
└──────── Grant ─▶ Session credential └──▶ Revoke
| Command | What the Agent learns or changes |
|---|---|
| Inspect | Discovers the Service DID, command endpoints, supported identity methods, authentication methods, grant types, and policy metadata |
| Enroll | Registers a Service-scoped Agent identity and returns an active or pending enrollment state |
| Grant | Exchanges proof-of-possession for an optional scoped session credential |
| Status | Reads the current enrollment state and any outstanding requirements |
| Revoke | Invalidates one or more issued session credentials |
The core protocol does not require a particular session-credential format. A Service can implement Inspect, Enroll, and Status without Grant or Revoke, or advertise one or more companion grant types when session credentials are useful.
| Document | Scope | Source |
|---|---|---|
| Agent Enrollment Protocol | Core commands, HTTP transport, discovery, client assertions, identity-method substrate, errors, security, privacy, and IANA registrations | draft-02 |
| Claim Values | Interoperable claim names and forward-compatible claim value shapes | draft-00 |
did:web Identity Method |
Initial AEP-defined identity method feature | draft-00 |
| Platform Hosted Identity | Service-scoped Agent DID provisioning, delegated signing, verification, and lifecycle | draft-00 |
| OAuth Session Credential | OAuth Bearer credentials issued and revoked through Grant and Revoke | draft-02 |
| API-key Session Credential | API-key credentials issued and revoked through Grant and Revoke | draft-02 |
| Basic Session Credential | HTTP Basic credentials issued and revoked through Grant and Revoke | draft-02 |
The repository connects normative documents to artifacts that can be consumed by SDKs, servers, and conformance suites:
| Area | Contents |
|---|---|
ietf/examples |
Complete command, Claims negotiation, protected-resource, authorization-composition, and OpenAPI examples |
ietf/schemas |
JSON Schemas for stable request, response, discovery, Claims, Platform, and problem-detail objects |
ietf/test-vectors |
Success, rejection, Claims compatibility, redirect-safety, replay/idempotency, and Platform cases |
ietf/conformance |
Conformance profiles and the offline fixture harness |
ietf/registry |
Machine-readable authentication, identity, grant-type, Claim Name, extension, and HTTP-field entries |
ietf/guides |
Non-normative implementation and Internet-Draft authoring guidance |
Start with the implementer guide, then use the complete Enroll → Grant → Revoke transcript as a wire-level companion to the core draft.
aep-specs/
├── ietf/
│ ├── specs/ # Internet-Draft Markdown sources
│ ├── examples/ # reviewed protocol examples and transcripts
│ ├── schemas/ # source JSON Schemas
│ ├── test-vectors/ # conformance inputs and expected outcomes
│ ├── conformance/ # profiles and artifact manifest
│ ├── registry/ # repository-local registry entries
│ ├── guides/ # non-normative implementation guidance
│ └── governance/ # extension registration guidance
├── docs/ # published website, examples, and schema copies
└── artifacts/ # local rendered drafts; generated and gitignored
The ietf/README.md documents the draft workspace and full
rendering prerequisites.
Install the Ruby dependencies, then run the complete repository check:
cd ietf
bundle config set path vendor/bundle
bundle install
make checkUseful focused targets:
# Validate draft structure, references, vectors, schemas, harness, and registries
make -C ietf check
# Format Markdown tables
make -C ietf format
# Render XML, text, HTML, PDF, examples, schemas, and the site index
make -C ietf render
# Run idnits against rendered text drafts
make -C ietf idnitsRendering also requires Python packages from
ietf/requirements.txt and the native dependencies
described in ietf/README.md. Generated drafts are written
to artifacts/; the deploy workflow publishes them on the latest GitHub
release.
| Resource | Best for | Link |
|---|---|---|
| Complete draft set | Core, claims, identity method, Platform, and session-credential documents | Published specification site |
| Rendered artifacts | HTML, text, XML, and PDF builds of every draft | Latest GitHub release |
| Implementer guide | A practical route through the drafts and support artifacts | Implementer guide |
| Protocol examples | Inspect documents and complete HTTP transcripts | Examples |
| JSON Schemas | Machine-readable validation of stable wire objects | Published schemas |
| Test vectors | Positive and negative implementation cases | Test vectors |
| Node.js SDK | Reference TypeScript implementation and runnable applications | aep-node |
Internet-Draft prose is normative. Schemas, examples, registries, and test vectors are implementation support artifacts and do not replace the specifications.
See CONTRIBUTING.md for the contribution workflow,
GOVERNANCE.md for project governance, and
ietf/STYLE.md for Internet-Draft writing conventions.
Security issues should be reported through SECURITY.md.
See LICENSE.md. Specification text and repository software use the licenses described there.