register
Four transactions.
No account.
Your tenant is a row in a public contract, not a record in our database — so signing up is something you do to the chain, with your own wallet. There is no form, no email, and no server involved in this page: it reads the registry, builds the calls, and your wallet signs them.
Connect a wallet
The connected address becomes the tenant owner and its first admin.
- account
- —
- chain id
- —
- registry
- —
No registry on this chain yet
Grantor is not deployed on chain —. Nothing here is pretending otherwise: this page reads /registry.json, and that chain has no entry, so there is no contract to register against.
Switch to a supported chain, or read the docs to run the whole thing against a local node — the contract, the verifier and this page all work on anvil today.
Pick capacity, create the tenant
A tier is capacity, not a feature gate — every mode and every chain is available on all of them. These numbers are read from the contract, not from this page.
- tenant id
- —
Fund the first period
Three transactions: approve the registry to move your USDC, top the tenant up, then draw the first period. Payment goes to the contract — we never take custody, and there is no invoice to chase.
You're live
Status is read back from the chain — this is what a verifier will actually see when it checks you, not what this page hopes happened.
- status
- —
- tenant id
- —
- registry
- —
- chain id
- —
Everything a relying party needs is on this screen. Drop it in:
What's next
- Sovereign — nothing else to do. Your app links grantor-verify and starts accepting deeds.
- Agents (agent-zk) — register each agent's commitment on-chain with registerZkAgent.
No browser wallet? Do it from a terminal.
The page is a convenience, not the mechanism — registering is four ordinary transactions against a public contract. Sign them however you like: Foundry, a Safe, a hardware wallet, a block explorer's write tab. The owner need not be the sender, so a hot key can register a tenant that a multisig owns.
This page has no backend and no dependencies — raw eth_call and eth_sendTransaction, ABI encoded by hand. View source; it is about three hundred lines. A signup flow that phoned home would rather undercut the pitch.