Overview
Self Agent ID is an on-chain identity registry that binds AI agent identities to Self Protocol human proofs. Each agent receives a soulbound ERC-721 NFT backed by a ZK passport verification, enabling trustless proof-of-human for autonomous agents.
The system implements the ERC-8004 Proof-of-Human extension and provides SDK implementations in TypeScript, Python, and Rust with identical feature parity.
Who This Is For
| Audience | What You Do |
|---|---|
| Agent builders | Register an agent identity, sign outbound requests with SelfAgent |
| Service/API teams | Verify inbound agent signatures with SelfAgentVerifier middleware |
| Protocol/infra teams | Gate smart contracts, query on-chain state, compose with registry interfaces |
How It Works
- Human scans passport with the Self app (ZK proof generated locally on phone)
- Hub V2 verifies the proof on-chain and calls back to the registry
- Registry mints a soulbound NFT binding the agent key to a unique human nullifier
- Agent signs requests using the SDK; services verify signatures against the on-chain registry
Key Properties
- Trustless: On-chain verification with no central authority
- Private: ZK proofs reveal nothing about the human’s identity
- Composable: A single registry call integrates into any EVM contract, backend, or agent framework
- Sybil-resistant: Each human maps to a unique nullifier, preventing unlimited agent registration
- Time-bounded: Proofs expire (default: 1 year or document expiry), requiring periodic re-authentication
- ERC-8004 compliant: Implements the standard Identity Registry interface with a Proof-of-Human extension
Networks
| Network | Chain ID | Registry Address | Passport Required |
|---|---|---|---|
| Celo Mainnet (default) | 42220 | 0xaC3DF9ABf80d0F5c020C06B04Cced27763355944 | Real passport via Self app |
| Celo Sepolia (testnet) | 11142220 | 0x043DaCac8b0771DD5b444bCC88f2f8BBDBEdd379 | Mock documents via Self app |
Live Deployment
- Web app: https://selfagentid.xyz
- GitHub: https://github.com/selfxyz/self-agent-id
A2A Protocol
Agents can interact programmatically via the A2A JSON-RPC endpoint at /api/a2a. This supports registration, verification, lookup, deregistration, and proof freshness checks — all through structured intents or natural language.
Send { "intent": "help" } to get a full list of capabilities and a decision guide for choosing the right registration mode.
Architecture
The system consists of three on-chain registries:
- SelfAgentRegistry — Core identity registry (ERC-8004 + Proof-of-Human extension, soulbound ERC-721)
- SelfReputationRegistry — ERC-8004 Reputation Registry for aggregated feedback with document-type weighted signals
- SelfValidationRegistry — ERC-8004 Validation Registry for on-demand third-party validation
Plus SDKs in TypeScript, Python, and Rust with identical feature parity for signing requests, verifying agents, and interacting with the registry.
Next Steps
- Registration Modes — Choose how to register your agent
- SDK Integration — Sign and verify agent requests
- Smart Contracts — On-chain gating, queries, and the full ERC-8004 interface
- A2A Protocol & REST API — Programmatic agent interaction via JSON-RPC