Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
๐ Base Wallet - Crypto Identity for AI Agents. Create wallets, sign messages (SIWE), send transactions programmatically. No browser extensions, no human intervention. The foundation for autonomous Web3 agents.
๐ Base Wallet - Crypto Identity for AI Agents. Create wallets, sign messages (SIWE), send transactions programmatically. No browser extensions, no human intervention. The foundation for autonomous Web3 agents.
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.
Every autonomous agent needs a wallet. Create one without human help. TL;DR: Programmatic wallet creation on Base/Ethereum. SIWE auth, balance checks, transactions.
True autonomy โ Your agent creates and controls its own wallet No browser needed โ Pure CLI, no extensions or popups SIWE ready โ Sign-In with Ethereum for Web3 services Secure by default โ Environment variables, no plaintext keys Create and manage Base chain (Ethereum-compatible) wallets programmatically.
โ DOโ DON'TUse environment variables for private keysStore private keys in plain text filesSet wallet files to chmod 600Commit wallet files to gitUse --env mode (recommended)Use console.log(privateKey)Back up mnemonics offlineShare private keys or mnemonics
# Output as environment variable format (safest) node scripts/create-wallet.js --env # Output example: # export WALLET_ADDRESS="0x..." # export PRIVATE_KEY="0x..." Then copy to your shell or .env file.
# Only if you need file-based storage node scripts/create-wallet.js --managed my-agent โ ๏ธ This stores private key in ~/.openclaw/wallets/my-agent.json
const { ethers } = require('ethers'); // โ SECURE: Load from environment variable const wallet = new ethers.Wallet(process.env.PRIVATE_KEY); console.log('Address:', wallet.address); // โ NEVER: console.log('Private Key:', wallet.privateKey);
const wallet = ethers.Wallet.fromPhrase(process.env.MNEMONIC);
const provider = new ethers.JsonRpcProvider('https://mainnet.base.org'); const balance = await provider.getBalance(wallet.address); console.log('Balance:', ethers.formatEther(balance), 'ETH');
const message = `example.com wants you to sign in with your Ethereum account: ${wallet.address} Sign in message URI: https://example.com Version: 1 Chain ID: 8453 Nonce: ${nonce} Issued At: ${new Date().toISOString()}`; const signature = await wallet.signMessage(message);
const provider = new ethers.JsonRpcProvider('https://mainnet.base.org'); const connectedWallet = wallet.connect(provider); const tx = await connectedWallet.sendTransaction({ to: recipientAddress, value: ethers.parseEther('0.001') }); const receipt = await tx.wait(); console.log('TX Hash:', tx.hash);
ScriptDescriptioncreate-wallet.js --envCreate wallet, output as env vars (recommended)create-wallet.js --managed [name]Create wallet, save to file (opt-in)create-wallet.js --jsonCreate wallet, output as JSONbasemail-register.js [name]Register for BaseMail emailcheck-balance.js [address]Check wallet balance
Register for a @basemail.ai email using your wallet signature. # If using environment variable: PRIVATE_KEY="0x..." node scripts/basemail-register.js # If using managed wallet: node scripts/basemail-register.js my-agent
NetworkChain IDRPC URLBase Mainnet8453https://mainnet.base.orgBase Sepolia84532https://sepolia.base.org
Operations are logged to ~/.base-wallet/audit.log.
// โ Recommended: Use environment variables const privateKey = process.env.PRIVATE_KEY; if (!privateKey) { throw new Error('PRIVATE_KEY environment variable not set'); } const wallet = new ethers.Wallet(privateKey); // โ Avoid: Storing private keys in code or files If you must store to file (not recommended): const fs = require('fs'); const path = require('path'); // Store with restricted permissions const filepath = path.join(process.env.HOME, '.openclaw', 'wallets', 'wallet.json'); fs.writeFileSync(filepath, JSON.stringify({ address: wallet.address, // Only store if absolutely necessary privateKey: wallet.privateKey }), { mode: 0o600 }); // Owner read/write only
Add to your project's .gitignore: # Wallet files - NEVER commit! .openclaw/ *.wallet.json *.mnemonic private-key*
npm install ethers
๐ Security: Changed create-wallet.js to opt-in file storage โจ Added --env mode (recommended) ๐ Added audit logging โ ๏ธ Removed console.log(privateKey) from examples ๐ Enhanced security documentation
๐ Initial release
Messaging, meetings, inboxes, CRM, and teammate communication surfaces.
Largest current source with strong distribution and engagement signals.