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.
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 tokenPOST /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/send — send as any identity you ownmail_new_identitymail_list_identitiesmail_list_messagesmail_read_messagemail_wait_formail_sendThe 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.
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.