Email infrastructure on your own Amazon SES

The open-source email platform that connects to your AWS account. Send, receive, contacts, sequences and an MCP server for your agents, all behind your own domain. Pay Amazon $0.10 per thousand. Nothing else.

SendInboxContactsSequencesMCPDomains
app.openses.email/acme/emails
Emails / em_01JC9X
Your invoice #1042queued
From
Acme <billing@acme.com>
To
jane@example.com
Region
us-east-1
Tags
plan:pro · invoice:1042
Idempotency
inv-1042
Eventsses 0100019…
  1. waiting for SES…
acme.com
DKIM · MAIL FROM
Bounce rate
0.21%
Quota today
12,480 / 50,000

Works with every Amazon SES region, in your account

us-east-1N. Virginia
us-east-2Ohio
us-west-1N. California
us-west-2Oregon
eu-west-1Ireland
eu-west-2London
eu-west-3Paris
eu-central-1Frankfurt
eu-north-1Stockholm
ap-south-1Mumbai
ap-southeast-1Singapore
ap-southeast-2Sydney
ap-northeast-1Tokyo
ap-northeast-2Seoul
ca-central-1Canada
sa-east-1São Paulo
me-south-1Bahrain
af-south-1Cape Town
il-central-1Tel Aviv
ap-east-1Hong Kong
us-east-1N. Virginia
us-east-2Ohio
us-west-1N. California
us-west-2Oregon
eu-west-1Ireland
eu-west-2London
eu-west-3Paris
eu-central-1Frankfurt
eu-north-1Stockholm
ap-south-1Mumbai
ap-southeast-1Singapore
ap-southeast-2Sydney
ap-northeast-1Tokyo
ap-northeast-2Seoul
ca-central-1Canada
sa-east-1São Paulo
me-south-1Bahrain
af-south-1Cape Town
il-central-1Tel Aviv
ap-east-1Hong Kong

A full email service for your product, not five tools. Hosted APIs resell infrastructure like SES at a 10× markup and still make you bolt on an inbox, a CRM and an automation tool. OpenSES gives you send, receive, contacts, sequences and an MCP server on the account you already have, so the domains, the reputation and the bill stay yours.

How it works

Connected to your AWS account in four minutes

No queues to operate, no keys to paste if you deploy into your own account. OpenSES talks to SES directly and listens for events through one SNS subscription it creates for you.

01

Connect AWS

A least-privilege IAM role from our CloudFormation link, or access keys. Pick the regions you send from.

02

Verify a domain

Three DKIM CNAMEs and a MAIL FROM record. Existing SES identities are imported already verified.

03

Send and receive

REST API, SDKs, CLI and MCP for sending. One MX record and the same domain receives into an inbox.

04

Grow from there

Add contacts, run onboarding sequences, and let your agent handle replies. Every event in your log and webhooks.

Send API

It starts with one request

HTML, text, React Email or a template with variables. Idempotency keys so retries never double-send, tags for search, scheduling, attachments, reply-to and custom headers. Batch up to 10k templated messages in one call via SES bulk sending.

  • Idempotency-Key honoured 24h
  • Schedule and cancel
  • Attachments up to 40 MB
  • React Email support
  • Rate-limited to your SES quota
  • OpenAPI 3.1 from every instance
Read the API docs
import { OpenSES } from "openses";
const openses = new OpenSES(process.env.OPENSES_API_KEY);

await openses.emails.send({
  from: "Acme <billing@acme.com>",
  to: "jane@example.com",
  subject: "Your invoice #1042",
  react: <Invoice id={1042} />,
  tags: { plan: "pro" },
  idempotencyKey: "inv-1042",
});
acme.com
Verified · us-east-1
  • CNAMEabc123._domainkey.acme.com
  • CNAMEdef456._domainkey.acme.com
  • CNAMEghi789._domainkey.acme.com
  • MXsend.acme.com
  • TXTsend.acme.com
Domains

DKIM, SPF and DMARC without the spreadsheet

Easy DKIM by default so private keys never leave SES, a custom MAIL FROM so SPF aligns, a DMARC record suggested for you, and live DNS checks that flip the domain to verified the moment Amazon does. On Cloudflare, one click publishes everything.

  • Easy DKIM or BYODKIM
  • Custom MAIL FROM
  • DMARC guidance
  • Imports existing identities
  • Per-region identities
  • One-click Cloudflare DNS
Inbox

Receive on your apex or a subdomain

One MX record and your product has an inbox. SES inbound delivers to a bucket in your account; OpenSES turns each message into a thread you can read in the dashboard, reply to from the API, route with forwarding rules, or hand to your agent. Replies to sequences land here and stop the sequence automatically.

  • acme.com or mail.acme.com
  • Threads, labels, drafts, search
  • Reply and forward from the API
  • Forwarding rules to people or Slack
  • Attachments stored in your S3
  • Inbound events to webhooks
Inbox mail.acme.com
MX verified
  • Jane CooperRe: Your invoice #1042 — Paid just now, thanks for the quick turnaround.2m
  • GitHub[acme/app] Deploy succeeded — Production deploy 4f2a9c finished in 1m 12s.18m
  • StripePayout of $4,120.00 is on its way — Expected to arrive Nov 7.1h
  • support@Fwd: Can I change my plan? — Forwarded by rule: billing → #billing3h
Reply from the dashboard, the API, or your agent over MCP.
Onboarding sequence
Active · stops on reply
  1. day 0Welcome to Acme1,240 sent
  2. +2 daysSet up your first domain1,102 sent
  3. +5 daysNeed a hand? Reply to this email860 sent
  4. +12 daysYour trial ends in 48h512 sent
Enrolled
1,240
Replied
214
Unsubscribed
9
Contacts and sequences

Onboarding and follow-ups without a marketing suite

Contacts with the properties your product cares about and a consent state per topic. Sequences are small automations: enroll from the API, a form or an inbound reply, set the delays, and OpenSES sends each step, stops when the person replies, and honours every unsubscribe and bounce.

  • Custom properties and topics
  • Enroll via API, form or reply
  • Delays, conditions, stop on reply
  • One-click and List-Unsubscribe
  • Broadcasts to a segment
  • CSV import, sync from your DB
MCP server

Give your agents a real email address

Every instance ships an MCP server. Claude, Cursor, or the agent inside your own product can send, search the log, read and answer inbox threads, create contacts and enroll them in sequences, with the same scoped API keys you use everywhere else. Your domain, your SES, your audit log.

  • send, search, read, reply tools
  • contacts and sequences tools
  • Scoped by API key
  • OAuth for hosted agents
  • Works with Claude and Cursor
  • Every call in the audit log
MCP · mcp.acme.com
14 tools · key os_live_…
  • Reply to Jane that the invoice is settled and enroll her in the onboarding sequence.
  • inbox.reply · thread th_8f21 · from billing@acme.com
  • contacts.upsert · jane@example.com · plan: pro
  • sequences.enroll · onboarding · jane@example.com
  • Done. Replied in the thread and enrolled Jane; first step goes out now, next in 2 days.
Observability

Everything the SES console should have been

SES is the best-priced email service in the world and one of the hardest to look at. OpenSES turns its events into a log you can search, webhooks you can trust, and health you can act on.

https://api.acme.com/webhooks/opensesHMAC-SHA256
  • email.delivered200142 ms
  • email.opened20098 ms
  • email.bounced500 → retry 21.2 s
  • email.clicked200110 ms

Webhooks with receipts

HMAC-SHA256 signed, timestamped, retried with backoff for 24 hours, replayable from the dashboard. Same event names across SDKs and webhooks.

Account · us-east-1 Production
  • Daily quota12,480 / 50,000
  • Send rate14 / s
  • Bounce rate0.21% · < 5%
  • Complaint rate0.01% · < 0.1%
eu-central-1 is still in the SES sandbox. Request production access →

Account health, per region

Sandbox status, quota, send rate, bounce and complaint rates from CloudWatch, and a guided production-access request with a pre-written justification.

Suppression list

Synced both ways with the SES account-level list. Hard bounces and complaints never get a second send.

Templates

HTML with variables, previews and test sends. Keep them in git; a visual editor is on the roadmap.

Scheduling and batch

Send later, cancel, or push 10k templated messages in one call at exactly your SES rate.

Workspaces

One per product or client, each with its own AWS connection, domains, inboxes, keys and members.

Scoped API keys

os_live_ and os_test_ prefixes, hashed at rest, read or write scopes, rotation without downtime.

Open source

AGPL-3.0, the same code as Cloud. Read it before you trust it with your email.

Do the math

What you would pay for the same emails

Move the slider. The OpenSES line is what Amazon charges you; our Cloud plans are flat and never scale with volume.

Emails per month
100k
  • OpenSES + your SES
    $10
  • Resend
    $90
  • SendGrid
    $35
  • Postmark
    $115

You keep about $25 a month versus the cheapest hosted API at this volume, and the domains, reputation and logs stay in your AWS account.

Public list prices as of November 2026, before taxes and add-ons. OpenSES Cloud plans are flat and never scale with volume.

Two ways to run it

Same product. You choose who operates it.

Both talk to your SES. Cloud is for teams that want zero ops; self-host is for teams that want zero third parties.

OpenSES Cloud

We host the console, the database and the upgrades. You connect an IAM role with an External ID; we never hold your keys. Fourteen days free, flat monthly plans after.

  • No servers, no upgrades, daily backups
  • Cross-account IAM role, revocable in one click
  • Every SES region, team roles, audit log
  • 14-day trial, then $19 or $99 a month

Self-host

Deploys into your own AWS account: a Lambda, a bucket, a CloudFront URL, any Postgres. No Docker, nothing running when idle. Every feature, no license key, AGPL-3.0.

  • npx openses deploy, then a setup wizard
  • The Lambda's own role talks to SES, no keys stored
  • Your data in your Postgres, your retention rules
  • Free forever, community support
Built in the open

Read the code before you trust it with your email

OpenSES is AGPL-3.0 licensed with no enterprise edition and no hidden features. Issues, roadmap and pull requests live on GitHub. Cloud exists to fund the project, not to gate it.

terminal
# self-host: deploy into your own AWS account
git clone https://github.com/openses/openses && cd openses
npx openses init && npx openses deploy

# update
git pull && npx openses deploy

# → https://mail.acme.com (setup wizard)
FAQ

Questions, answered

Own your email stack.

Connect your AWS account and send your first email in minutes. Keep the $0.10.