Open source · Self-hosted · Receive-first

Set a rule. Your inbox does the rest.

Every message that lands is parsed, categorized, and extracted automatically — search for the text that matters, then forward it or fire a webhook. Open source and self-hostable, so your mail never leaves your infrastructure.

No credit card required · AGPL v3 license · Community supported

inbox.ts
// 1. Create a programmable address
const inbox = await api.createEmailInbox({
  createEmailInboxRequest: {
    email: '[email protected]',
    name: 'Signup flow',
  },
})

// 2. Mail arrives. We parse it before you ever see it.

// 3. Query it as structured data — not raw MIME
const [message] = await api.getEmailInboxMessages({ id: inbox.id, limit: 1 })
console.log(message)
// {
//   subject: 'Your verification code',
//   from: '[email protected]',
//   categories: ['otp'],
//   extractedOtp: '418902',
//   extractedLinks: [],
// }
//   → parsed, tagged, extracted. No MIME parsing. No regex.

// 4. Or skip the API — set a rule to act on arrival
{
  "when": { "contains": "invoice", "category": "notifications" },
  "then": [{ "webhook": "https://your-app.com/ingest" }]
}
//   → searched, filtered, and routed. No server to run.
Address provisioned
< 1s
Last code, one call
/otp
Auto categories
5+
Open source license
AGPL v3

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

    Turn alert emails into webhooks

    Built for legacy services that only speak email. Programmable Inbox categorizes every alert automatically, lets you search the subject and body for the keywords that matter, and routes matches straight to a webhook — turning notification-only email into automation your systems can act on.

  • Secondary inbox

    A clean inbox for signups & noise

    Point your signups and subscriptions at one address and keep the promo, notification, and update noise out of your primary inbox. Everything is categorized and queryable over the API — self-host it for full control, or run it on our managed cloud.

  • Agent builders

    An MCP server for your agents

    Give any agent its own mailbox over MCP — create addresses, read and reply to mail, and pull extracted codes and links, all through tool calls instead of custom email plumbing. Grab an API key and connect it to any MCP-compatible framework in minutes.

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.

import { Configuration, EmailInboxesApi } from '@programmableinbox/sdk'

const config = new Configuration({ accessToken: 'sk_live_...' })
const api = new EmailInboxesApi(config)

const inbox = await api.createEmailInbox({
  createEmailInboxRequest: {
    email: '[email protected]',
    name: 'CI signup',
  },
})

console.log(inbox.data)
// {
//   id: 'inbox-1',
//   organizationId: 'org-1',
//   email: '[email protected]',
//   name: 'CI signup',
//   createdAt: '2026-07-13T12:00:00Z',
//   updatedAt: '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 AGPL v3 license — fork it, extend it, own it.

  • AGPL v3 licensed, forever
  • No feature gating
  • Bring your own domain
  • Community support on GitHub
Star on GitHub
Now live

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
Try the hosted app

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

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 sign up for managed cloud — either way, you own your data.

No credit card required · AGPL v3 license · Community supported