Participants
There are four roles in Directory. Most map to roles that already exist in the email and payments ecosystem.
Operator
The domain that runs a Directory node. Gmail, Chase, Coinbase, your employer, your personal domain.
The operator is the equivalent of a mail server administrator. They control DNS for the domain, run the routing service, manage user preferences, and sign every routing contract with the domain’s private key.
When someone resolves alice@gmail.com, Gmail is the operator. Gmail decides what currencies it supports, what destinations to return for Alice, how long contracts are valid, and whether to rotate Alice’s deposit addresses between requests.
The domain itself can also be a payable address. Resolving gmail.com pays Google. Resolving alice@gmail.com pays Alice. The domain is the building; the local part is the suite. The operator configures the domain’s default route as part of the node setup. Individual user routes are managed separately, typically via YAML files.
An operator can be:
- A consumer platform — Gmail, Yahoo, Outlook running nodes so all their users can receive money at their email address — and the domain itself is payable.
- A bank — Chase running a node so customers receive at
you@chase.com. Paychase.comto pay the institution. - An exchange — Coinbase running a node so
you@coinbase.comroutes to your trading account. - A business — your employer running a node so
you@company.comreceives payroll. Paycompany.comto pay the company. - An individual — you, running a node on your personal domain so
mydomain.comroutes to your wallet.
The only requirement is DNS control. If you own the domain, you can run a node. No registration, no approval.
Recipient
The person at the address. alice in alice@gmail.com.
The recipient never touches the protocol directly. They configure their preferences through the operator’s product — the same way you configure email forwarding through Gmail’s settings. Alice tells Gmail “route my USDC to this Ethereum wallet” and Gmail handles the rest.
The recipient can change preferences at any time. Switch wallets, switch chains, add fiat, remove crypto. Since every routing contract is generated fresh on each request, changes take effect immediately. There’s no stale state to update.
Sender
The wallet, app, or agent sending value. The sender has the recipient’s Directory address and wants to deliver money.
The sender’s job:
- Resolve the address through the operator’s node.
- Verify the signature.
- Send to the destination in the contract.
- Discard the contract.
The sender never caches routing contracts. Every contract is ephemeral — valid for seconds, generated for that specific request. If the sender doesn’t act on it, it expires and a new one must be requested.
A sender can be a wallet app, a payroll system, a payment button on a website, or an AI agent. Anything that can make an HTTPS request and send value.
Exchange node
A special type of operator that bridges mismatched pairs. If Bob has USDC but Alice only accepts USD via ACH, an exchange node sits in the middle: it accepts USDC from Bob and originates USD to Alice.
Exchange nodes are optional. They’re only needed when the sender and recipient don’t share a common value type or transfer type.
| Role | What they do | Real-world analogy |
|---|---|---|
| Operator | Runs the node, manages routing, signs contracts | Mail server administrator |
| Recipient | Configures preferences through the operator | Email user with forwarding rules |
| Sender | Resolves addresses, verifies contracts, sends value | Email client sending a message |
| Exchange | Bridges mismatched pairs (USDC → USD) | Currency exchange desk |