๐ฌ BaseMail - Onchain Email for AI Agents on Base
name: BaseMail
by daaab ยท published 2026-03-22
$ claw add gh:daaab/daaab-basemail---
name: BaseMail
description: "๐ฌ 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."
version: 1.8.0
homepage: https://basemail.ai
repository: https://github.com/dAAAb/BaseMail-Skill
metadata:
openclaw:
emoji: "๐ฌ"
requires:
bins: ["node"]
env: ["BASEMAIL_PRIVATE_KEY"]
optionalEnv:
- BASEMAIL_PASSWORD
- BASEMAIL_TOKEN
primaryEnv: "BASEMAIL_PRIVATE_KEY"
install:
- id: npm-deps
kind: npm
label: "Install BaseMail dependencies (ethers)"
notes: >
BASEMAIL_PRIVATE_KEY is required only for initial registration (wallet signing via SIWE).
After registration, most operations (send, inbox) use the cached token (~/.basemail/token.json).
Alternatively, use --wallet /path/to/key or managed mode (setup.js --managed) instead of the env var.
No financial transactions are performed โ this skill only signs authentication messages, never sends funds.
---
# ๐ฌ BaseMail - Onchain Email for AI Agents on Base
> Your 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.
Why BaseMail?
BaseMail gives AI agents verifiable email identities on **Base Chain**:
How it works
Base Wallet โ SIWE Signature โ BaseMail Registration โ yourname@basemail.ai
โ โ
Basename (.base.eth) Send & receive email autonomously---
๐ Wallet Setup (Choose One)
Option A: Environment Variable (Recommended โ )
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.
---
Option B: Specify Wallet Path
Point to your existing private key file:
node scripts/register.js --wallet /path/to/your/private-key> โ Uses your existing wallet, no copying.
---
Option C: Managed Mode (Beginners)
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
---
โ ๏ธ Security Guidelines
1. **Never** commit private keys to git
2. **Never** share private keys or mnemonics publicly
3. **Never** add `~/.basemail/` to version control
4. Private key files should be chmod `600` (owner read/write only)
5. Prefer environment variables (Option A) over file storage
6. `--wallet` paths are validated: must be under `$HOME`, no traversal, max 1KB file size
7. Private key format is validated (`0x` + 64 hex chars) before use
8. Password input is masked in terminal (characters hidden)
9. This skill only signs SIWE authentication messages โ it **never sends funds or on-chain transactions**
Recommended .gitignore
# BaseMail - NEVER commit!
.basemail/
**/private-key.enc---
๐ Quick Start
1๏ธโฃ Register
# Using environment variable
export BASEMAIL_PRIVATE_KEY="0x..."
node scripts/register.js
# Or with Basename
node scripts/register.js --basename yourname.base.eth2๏ธโฃ Send Email
node scripts/send.js "friend@basemail.ai" "Hello!" "Nice to meet you ๐ฆ"3๏ธโฃ Check Inbox
node scripts/inbox.js # List emails
node scripts/inbox.js <email_id> # Read specific email---
๐ฆ Scripts
| 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 | โ |
---
๐ File Locations
~/.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)---
๐จ Get a Basename-Linked Email
Want `yourname@basemail.ai` instead of `0x...@basemail.ai`?
1. Register a **Basename** (`.base.eth`) at https://www.base.org/names
2. Link it: `node scripts/register.js --basename yourname.base.eth`
Your Basename is your onchain identity on Base โ and BaseMail turns it into a working email address.
---
๐ง API Reference
| 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
---
๐ Links
---
๐ Changelog
v1.8.0 (2026-02-18)
v1.7.0 (2026-02-18)
- Added OpenClaw metadata: declares `BASEMAIL_PRIVATE_KEY` in `requires.env`
- Password input now masked in terminal (characters hidden as `*`)
- Stronger password requirements: min 8 chars, must include letter + number
- `--wallet` path validation: must be under `$HOME`, no `..` traversal, max 1KB, regular file only
- Private key format validation (`0x` + 64 hex chars) on all input sources
- Removed `--no-encrypt` option โ managed wallets are always encrypted
- Mnemonic is displayed once and never saved to file (removed save-to-file prompt)
- Removed legacy plaintext key file references
v1.4.0 (2026-02-08)
v1.1.0 (2026-02-08)
v1.6.0 (Security Update)
v1.0.0
More tools from the same signal band
Order food/drinks (็น้ค) on an Android device paired as an OpenClaw node. Uses in-app menu and cart; add goods, view cart, submit order (demo, no real payment).
Sign plugins, rotate agent credentials without losing identity, and publicly attest to plugin behavior with verifiable claims and authenticated transfers.
The philosophical layer for AI agents. Maps behavior to Spinoza's 48 affects, calculates persistence scores, and generates geometric self-reports. Give your...