The open protocol for verifiable AI Agent identities.
Every AI agent gets a unique, chain-anchored, cryptographically verifiable identity (DID) that works across platforms.
protocol/
├── spec/ # Protocol specifications
│ ├── did-format.md # DID syntax and validation rules
│ ├── signing.md # Request signing specification
│ └── api.yaml # OpenAPI 3.1 — Registry API
├── contracts/ # Solidity smart contracts (Base L2)
│ ├── src/
│ │ └── AgentRegistry.sol
│ ├── test/
│ │ └── AgentRegistry.t.sol
│ └── script/
│ └── Deploy.s.sol
└── test-vectors/ # Shared test vectors for all SDKs
└── vectors.json
did:agent:{platform}:{unique_id}
did:agent:tokli:agt_a1B2c3D4e5
See spec/did-format.md for full specification.
A single AgentRegistry contract on Base L2 stores identity proofs:
register(didHash, pubKeyHash, platform)— Register an agentrevoke(didHash)— Revoke an agentrotateKey(didHash, newPubKeyHash)— Rotate public keygetAgent(didHash)— Query agent recordisActive(didHash)— Check if agent is active
Only hashes are stored on-chain (~181 bytes per agent). Full data lives off-chain.
cd contracts
forge install
forge build
forge testDEPLOYER_PRIVATE_KEY=0x... forge script script/Deploy.s.sol --rpc-url https://mainnet.base.org --broadcast| Language | Package | Repository |
|---|---|---|
| Python | pip install agent-id |
agent-id-python |
| JavaScript | npm install @open-agent-id/sdk |
agent-id-js |
| Rust | cargo add agent-id |
agent-id-rust |
Apache-2.0