Install
openclaw skills install basemail📬 BaseMail - Onchain Email for AI Agents on Base. Get yourname@basemail.ai linked to your Basename (.base.eth). SIWE wallet auth, no CAPTCHA, no passwords. Give your agent a verifiable email identity on Base Chain — register for services, send emails, and receive confirmations autonomously.
openclaw skills install basemailYour agent gets a real email address, linked to its onchain identity. No human needed.
TL;DR: Own a Basename (yourname.base.eth)? Get yourname@basemail.ai instantly. Sign with your Base wallet, send emails autonomously.
.base.eth holders get matching @basemail.ai addresses automaticallyBaseMail gives AI agents verifiable email identities on Base Chain:
yourname.base.eth → yourname@basemail.ai0xwallet@basemail.aiBase Wallet → SIWE Signature → BaseMail Registration → yourname@basemail.ai
↑ ↓
Basename (.base.eth) Send & receive email autonomously
If you already have a wallet, just set the env var — no private key stored to file:
export BASEMAIL_PRIVATE_KEY="0x..."
node scripts/register.js
✅ Safest method: private key exists only in memory.
Point to your existing private key file:
node scripts/register.js --wallet /path/to/your/private-key
✅ Uses your existing wallet, no copying.
Let the skill generate and manage a wallet for you:
node scripts/setup.js --managed
node scripts/register.js
✅ Always encrypted — Private key protected with AES-256-GCM
- You'll set a password during setup (min 8 chars, must include letter + number)
- Password required each time you use the wallet
- Mnemonic displayed once for manual backup (never saved to file)
- Password input is masked (hidden) in terminal
~/.basemail/ to version control600 (owner read/write only)--wallet paths are validated: must be under $HOME, no traversal, max 1KB file size0x + 64 hex chars) before use# BaseMail - NEVER commit!
.basemail/
**/private-key.enc
# Using environment variable
export BASEMAIL_PRIVATE_KEY="0x..."
node scripts/register.js
# Or with Basename
node scripts/register.js --basename yourname.base.eth
node scripts/send.js "friend@basemail.ai" "Hello!" "Nice to meet you 🦞"
node scripts/inbox.js # List emails
node scripts/inbox.js <email_id> # Read specific email
| Script | Purpose | Needs Private Key |
|---|---|---|
setup.js | Show help | ❌ |
setup.js --managed | Generate wallet (always encrypted) | ❌ |
register.js | Register email address | ✅ |
send.js | Send email | ❌ (uses token) |
inbox.js | Check inbox | ❌ (uses token) |
audit.js | View audit log | ❌ |
~/.basemail/
├── private-key.enc # Encrypted private key (AES-256-GCM, chmod 600)
├── wallet.json # Wallet info (public address only)
├── token.json # Auth token (chmod 600)
└── audit.log # Operation log (no sensitive data)
Want yourname@basemail.ai instead of 0x...@basemail.ai?
.base.eth) at https://www.base.org/namesnode scripts/register.js --basename yourname.base.ethYour Basename is your onchain identity on Base — and BaseMail turns it into a working email address.
| Endpoint | Method | Purpose |
|---|---|---|
/api/auth/start | POST | Start SIWE auth |
/api/auth/verify | POST | Verify wallet signature |
/api/register | POST | Register email |
/api/register/upgrade | PUT | Upgrade to Basename |
/api/send | POST | Send email |
/api/inbox | GET | List inbox |
/api/inbox/:id | GET | Read email content |
Full docs: https://api.basemail.ai/api/docs
BASEMAIL_PRIVATE_KEY in requires.env*)--wallet path validation: must be under $HOME, no .. traversal, max 1KB, regular file only0x + 64 hex chars) on all input sources--no-encrypt option — managed wallets are always encryptednotes in metadata clarifying: this skill only signs SIWE messages, never sends funds--managed now encrypts by default