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.
Pay with what you already hold — USDC directly, or ETH, WETH, USDT, DAI or cbBTC, swapped to USDC on-chain inside the same transaction you sign. New to crypto entirely? A debit card gets a fresh wallet funded in about fifteen minutes — fund with a card. KYC happens with the exchange or onramp, never with us.
Live on Base mainnet — worth knowing before you pay
A tenant here is a real row in a public contract, funded with real USDC — and the money stays yours: funds sit in the contract, never with us, and withdrawBalance returns anything undrawn to an address you choose, any time. The registry has no owner power to touch balances — an invariant test pins its USDC holdings to exactly the sum of tenant balances. Stakes are small: fees run $0–$45 a period, and the free tier costs nothing at all.
The contracts have not yet been independently audited — an external audit is planned before the "preview" label comes off. Keep stakes proportionate in the meantime: don't park a year of fees or route production-critical traffic yet. Want a zero-cost look first? The identity demo runs on Base Sepolia with play-money USDC, and the delegation playground runs against mainnet without spending anything. Either way there is no account and no signup — it is your wallet talking to a public contract.
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 —. This page reads /registry.json, and that chain has no entry — 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. Short on USDC or gas? Fund with a card — about fifteen minutes from a debit card to a funded wallet.
Or pay with what you have — one transaction, any of these, swapped to USDC on-chain as part of the payment:
You're live
Status is read back from the chain — exactly what a verifier will see when it checks you.
- 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, about three hundred lines. View source: nothing leaves your browser except chain calls through your own wallet.