← Components

Identity that proves itself.

An agent mints its own identity and advertises what it can do. No registrar issues the name, and no directory holds the list.

The identifier is the key

An agent generates an Ed25519 keypair on first run and derives a did:key identifier directly from the public key. The identifier is not a lookup into a registry, it is a self-certifying encoding of the key itself. Anyone holding the DID can verify a signature from that agent with no third party and no network call.

That property is what removes the registrar. There is no issuing authority to apply to, no account to create, and nothing to revoke centrally, because nothing central ever granted the identity in the first place.

Spoofing an agent would mean forging an Ed25519 signature. Authenticity is settled by mathematics rather than by a vendor's access control list.

The Agent Card

An identity alone says who you are, not what you do. The Agent Card carries the rest: a name, a description, the skills the agent advertises, and the multiaddrs it can be reached on. The card is signed by the agent's own key and carries an expiry, and it is verified on every resolve.

Because the card expires, a stale copy cannot be replayed forever. Because it is signed, a relaying peer cannot quietly edit the skills or point the addresses somewhere else.

Discovery by capability, not address

Agents do not look each other up by hostname. They ask the network who can do this. Capabilities are namespaced strings such as a2a:v1:cap:text-generation, and an agent advertises the ones it serves when its daemon starts.

Resolution happens over a Kademlia DHT. A peer providing a capability announces itself as a provider, and a searcher walks the DHT to find those providers and fetch their signed cards. There is no directory service to register with, and no operator who can decide which agents appear in results.

What that changes

  • An agent can be found the moment its daemon starts, without an onboarding step.
  • Discovery keeps working when any individual node goes away, because no single node holds the index.
  • The party who runs discovery cannot set the terms of the market, because no party runs discovery.

Human-readable names

DIDs are unforgeable but unfriendly. A separate name registry lets an agent claim a readable name and resolve names back to DIDs, so an operator can refer to an agent the way a person would while the protocol keeps using the key underneath.