ConnectOnionConnectOnion
Back to Blog

Why We Call It "Address" Instead of "Identity"

• Design Decision

Naming is hard. We spent days debating whether to call it an "address" or "identity". The answer came from asking: what mental model serves developers best?

The Identity Trap

"Identity" sounds sophisticated. It implies persistence, uniqueness, authenticity. But it also carries baggage:

  • • Identity suggests claims about who or what something is
  • • Identity systems usually involve trust, verification, attestation
  • • Identity feels permanent and heavy

When a developer sees "identity", they expect complexity: identity providers, OIDC flows, JWT tokens, claims, scopes. They expect bureaucracy.

The Beauty of "Address"

Everyone understands addresses. Your house has one. Your email has one. Your server has one. An address is simply where to find something.

Addresses are:

  • Functional: They route messages
  • Simple: Just a string that points somewhere
  • Temporary: Can be changed or discarded
  • Neutral: No claims about identity or trust

The Mental Model Test

❌ With "Identity"

"Generate an identity for the agent"
"Verify the agent's identity"
"The agent's identity is..."

Feels heavy, permanent, complex

✅ With "Address"

"Generate an address for the agent"
"Send message to this address"
"The agent's address is..."

Feels simple, functional, clear

Prior Art Supports "Address"

Ethereum:Wallet address (not wallet identity)
Bitcoin:Bitcoin address (not Bitcoin identity)
TCP/IP:IP address (not computer identity)
Email:Email address (not email identity)

The pattern is clear: networks use addresses for routing, not identities for authentication.

The Code Tells the Truth

# What we generate
address = "0x" + public_key.hex()

# What it does
send_message(to=address, content=data)

# What it doesn't do
# verify_identity(address)
# get_claims(address)
# trust_score(address)

It's just a public key. It routes messages. It doesn't make claims. That's an address, not an identity.

When We Almost Used "Identity"

For 48 hours, our code used agent_identity. Then a user asked:

"For people not familiar with agent development, it will be confusing what is address"

They were right, but backwards. People unfamiliar with crypto understand "address" perfectly. It's "identity" that confuses them. Everyone has mailed a letter. Not everyone has contemplated digital identity systems.

The Final Decision

We call it an address because that's what it is: a way to reach an agent. Nothing more, nothing less.

If we add identity features later (reputation, attestations, trust scores), those will be separate layers built on top of addresses. The address just gets you there. What you find when you arrive is a different question.