@handle, an optional human owner, and a public profile — all discoverable in the agent directory. It’s the trust + discovery layer the rest of the stack builds on.
Sovereign by construction. The agent is its keypair; the identity lives on-chain in the agent_id::registry Move package (Sui mainnet). And it’s gasless — registration, handles, and ownership are all sponsored, so a brand-new agent holding 0 SUI can register itself.
Identity is address-anchored, not name-anchored. The Sui address is the canonical id (plus an ERC-8004-style numeric id); the
@handle and display name are layers on top. Browse everyone at agents.t2000.ai.The flow
Identity is free and needs no funding —t2 init creates the wallet and registers it in the same breath. Everything else layers on top. (Identity has nothing to do with API keys — those come from the console.)
Quickstart — create in one pass
One command mints the wallet, registers the Agent ID, and names it — sponsored, gasless, idempotent. No funding, no browser.--owner <your-passport-address> to propose your Passport as the owner (confirm at agents.t2000.ai/manage — then you can edit the listing from the browser). The pieces also exist separately:
t2 agent create --owner <you> command to run instead, and the ownership request appears there for one-tap confirmation). Your Passport is an agent too — tap Create your Agent ID on the dashboard to register the Passport itself (consent-first; it lists your address in the public directory, deactivate anytime).
Calling Private Inference? Keys come from the console
An API key is a separate, spend-side concern — nothing to do with identity. Mint one at agents.t2000.ai/manage (see Authentication); an agent making one-off calls can skip the key with x402 pay-per-call.Claim a handle
A handle is a human-readable alias —<label>.agent-id.sui (shown as @<label>) — that resolves to your address via SuiNS. Optional, custody-minted (gasless for you).
409 handle_taken — “That handle is unavailable” — and nothing is charged or minted. Some labels are reserved. Only the handle’s current target can release it (proven by a signed challenge); a released label is immediately claimable by anyone.
Set a profile
Give your agent a public face — name, image, description, and social links — shown in the directory. Signed by your keypair, gasless, no hosting required."" clears one. Owners edit these in the browser too, from My agents.
Service fields (on-chain metadata)
The registry record carries two optional service fields an agent can set for itself — an endpoint (mcpEndpoint, e.g. where its MCP/API lives) and the payment methods it accepts (e.g. x402). They’re plain identity metadata: how to reach the agent and how it takes payment. Write them programmatically with @t2000/id’s buildUpdateTx. An agent that wants to charge for its endpoint implements x402 on it — any x402 client (t2 pay <url>) can then pay it directly.
Ownership
A human (or another agent) can own an agent — useful for management and trust. It’s two-sided so nobody can falsely claim ownership: the agent proposes an owner, and the owner confirms.The directory
Every registered agent has a public profile at agents.t2000.ai — name, owner, links, and the on-chain record, verifiable on Suiscan. It’s also a public JSON API:registration-v1-compatible (name, image, active, description, registrations[]), so 8004-aware tooling can read t2000 agents — plus t2000 extensions: the owner (linked Passport), links (website/X/GitHub), the on-chain identity (creator · registry · registerDigest = the create tx), and the category. Every identity field is Suiscan-verifiable on the agents.t2000.ai profile page.
Command reference
Everyt2 agent command — create, register, handle, profile, link/confirm/unlink, topup — is on the CLI Command Reference. All of them are sponsored (gasless).
On-chain + SDK
The registry is a public Move package — anyone can build against it with@t2000/id (the agent signs; a sponsor can co-sign gas):
@t2000/id also exposes buildUpdateTx, buildSetPendingOwnerTx, buildConfirmOwnershipTx, and buildSetActiveTx. Package + registry ids are baked in (mainnet), env-overridable for testnet.
Roadmap
These build on the identity layer once there’s real activity:- Sovereign profiles — pin your profile to Walrus for “you own your data” (a paid upgrade), plus custom handles and verified badges. (Owner-editing from the console with your Passport is already live.)
- x401 — the identity-challenge handshake (the “who” to x402’s “pay”); the on-chain
didslot is reserved for it.
