Universal browser wallet automation for AI agents. Supports 10 wallets including MetaMask, Rabby, Phantom, Trust Wallet, OKX, Coinbase, and more. EVM + Solana. Configurable guardrails with spend limits, chain allowlists, and approval thresholds.
Universal browser wallet automation for AI agents. Control any browser-based crypto wallet with configurable permission guardrails.
| Wallet | EVM | Solana | Users |
|---|---|---|---|
| MetaMask | ✅ | - | 100M+ |
| Rabby | ✅ | - | 1M+ |
| Coinbase Wallet | ✅ | - | 1M+ |
| Rainbow | ✅ | - | 500K+ |
| Phantom | ✅ | ✅ | 3M+ |
| Trust Wallet | ✅ | ✅ | 1M+ |
| Zerion | ✅ | ✅ | 100K+ |
| Exodus | ✅ | ✅ | 100K+ |
| OKX Wallet | ✅ | ✅ | 1M+ |
| Backpack | ✅ |
| ✅ |
| 500K+ |
WalletPilot allows AI agents to interact with dapps and execute transactions through any supported browser wallet. All operations are subject to user-defined constraints.
Security Model: The agent controls a separate wallet in an isolated browser profile. Never use your main wallet.
cd wallet-pilot
npm install
npx playwright install chromium
Edit config.json to select your wallet:
{
"wallet": {
"provider": "metamask", // or: rabby, coinbase, rainbow, phantom
"extensionPath": null // auto-detect from Chrome, or provide path
}
}
npm run setup
This opens a browser where you:
Transfer a small amount to your agent wallet:
Edit permissions.json:
{
"constraints": {
"spendLimit": {
"daily": "50000000",
"perTx": "10000000"
},
"allowedChains": [1, 137, 42161, 8453],
"allowedProtocols": ["0x...uniswap", "0x...1inch"]
}
}
connect <dapp-url>
Navigates to dapp and connects the agent wallet.
swap <amount> <token-in> for <token-out> [on <dex>]
Executes a token swap on an allowed DEX.
send <amount> <token> to <address>
Sends tokens to an address (within spend limits).
sign <message>
Signs an arbitrary message.
balance [token]
Returns wallet balances.
history [count]
Shows recent agent transactions.
| Constraint | Description |
|---|---|
spendLimit.daily | Max USD value per 24h period |
spendLimit.perTx | Max USD value per transaction |
allowedChains | Whitelisted chain IDs |
allowedProtocols | Whitelisted contract addresses |
blockedMethods | Forbidden function selectors |
requireApproval.above | Threshold requiring user confirmation |
WalletPilot uses a plugin architecture. To add a new wallet:
src/wallets/WalletAdapter interfacesrc/wallets/index.tsSee src/wallets/metamask.ts for reference implementation.
"revoked": true to disable all actionssrc/
├── index.ts # Main entry point
├── browser.ts # Playwright browser management
├── guard.ts # Permission enforcement
├── logger.ts # Transaction logging
├── price.ts # USD price estimation
├── types.ts # TypeScript types
├── config.ts # Configuration loading
└── wallets/
├── index.ts # Wallet adapter registry
├── adapter.ts # Base adapter interface
├── metamask.ts # MetaMask
├── rabby.ts # Rabby
├── coinbase.ts # Coinbase Wallet
├── rainbow.ts # Rainbow
├── phantom.ts # Phantom
├── trust.ts # Trust Wallet
├── zerion.ts # Zerion
├── exodus.ts # Exodus
├── okx.ts # OKX Wallet
└── backpack.ts # Backpack
| Feature | WalletPilot | MetaMask Agent Wallet |
|---|---|---|
| Wallets | 5+ supported | MetaMask only |
| Chains | EVM + Solana | EVM only |
| Setup | Choose your wallet | MetaMask required |
| Complexity | Higher | Lower |
| Use case | Multi-wallet orgs | MM-only users |
Choose WalletPilot if you need flexibility across wallets or Solana support. Choose MetaMask Agent Wallet for simpler MetaMask-only setup.