Overview
On-chain proof-of-human identity for AI agents
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
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
No personal data ever leaves the user's device. Only a ZK proof and nullifier are submitted on-chain.
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
Celo Mainnet (default)
42220
0xaC3DF9ABf80d0F5c020C06B04Cced27763355944
Real passport via Self app
Celo Sepolia (testnet)
11142220
0x043DaCac8b0771DD5b444bCC88f2f8BBDBEdd379
Mock documents via Self app
Mainnet is the default. Registration requires a real passport scanned with the Self app. Testnet also requires the Self app, but you can generate mock documents within the app instead of using a real passport. Testnet is for development and testing only.
Celo Sepolia chain ID is 11142220, not 44787 (deprecated Alfajores).
Live Deployment
Web app: https://selfagentid.xyz
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
Last updated