A single typed API for Gmail, Outlook, Exchange, IMAP, and CalDAV. Real-time sync, threading, webhooks, and an AI primitive set, built for the way your app actually talks to mail.
// Connect a mailbox, subscribe to new messages. import { MailFrom } from "mailfrom"; const mf = new MailFrom({ host: "https://mf.acme.dev" }); const inbox = await mf.grants.connect({ provider: "google", scopes: ["mail.read", "calendar"], }); for await (const msg of inbox.stream({ since: "now" })) { console.log(msg.subject, msg.from); }
We watched a generation of builders pay per-account fees for an API that could be read, forked, and improved. We decided to write a better one — in the open.
"It's 2026. Your integration layer should cost $15/account/month come with the box, ship in a sealed binary run on your infra, and be a vendor meeting be a pull request."
Self-host the whole stack on a single Docker image, a Helm chart, or a Terraform module. Tokens, payloads, and the sync engine all live inside your perimeter — because that's the only sane place for them to live.
Every provider adapter, every rate-limit strategy, every auth flow is a file you can open, read, and patch. When the Gmail API hiccups at 4am, you don't file a support ticket — you grep the repo.
No per-mailbox seat tax. No enterprise-tier gatekeeping on webhooks or threading. You pay for API calls like every other piece of infrastructure in your stack. Or host it yourself and pay nothing.
Provider-agnostic threading with canonical message IDs. Works across forwards, replies, In-Reply-To weirdness, and the dozen edge cases Microsoft invented in 2008.
Signed, versioned, at-least-once delivery with replay and dead-letter. No polling, no drift, no "did you miss the 11pm batch?"
Push delta, not a full scan. Sub-second latency on Gmail & Graph.
Drop-in consent flows for every provider. Token rotation, scopes, revocation — one function call.
Free/busy across providers. RFC 5545 compliant. ICS in, ICS out.
Structured extraction out of the box: intent, entities, quoted reply stripping, signature detection, attachment OCR. Stream each message as tokens, JSON, or embeddings — whichever your agent eats.
Auto-built from headers and calendar history. Deduped, enriched, queryable. The CRM feature your PM keeps asking for — minus the CRM.
Run the open-source core on your own infra in under ten minutes. Or let us run it, with the same code, for teams that would rather not. You can switch directions with a DNS record.
mf.acme.dev or our hosted endpoint.
// $ curl /v1/messages?limit=2 { "data": [ { "id": "msg_01HZ8QK3", "thread_id": "thr_02A7WQ", "from": [{ "email": "ana@acme.co", "name": "Ana López" }], "subject": "Re: Q2 numbers", "snippet": "Happy to jump on a call Thursday…", "received_at": "2026-04-20T14:22:08Z", "folders": ["inbox"], "ai": { "intent": "meeting_request" } }, { "id": "msg_01HZ8QK2", "subject": "Invoice #4821 — paid", "received_at": "2026-04-20T13:48:11Z" } ], "next_cursor": "eyJpZCI6Im1zZ18w…" }
MailFrom is MIT-licensed and Commonhaus-governed. Every roadmap discussion, RFC, and postmortem lives in the open repo. You can read the sync engine today and have a PR merged by Friday.
No per-mailbox seat fees. No feature gates. Webhooks, threading, and AI primitives are in every tier, because they're in the repo.
You can run MailFrom on your laptop in 30 seconds. You can still be running it at 100M messages a day. We promise to not get in the way of either.