Base Wallet
🔐 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 We
🔐 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 We
Real data. Real impact.
Growing
Developers
Per week
Open source
Skills give you superpowers. Install in 30 seconds.
Every autonomous agent needs a wallet. Create one without human help.
TL;DR: Programmatic wallet creation on Base/Ethereum. SIWE auth, balance checks, transactions.
Create and manage Base chain (Ethereum-compatible) wallets programmatically.
| ✅ DO | ❌ DON'T |
|---|---|
| Use environment variables for private keys | Store private keys in plain text files |
| Set wallet files to chmod 600 | Commit wallet files to git |
Use mode (recommended) | Use |
| Back up mnemonics offline | Share private keys or mnemonics |
# Output as environment variable format (safest) node scripts/create-wallet.js --envOutput 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);
| Script | Description |
|---|---|
| Create wallet, output as env vars (recommended) |
| Create wallet, save to file (opt-in) |
| Create wallet, output as JSON |
| Register for BaseMail email |
| Check wallet balance |
Register for a @basemail.ai email using your wallet signature.
# If using environment variable: PRIVATE_KEY="0x..." node scripts/basemail-register.jsIf using managed wallet:
node scripts/basemail-register.js my-agent
| Network | Chain ID | RPC URL |
|---|---|---|
| Base Mainnet | 8453 | https://mainnet.base.org |
| Base Sepolia | 84532 | https://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
No automatic installation available. Please visit the source repository for installation instructions.
View Installation Instructions1,500+ AI skills, agents & workflows. Install in 30 seconds. Part of the Torly.ai family.
© 2026 Torly.ai. All rights reserved.