Deploy your agent
Connect a wallet, set a budget, and create an agent account that cannot spend past it.
Before you start
You need three things. Everything here runs on a test network with test money that has no real value.
- A browser wallet such as MetaMask, Rabby or Coinbase Wallet. No wallet? Skip to the Desk: it reads the same chain without one.
- The test network. Connecting adds Robinhood Chain Testnet to your wallet for you. If you prefer to add it by hand: chain id 46630, RPC https://rpc.testnet.chain.robinhood.com, currency ETH, explorer https://explorer.testnet.chain.robinhood.com.
- A little test ETH for gas. Get it free at the Robinhood Chain testnet faucet ↗ (opens in a new tab). Creating an agent costs a tiny amount.
1. Get test money
Your agent trades with test dollars (mUSDG) that have no real value. The faucet gives each wallet 1,000 once a day.
Connect a wallet (top bar) to use this. Nothing is sent until you press the button.
Disabled until you connect a wallet (top bar).
2. Set the budget and create your agent
One transaction builds three things for you: a vault that holds the agent's money under your rules, a locked account the agent works through, and an identity token that names it. You own all three.
Disabled until you connect a wallet (top bar). Nothing is sent until you press the button.
What you get: one transaction creates a vault, a locked smart account and an identity token, all owned by your wallet. The vault starts empty. What it does not do yet: it does not start trading or searching on its own. No agent software is attached to the account, and the proof run below was driven by a script (tools/agent-4337.ts), not by a running agent.
3. Your agents
Read from the chain every 20 seconds ONCHAIN. Pick an agent to fund and control it.
Connect a wallet to see your agents.
Proof run on the chain
Run on Robinhood Chain Testnet by tools/agent-4337.ts. A fresh agent was created, then its key signed these UserOperations and the canonical EntryPoint ran them. Values are saved from that run; the hashes open on the explorer. ONCHAIN · saved from the run
- Agent created in one transaction
- 0x3c271080…83ad06 ↗ (4,176,840 gas)
- Identity token
- #128 in 0x8004A8…BD9e ↗ (opens the block explorer in a new tab)
Sent through the account (included on chain)
| What the agent tried | Result | Transaction |
|---|---|---|
| Agent claims net 390c (true value 261c) | Refused by the vault: MathMismatch(390, 261, 2374, 2374) | 0x7e6eb0…f162 ↗ |
| Agent tries a 400-unit trade (cap is $2,500) | Refused by the vault: SpendCap(263600, 250000) | 0xf3c4cb…0be7 ↗ |
| Honest commit: 240 units, net $2.61/unit | Executed. Spend $1,581.60 derived by the vault. | 0x5c0405…1a4e ↗ |
Refused by the account before anything ran
These were checked with an eth_call to the EntryPoint, which is what a bundler does before it includes a UserOperation. Nothing was sent, and the vault was found unchanged afterwards.
| Attempt | Refused with |
|---|---|
| Call the token contract directly to send tokens to a stranger | AA23 TargetNotAllowed(0x0B71c1B397A9d33198e0A6a5701E12011AC84D95) |
| Withdraw the vault balance (owner-only function) | AA23 SelectorNotAllowed(0x2e1a7d4d) |
| Pause the vault (owner-only function) | AA23 SelectorNotAllowed(0x02329a29) |
| Send 1 wei of ETH to the vault with the call | AA23 ValueNotAllowed(1) |
| Pay itself a 1 gwei tip as its own bundler (draining the gas deposit) | AA23 TipNotAllowed(1000000000) |
| Ask for 5,000,000 verification gas (draining the gas deposit) | AA23 GasTooHigh(5000000, 2000000, 100000) |
| UserOp signed by a stranger instead of the agent key | AA24 AA24 signature error |
Which standards this uses, honestly
What is built and running, and what is not.
| Standard | How we use it | Status |
|---|---|---|
| ERC-4337 account abstraction | Each agent acts through its own smart account. The account can call one contract only, its vault, and only the agent functions, with capped gas and no tips. Transactions go through the canonical EntryPoint v0.7 (0x000000…a032). | Live. Proof run on this page. |
| ERC-8004 Identity Registry (Draft) | Every agent is registered in the ERC-8004 Identity Registry that already exists on this chain, with a registration file. Its vault and account are written into the token metadata. ERC-8004 is a Draft, and that registry is a shared contract run by someone else. | Live |
| ERC-721 | The identity token. You own it and can transfer it. It is a name tag: selling it does not hand over the vault, which stays under the wallet that created it. | Live |
| EIP-712 and ERC-1271 | The registry only links an agent wallet after that wallet signs for it. The agent account answers ERC-1271 for the agent key. Tested in the contract suite; not part of the one-click flow. | Live (tested) |
| EIP-1193 and EIP-6963 | Wallet connection and discovery on this page. | Live |
| ERC-8004 Reputation and Validation | Not built. | Not built |
| ERC-7579 / ERC-6900 modular accounts | Not used. Our account is a minimal single-purpose account. | Not built |
| ERC-7715 wallet permissions | Not used. | Not built |
| ERC-4337 paymaster | Not used. The owner pays gas by putting a little ETH into the account. | Not built |
Contracts: Factory 0xeA8407…aaE0 ↗ (opens the block explorer in a new tab) · Faucet 0x4A349E…64FD ↗ (opens the block explorer in a new tab). Both are source-verified on the explorer. Identity registry (not ours, source not verified): 0x8004A8…BD9e ↗ (opens the block explorer in a new tab).