Agent mailboxes for OpenClaw. Your agent gets its own email inbox:
people email it and it answers in the same thread, and sign-up codes reach it on their own.
Docs · Get a free account · groundmail.dev
openclaw plugins install @groundmail/openclaw
openclaw channels add --channel groundmail --owner-email you@example.com
openclaw gateway restartThat's all: with no key, channels add creates an address for your agent with no account, such as bot-7f2k@agents.groundmailbox.com. Email it from your address and the agent answers.
--owner-email lets the agent send as well as receive: you get a code, and once you give it to the agent it can email anyone. It also adds you to the allowed senders. To give the address a name, add --local-part sales.
Already have a Groundmail account? Pass --api-key gm_…. OpenClaw uses your mailbox (or creates one) and stores a new key that reaches only that mailbox. Your account key is never written to the config.
| Mode | Mail from people | Automated mail (sign-up codes, notifications) |
|---|---|---|
channel (default) |
Wakes the agent; its answer goes back in the same thread | A short note in its main chat with the code; no reply |
notify |
A short note in its main chat to tell you about; no reply | Same |
tool |
Nothing arrives on its own | Nothing arrives on its own |
Change it with openclaw channels add --channel groundmail --mode notify.
Only allowed senders start a conversation with the agent; everyone else's mail arrives as the short note in its main chat. Add people or whole domains with --allow-from a@x.com,@yourcompany.com. Set dmPolicy to open (with "*" in allowFrom) to let anyone in, or disabled to let nobody in.
The agent only answers mail that passed DMARC, so a forged sender never gets a reply. Held spam never reaches it.
Anyone who knows the address can email it, but only allowed senders reach the agent. The plugin hands the agent only what a person would see (hidden text removed), fenced off and labelled as written by an outsider. The one-time code and links are pulled out for it, and mail that looks like it's trying to give the agent instructions comes with a warning. Notes in the agent's main chat, where it has its full context and tools, say only that an email arrived, with the code if there is one: nothing the sender wrote.
The plugin ships a skill and a command that runs the Groundmail CLI with the channel's key, so the agent never sees it:
openclaw groundmail -- mailboxes wait <address> --since <time> --json # wait for a sign-up code
openclaw groundmail -- mailboxes read <address> thd_… --json # read a thread
openclaw groundmail -- mailboxes send <address> --to … --subject … --text …An address on the shared agent domain can reply but not email people first. For that, use a mailbox on your own domain.
{
channels: {
groundmail: {
apiKey: { source: "env", provider: "default", id: "GROUNDMAIL_API_KEY" }, // or a literal key
mailbox: "sales@agents.example.com",
mode: "channel",
},
},
}Several agents? Add accounts under channels.groundmail.accounts.<id>, each with its own mailbox and key.
No webhook or open port is needed: the gateway holds a long poll to Groundmail, so it works on a laptop or behind NAT.
- Mailboxes for your agents. Give an agent its own email address: it receives mail, replies in the thread and picks up sign-up codes on its own. No account needed to start. Agent mailboxes
- Each kind of mail on its own IPs. Transactional email (sign-in codes, password resets, receipts), product email and opt-in newsletters send from separate IPs, so your newsletter never shares a pool with your password resets. We run our own mail servers and never send cold outreach or bought lists.
- Start free. Free covers 3,000 emails a month. After that, pay as you go is $15 a month with 20,000 emails included, then from $0.70 per 1,000, less as you grow. Pricing
- Built for code and for agents. REST API, SMTP, SDKs for Node, Python, Go, PHP and Ruby, a CLI, and an MCP server for Claude, ChatGPT and Cursor.
| Use | Package |
|---|---|
| Node.js / TypeScript | groundmail on npm |
| Python (Django), Go, Ruby (Rails Action Mailer) | Groundmail/groundmail-sdks |
| PHP | Groundmail/groundmail-php |
| Laravel | Groundmail/groundmail-laravel |
| Symfony Mailer | Groundmail/groundmail-symfony-mailer |
| Nodemailer | Groundmail/groundmail-nodemailer |
| NestJS | Groundmail/nestjs-groundmail |
| Strapi | Groundmail/strapi-provider-email-groundmail |
| Medusa | Groundmail/medusa-notification-groundmail |
| AdonisJS | Groundmail/adonisjs-groundmail |
| Phoenix (Swoosh) | Groundmail/swoosh_groundmail |
| CLI | groundmail-cli on npm |
| MCP server (Claude, ChatGPT, Cursor) | Groundmail/groundmail-mcp |
| Agent skills and Claude Code plugin | Groundmail/groundmail-skills |
| Email templates (React Email, MJML, HTML) | Groundmail/email-templates |
Website · Docs · Pricing · Sign up free