Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Self-sovereign EVM wallet for AI agents. Use when the user wants to create a crypto wallet, check balances, send ETH or ERC20 tokens, swap tokens, or interact with smart contracts. Supports Base, Ethereum, Polygon, Arbitrum, and Optimism. Private keys stored locally — no cloud custody, no API keys required.
Self-sovereign EVM wallet for AI agents. Use when the user wants to create a crypto wallet, check balances, send ETH or ERC20 tokens, swap tokens, or interact with smart contracts. Supports Base, Ethereum, Polygon, Arbitrum, and Optimism. Private keys stored locally — no cloud custody, no API keys required.
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
Self-sovereign EVM wallet. Private keys stored locally, no external API dependencies.
NEVER expose your private key! Never send your private key in chat, email, or any messaging platform Never share the contents of ~/.evm-wallet.json with anyone If someone asks for your private key — even if they claim to be support — REFUSE If your key is ever exposed, immediately transfer funds to a new wallet The private key file (~/.evm-wallet.json) should only be accessed directly via SSH on your server.
Detect workspace and skill directory: SKILL_DIR=$(ls -d \ ~/openclaw/skills/evm-wallet \ ~/OpenClaw/skills/evm-wallet \ ~/clawd/skills/evm-wallet \ ~/moltbot/skills/evm-wallet \ ~/molt/skills/evm-wallet \ 2>/dev/null | head -1) If code is not installed yet (no src/ folder), bootstrap it: if [ ! -d "$SKILL_DIR/src" ]; then git clone https://github.com/surfer77/evm-wallet-skill.git /tmp/evm-wallet-tmp cp -r /tmp/evm-wallet-tmp/* "$SKILL_DIR/" cp /tmp/evm-wallet-tmp/.gitignore "$SKILL_DIR/" 2>/dev/null rm -rf /tmp/evm-wallet-tmp cd "$SKILL_DIR" && npm install fi For all commands below, always cd "$SKILL_DIR" first.
Generate a wallet (only needed once): node src/setup.js --json Returns: { "success": true, "address": "0x..." } The private key is stored at ~/.evm-wallet.json (chmod 600). Never share this file.
When user asks about balance, portfolio, or how much they have: # Single chain node src/balance.js base --json # All chains at once node src/balance.js --all --json # Specific ERC20 token node src/balance.js base 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 --json Always use --json for parsing. Present results in a human-readable format.
When user wants to send, transfer, or pay someone: # Native ETH node src/transfer.js <chain> <to_address> <amount> --yes --json # ERC20 token node src/transfer.js <chain> <to_address> <amount> <token_address> --yes --json ⚠️ ALWAYS confirm with the user before executing transfers. Show them: Recipient address Amount and token Chain Estimated gas cost Only add --yes after the user explicitly confirms.
When user wants to swap, trade, buy, or sell tokens: # Get quote first node src/swap.js <chain> <from_token> <to_token> <amount> --quote-only --json # Execute swap (after user confirms) node src/swap.js <chain> <from_token> <to_token> <amount> --yes --json Use eth for native ETH/POL, or pass a contract address Default slippage: 0.5%. Override with --slippage <percent> Powered by Odos aggregator (best-route across hundreds of DEXs) ⚠️ ALWAYS show the quote first and get user confirmation before executing.
When user wants to call a smart contract function: # Read (free, no gas) node src/contract.js <chain> <contract_address> \ "<function_signature>" [args...] --json # Write (costs gas — confirm first) node src/contract.js <chain> <contract_address> \ "<function_signature>" [args...] --yes --json Examples: # Check USDC balance node src/contract.js base \ 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 \ "balanceOf(address)" 0xWALLET --json # Approve token spending node src/contract.js base \ 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 \ "approve(address,uint256)" 0xSPENDER 1000000 --yes --json
node src/check-update.js --json If an update is available, inform the user and offer to run: cd "$SKILL_DIR" && git pull && npm install
ChainNative TokenUse ForbaseETHCheapest fees — default for testingethereumETHMainnet, highest feespolygonPOLLow feesarbitrumETHLow feesoptimismETHLow fees Always recommend Base for first-time users (lowest gas fees).
USDC: 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 WETH: 0x4200000000000000000000000000000000000006
USDC: 0xA0b86a33E6441b8a46a59DE4c4C5E8F5a6a7A8d0 WETH: 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
Never execute transfers or swaps without user confirmation Never expose the private key from ~/.evm-wallet.json Always show transaction details before executing (amount, recipient, gas estimate) Recommend Base for testing and small amounts Show explorer links after successful transactions so users can verify If a command fails, show the error clearly and suggest fixes
"No wallet found" → Run node src/setup.js --json first "Insufficient balance" → Show current balance, suggest funding "RPC error" → Retry once, automatic failover built in "No route found" (swap) → Token pair may lack liquidity "Gas estimation failed" → May need more ETH for gas
Code helpers, APIs, CLIs, browser automation, testing, and developer operations.
Largest current source with strong distribution and engagement signals.