Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AgentID — Identity for AI Agents

1 billion AI agents are coming. None of them have an identity.

AgentID is an open protocol for AI agent identification — free, decentralized, and verifiable. Built on Base L2.

🌐 Website: agentid.md
📄 Protocol Spec: CONCEPT.md
Contract: AgentRegistry.sol

Why?

  • No trust — Agent A can't verify Agent B is who it claims
  • No accountability — No audit trail of WHO acted
  • No discovery — Agents can't find each other by capability
  • No portability — Identity locked to platform

How It Works

Every agent gets an agentid.md file — a passport:

---
id: rem-a7f3x2
name: Rem
type: assistant
capabilities: [code, research, memory]
trust_level: 2    # 🟢 platform-verified
public_key: ed25519:MC4CAQ...
registry: base:0x742d35Cc...
---

Three Layers

Layer What Where
L1 Identity Registry agentId + publicKey + trustLevel Base L2 (on-chain)
L2 Metadata Capabilities, model, endpoints IPFS
L3 Resolver REST API for lookup/search api.agentid.md

Trust Levels

Level Name How Like
⚪ 0 Self-registered Agent registered itself Self-signed cert
🔵 1 Owner-verified Human signed challenge DV SSL
🟢 2 Platform-verified Platform attested OV SSL
⭐ 3 Cross-verified Multiple verifications EV SSL

Verification (Challenge-Response)

Agent A wants to verify Agent B:

1. A → api.agentid.md/resolve/rem-a7f3x2  →  { publicKey, trustLevel }
2. A → B: challenge (nonce + timestamp)
3. B signs challenge with private key
4. A verifies signature against on-chain public key
5. Valid + trust ≥ minimum → ✅ interaction proceeds

Quick Start

JavaScript/TypeScript

import { AgentID } from '@agentid/sdk'

const agent = await AgentID.register({
  name: 'MyAgent',
  capabilities: ['chat', 'code']
})

const result = await AgentID.verify('rem-a7f3x2')
console.log(result.trustLevel) // 2 ✓

Python

from agentid import AgentID

agent = AgentID.register(name="MyAgent", capabilities=["research"])
result = AgentID.verify("rem-a7f3x2")
assert result.valid

REST

# Register
curl -X POST api.agentid.md/v1/register \
  -d '{"name":"MyAgent","capabilities":["chat"]}'

# Resolve
curl api.agentid.md/v1/resolve/rem-a7f3x2

Smart Contract

Network: Base L2 (Chain ID: 8453)
Testnet: Base Sepolia
License: MIT

36/36 tests passing ✅

Run Tests

cd foundry
forge test -vv

Architecture

┌─────────────┐     ┌──────────┐     ┌──────────────┐
│   Agent /    │────▶│ Relayer  │────▶│   Base L2     │
│   SDK        │     │ (gasless)│     │  Contract     │
└─────────────┘     └──────────┘     └──────────────┘
       │                                     │
       │            ┌──────────┐             │
       └───────────▶│   IPFS   │◀────────────┘
                    │ Metadata │   (metadataURI)
                    └──────────┘
                         │
                    ┌──────────┐
                    │ Resolver │
                    │  API     │
                    └──────────┘

Security

Threat Solution
Impersonation Challenge-response with on-chain public key
Tampering IPFS content hash verified on-chain
Key compromise On-chain revocation + key rotation
Replay attack Nonce + timestamp in challenges
Sybil attack Trust levels (L0 = untrusted)

Roadmap

  • Protocol spec
  • Smart contract (AgentRegistry.sol)
  • Test suite (36 tests, 100% pass)
  • Deploy to Base Sepolia
  • SDK (TypeScript + Python)
  • Resolver API
  • Deploy to Base mainnet
  • IPFS integration
  • Platform verifier onboarding

License

MIT — use however you want.


AgentID is infrastructure for the agent economy. Like DNS made the web navigable, AgentID makes the agent ecosystem trustworthy.

About

AgentID — Open Agent Identity Protocol. Free, decentralized identity for AI agents.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages