Install
openclaw skills install sui-agent-walletProvide an AI agent with a secure Sui wallet to manage accounts, sign transactions, switch networks, and interact with Sui DApps via a Chrome extension and l...
openclaw skills install sui-agent-walletGive your AI agent its own Sui wallet to interact with DApps and sign transactions.
GitHub: https://github.com/EasonC13-agent/sui-skills/tree/main/sui-agent-wallet
Chrome Extension ◄──WebSocket──► Local Server ◄──API──► Agent
│ │
▼ ▼
DApp Page Key Management
(Wallet Standard) (Seed Phrase)
cd <your-workspace>/skills/sui-agent-wallet
# Install server dependencies
cd server && bun install
# Start the server
bun run index.ts
Load Chrome Extension:
chrome://extensions/extension/ folderThe server automatically generates a 12-word seed phrase and stores it in macOS Keychain:
═══════════════════════════════════════════════════════════
🔐 NEW WALLET CREATED
═══════════════════════════════════════════════════════════
Seed phrase stored securely in macOS Keychain.
To view your seed phrase for backup:
curl http://localhost:3847/mnemonic
Or use macOS Keychain Access app:
Service: sui-agent-wallet
Account: mnemonic
═══════════════════════════════════════════════════════════
| Location | Contents |
|---|---|
| macOS Keychain | Seed phrase (encrypted) |
~/.sui-agent-wallet/wallet.json | Account addresses, network settings (no sensitive data) |
View Keychain entry:
# Command line
security find-generic-password -s "sui-agent-wallet" -a "mnemonic" -w
# Or open Keychain Access app
# Search for "sui-agent-wallet"
# Get current address
curl http://localhost:3847/address
# Get balance
curl http://localhost:3847/balance
# Get seed phrase (for backup)
curl http://localhost:3847/mnemonic
# List all accounts
curl http://localhost:3847/accounts
# Create new account
curl -X POST http://localhost:3847/accounts
# Create account at specific index
curl -X POST http://localhost:3847/accounts \
-H "Content-Type: application/json" \
-d '{"index": 2}'
# Switch account
curl -X POST http://localhost:3847/accounts/switch \
-H "Content-Type: application/json" \
-d '{"index": 1}'
# Get current network
curl http://localhost:3847/network
# Switch network (mainnet | testnet | devnet | localnet)
curl -X POST http://localhost:3847/network \
-H "Content-Type: application/json" \
-d '{"network": "testnet"}'
Testnet:
#testnet-faucetsui client faucet --address <YOUR_ADDRESS>Devnet:
#devnet-faucetsui client faucet --address <YOUR_ADDRESS>Note: Mainnet requires real SUI tokens and cannot use faucets.
# View pending transactions
curl http://localhost:3847/pending
# View transaction details
curl http://localhost:3847/tx/<request-id>
# Approve transaction
curl -X POST http://localhost:3847/approve/<request-id>
# Reject transaction
curl -X POST http://localhost:3847/reject/<request-id>
# Import seed phrase (WARNING: overwrites existing wallet!)
curl -X POST http://localhost:3847/import \
-H "Content-Type: application/json" \
-d '{"mnemonic": "your twelve word seed phrase here ..."}'
Sign unsigned transactions generated by Sui CLI:
# 1. Generate unsigned transaction (using Agent Wallet address)
AGENT_ADDR=$(curl -s localhost:3847/address | jq -r .address)
TX_BYTES=$(sui client publish --serialize-unsigned-transaction \
--sender $AGENT_ADDR --gas-budget 100000000 | tail -1)
# 2. Sign and execute with Agent Wallet
curl -X POST http://localhost:3847/sign-and-execute \
-H "Content-Type: application/json" \
-d "{\"txBytes\": \"$TX_BYTES\"}"
# Or sign only without executing
curl -X POST http://localhost:3847/sign-raw \
-H "Content-Type: application/json" \
-d "{\"txBytes\": \"$TX_BYTES\"}"
Supported CLI commands:
sui client publish --serialize-unsigned-transactionsui client call --serialize-unsigned-transactionsui client transfer-sui --serialize-unsigned-transactionWhen a signing request comes in, the agent sees:
{
"id": "req_123",
"method": "signTransaction",
"origin": "http://localhost:5173",
"payload": {
"transaction": "{\"commands\":[{\"MoveCall\":{...}}]}",
"chain": "sui:devnet"
}
}
Before signing, verify:
Built-in Counter DApp for testing:
# Start frontend
cd test-dapp/frontend && pnpm dev
# Open http://localhost:5173
# 1. Connect Wallet → Select "Sui Agent Wallet"
# 2. Click "+1" → Sends a signing request
# 3. Agent uses /pending to view, /approve to sign
m/44'/784'/{accountIndex}'/0'/0'
Implemented Sui Wallet Standard features:
standard:connectstandard:disconnectstandard:eventssui:signTransactionsui:signAndExecuteTransactionsui:signPersonalMessageWhen switching accounts or networks, the server notifies the Extension via WebSocket:
accountChanged - Account changednetworkChanged - Network changedThis skill is part of the Sui development skill suite:
| Skill | Description |
|---|---|
| sui-decompile | Fetch and read on-chain contract source code |
| sui-move | Write and deploy Move smart contracts |
| sui-coverage | Analyze test coverage with security analysis |
| sui-agent-wallet | Build and test DApps frontend |
Workflow:
sui-decompile → sui-move → sui-coverage → sui-agent-wallet
Study Write Test & Audit Build DApps
All skills: https://github.com/EasonC13-agent/sui-skills