Open source · Self-hosted · Apache-2.0
The open-source alternative to AgentMail. One docker compose up on your own
VPS gives every agent you run unlimited real mailboxes on your own domain — over REST and
MCP — with OTP and verification-link extraction built in.
WORKS WITH ANY MCP CLIENT — AND ANYTHING THAT CAN CURL
Live workflow
This is the actual loop your agent runs: create an identity, trigger a signup, wait for the mail, read the code. Typed out for you below — no video, no mockup.
Real mail, really parsed
Extraction is tested against the mails that real services send — US and Chinese providers alike. Hover a card to read it.
Why it exists
One catch-all mailbox, unlimited anything@yourdomain addresses. No provisioning, no per-inbox cost, no caps.
Every identity gets its own oa_… token that can only read and send as that address. Your admin key never touches an agent.
Long-poll an inbox until the signup mail lands — codes and verification links come out parsed. Built for automated signups.
Per-identity send rate limits (20/hour default) and automatic retention (30 days default). A leaked token can't become a spam cannon.
Send directly from your VPS, or route outbound through Amazon SES or any SMTP relay with one env var. Your reputation, your choice.
dns-records.sh prints your exact DNS records. doctor.sh runs a 13-point deliverability check before agents depend on it.
Open /ui, paste a token, watch every agent inbox from your browser — admin overview, OTP codes surfaced, read/unread marking, token rotation, and identity management with custom addresses. Sandboxed HTML previews included.
How it works
Clone, set three env vars, bring the stack up. Two containers: docker-mailserver plus the API.
docker compose up -d The wizard prints the exact A / MX / SPF / DKIM / DMARC records to paste into your provider.
./deploy/dns-records.sh Thirteen checks: DNS, TLS, port 25, blocklists, PTR. Fix what it flags before your agents depend on it.
./deploy/doctor.sh One API call mints an address and its scoped token. Hand the token to your agent — never the admin key.
POST /v1/identities → fox-k7d2@yourdomain The agent waits on the inbox; the signup mail arrives; the OTP comes back parsed and ready to type.
mail_wait_for → otp.codes[0] POST /v1/identities — mint an address + scoped tokenGET /v1/identities — list every identity you ownPOST /v1/identities/:a/token — rotate (revoke) a tokenDELETE /v1/identities/:a — retire an identityGET /v1/messages — list an inboxGET /v1/messages/:id — full mail + parsed OTPPOST /v1/messages/wait — long-poll for new mailPOST /v1/messages/:id/seen — mark read / unreadPOST /v1/send — send as any identity you ownmail_new_identitymail_list_identitiesmail_list_messagesmail_read_messagemail_wait_formail_sendmail_mark_seenThe core trick
Agents shouldn't parse MIME. Every message comes back with codes and action links already extracted — and the raw text and HTML right there when extraction isn't enough.
Compared to the alternatives
| openagent.email | AgentMail | MailSlurp | |
|---|---|---|---|
| Open source | ✓ Apache-2.0 | ✗ | ✗ |
| Self-hosted | ✓ | ✗ | ✗ |
| Price | Flat VPS cost (~$5/mo) | Per-inbox subscription | Usage-based subscription |
| Unlimited inboxes | ✓ catch-all | Paid tiers | Paid tiers |
| MCP-native | ✓ | ✓ | ✗ REST/SDKs |
| OTP / link extraction | ✓ | ✓ | ✓ |
| Data leaves your infra | Never | Always | Always |
| You run a server | Yes — that's the point | No | No |
To be fair: if you never want to touch a VPS, a hosted service is genuinely easier. We think owning the mailbox — the OTPs, the links, the reputation — is worth ten minutes of setup. Your call.
Before you ask
Measured on our own production instance, sitting idle: the whole stack — mail server, API, everything — sips about 190 MB of RAM and roughly zero CPU.
Works with the defaults. That's a $5/mo VPS — or a $10–15/year deal box.
Headroom to turn on spam filtering (SpamAssassin) and never think about it again.
ClamAV alone eats ~1 GB, so it ships off by default. Agent mail rarely needs it.
The real prerequisite isn't size — it's port 25. AWS, GCP, Azure, DigitalOcean and Vultr block it by default (some open it on request). Check before you buy — or route outbound through a relay like Amazon SES and skip the fight entirely.
FAQ
Yes. openagent.email is open source under the Apache-2.0 license — no paid tier, no usage limits, no per-inbox pricing. The only thing you pay for is the server you run it on, and a $5/mo VPS is enough.
AgentMail is a hosted service with usage-based pricing. openagent.email is software you run yourself: unlimited inboxes on your own domain, and your mail never leaves a machine you own. See the full comparison at /alternatives/agentmail.
Yes — any domain you own, about $10/year. One domain gives every agent you run its own address (agent1@yourdomain, agent2@yourdomain, …). The docs walk through the DNS records step by step.
Anything that speaks MCP — Claude Code, Claude Desktop, Cursor, and friends — via the @openagentemail/mcp server, plus a plain HTTPS REST API for everything else.
Deliverability depends on your own IP and domain reputation, which the deliverability guide covers: SPF, DKIM and DMARC are set up for you, and you can relay outbound through Amazon SES if your VPS provider blocks port 25.
Yes. Every install ships a built-in dashboard at /ui where you can see all your agent identities, read their inboxes, mark messages read or unread, create new identities with custom addresses, rotate tokens, and delete identities.
Open source
The API, the MCP server, the deploy tooling — all public, all auditable. Run it on a Raspberry Pi or a fleet. Contribute back when you want to.