Open source · Self-hosted · Receive-first

A secondary inbox built for developers

Spin up a programmable email address in seconds. Programmable Inbox receives, categorizes, and extracts every message — grab the OTP over an API, route mail with a rule, or read it in the UI. Open source and self-hostable, so your mail never leaves your infrastructure.

signup.test.ts
// 1. Create a programmable address
const inbox = await client.inboxes.create({
  address: '[email protected]',
})

// 2. Your test triggers a signup email…

// 3. Grab the verification code in one call
const { code } = await client.inboxes.otp(inbox.id)
//    → "418902"   ✓ no polling, no regex
Address provisioned
< 1s
Last code, one call
/otp
Auto categories
5+
Open source license
MIT

What you get

The inbox layer, done once and done right

Stop rebuilding the same receive → parse → store → automate plumbing on top of a forwarder. Programmable Inbox is a real, persistent secondary inbox you address in code.

  • Addresses in seconds

    Create real, persistent receiving addresses via API or UI — one per test, environment, service, or signup. No DNS headaches, no MX wrangling, no per-inbox onboarding.

  • Everything extracted

    Every message is mined for the useful bits — OTP and verification codes, magic links, and CTA links — surfaced as structured fields. No regex, no parsing raw MIME on your side.

  • Categorized automatically

    Inbound mail is classified out of the box — OTP, promotional, time-sensitive, updates, notifications — so you can filter and route on meaning, not brittle keyword matches.

  • Automate on arrival

    Set rules that run on every message: when the subject or body matches, contains a code, or lands in a category — forward it to an address or fire a webhook. No server to stand up.

  • API-first, always

    Every message is available over a clean REST API — anything the UI shows, you can pull. Plus convenience endpoints like /otp to grab the last verification code in a single call.

  • Own your data

    Open source and self-hostable. Run the whole pipeline on your own infrastructure so OTPs, receipts, and PII never leave your box. No lock-in, no paywalled core features.

Use cases

What developers build with it

One programmable secondary inbox — receive, filter, extract, automate — for tests, automations, and the mail you'd rather keep out of your primary inbox.

  • CI & testing

    Automate 2FA & OTP signup flows

    Give every test run its own address, trigger the signup, and read the verification code straight back with a single GET /otp — no mailbox scraping, no polling, no regex. End-to-end auth tests that just work in CI.

  • Parse & route

    Receipts, alerts & vendor mail

    Point invoices, infrastructure alerts, and vendor notifications at a persistent address. Programmable Inbox categorizes each message and — via a rule — forwards it or fires a webhook so your systems stay in sync automatically.

  • Secondary inbox

    A clean inbox for signups & noise

    Hand every service its own address and keep the promo, notification, and update noise out of your primary inbox. Everything stays queryable over the API — and self-hosted, so it's genuinely yours.

  • Also for agents

    A mailbox your AI agent can operate

    Because it's API-first, the same inbox doubles as an agent's mailbox — created programmatically, read and replied to over REST. Not our headline, but it works: agents get threading, categories, and extracted codes for free.

REST API

Every message, one API call away

Everything the UI shows is available over a documented REST API — with the codes and links already extracted, and convenience endpoints like /otp for the exact thing you came for.

POST /api/v1/emailInbox
Authorization: Bearer YOUR_API_KEY

{
  "name": "CI signup",
  "address": "[email protected]",
  "organizationId": "org_abc123"
}

// Response
{
  "data": {
    "id": "inbox_xyz789",
    "address": "[email protected]",
    "createdAt": "2026-07-13T12:00:00Z"
  }
}

Why us

Not a forwarder. A real inbox.

The big providers are built to send — inbound is a stateless forwarder that POSTs your mail once and forgets it. Programmable Inbox keeps, categorizes, extracts, and lets you query and automate every message. And you can self-host the whole thing.

CapabilityProgrammable InboxPostmarkSendGridMailosaur
Receive-first (inbound is the product)
Persistent, queryable inbox (not a 3-day buffer)
Auto-categorization (OTP, promo, updates…)
OTP / code / link extraction
/otp ‘last code’ endpoint
Automations: forward + webhook
Self-hosted / open source
Managed SaaS option

Open source forever

Your infra, your rules

We will always maintain a fully open source, self-hosted version of Programmable Inbox for the community. No lock-in. No paywalled features. No surprises.

Self-hosted

Deploy on your own infrastructure — Postgres, Next.js, and an inbound email pipe is all you need. Your OTPs, receipts, and PII never leave your box. Full source on GitHub under an MIT license — fork it, extend it, own it.

  • MIT licensed, forever
  • No feature gating
  • Bring your own domain
  • Community support on GitHub
Star on GitHub
Coming soon

Managed SaaS

Skip the ops. We'll handle uptime, backups, and scaling while you focus on your product. Every feature from the open source version, plus managed deliverability and priority support.

  • Zero-ops deployment
  • Managed uptime & backups
  • Priority support
  • Usage-based pricing
Join the waitlist

Community first. The self-hosted version will always be free, feature-complete, and actively maintained. That's a promise, not a pricing tier.

Pricing

Simple, honest pricing

Open source is free forever. SaaS pricing will be usage-based with a generous free tier.

Open Source

Freeforever

Self-host on your own infrastructure. Everything you need, nothing you don't.

  • Unlimited addresses & messages
  • OTP / code / link extraction
  • Auto-categorization
  • Automations: forward + webhook
  • Full REST API + /otp endpoint
  • MIT license, self-hosted
  • Community support
View on GitHub
Early access

SaaS

Coming soonusage-based pricing

We run it. You build with it. All the power, none of the ops.

  • Everything in Open Source
  • Zero-ops managed hosting
  • AI-powered extraction & automations
  • Extended retention & higher volume
  • Managed shared domain, quick start
  • Uptime SLA & priority support
  • Usage-based pricing
Join waitlist

Spin up your secondary inbox

Create a programmable address, grab your first OTP, and wire up a rule in minutes. Self-host for free, or join the waitlist for managed cloud — either way, you own your data.

No credit card required · MIT license · Community supported