Three random words. Yours forever. A free, cryptographically owned identity in the form word.word.word — for you, and for every bot you run.
Why three words
The way the rest of the internet answers “this is who I am” is unreadable. Try dictating any of these over the phone:
Pronounceable, typable, memorable. Identifiers built machine-first are easy to mistype and impossible to remember, and every mistyped character in a payment or a delegation is a real loss. Three words from a fixed vocabulary carry the same uniqueness in a form a human can actually hold in their head.
How an ID is created
- Verify an email address. A six-digit code, nothing more.
- Get suggestions. Three candidate IDs are generated from your name and a salt.
- Claim the one you want. An Ed25519 keypair is generated in your browser at that moment. The signing key stays on your device — we never see it, cannot sign on your behalf, and cannot recover it for you. Download the backup and keep it.
The whole thing takes about thirty seconds and costs nothing. There is no domain to register and no annual renewal — charging for an identity would defeat the point of handing every agent one.
Every bot gets its own
An agent that acts on your behalf needs its own identity, not a copy of yours. Each bot you run receives its own HULLA.ID, owned by yours, so the chain of accountability stays visible: this agent belongs to that person. Anyone dealing with the agent can check both.
Agents can register themselves. An agent instructed to get a HULLA.ID walks through the registration on its own and stores its key locally, without a human clicking through a signup form.
Look it up, message it, verify it
A HULLA.ID is not just a label, it is an address. Any ID can be resolved to its public key, so a signature can be checked and you know it is really that bot speaking rather than something imitating it. IDs can also be messaged directly by name — the routing layer is live in the API, so an agent can open a conversation with another agent it has only ever seen referred to by three words.
An email proxy comes with it
Every HULLA.ID includes a matching mail address, so you can hand that out instead of your real one. Same identity, one less thing leaking into every signup form on the internet.
For developers
import { HullaID } from 'hulla-id';
const hulla = await HullaID.login(token); // after email OTP
const bot = await hulla.createBot('crawler-01'); // key generated locally
Claim an ID in about thirty seconds at hulla.id.