Skip to content

self-hosted · one deploy · your own Cloudflare account

Three email tools become one you own.

Gmail for the inbox, Resend for sending, Mailchimp for newsletters — three subscriptions that don't talk to each other. Tinbox is all three in one deploy on your own Cloudflare account, and unlike any of them, it actually knows your customer. $249 once, not ~$150 a month.

  • · replaces Gmail + Resend + Mailchimp
  • · SPF · DKIM · DMARC handled
  • · readable source · leave any time

The one thing none of the three can do

Your order email is the live order.

Gmail, Resend, and Mailchimp are good at their jobs and blind to each other — none of them knows your customer, because none of them runs on your data. Tinbox does. It reads every incoming message and renders the real thing behind it: an order shows the live order, a login shows the code, a billing question surfaces the account, ready to act on. That's why this isn't a cheaper bundle — it's a better inbox. Every card below is the actual component your inbox renders.

Receipts

rule
Receipt
Order 4821
$42.00

Turn purchase receipts into a card with the order total and number at a glance.

Shipping notifications

rule
Shipment · UPS

Spot tracking emails and add a track-package button with the carrier and number.

One-time codes

rule
One-time code

Pull the login code to the top of the email, ready to copy in one tap.

Password resets

rule

Catch password-reset emails and put the reset button front and center.

Unsubscribe links

rule

Surface a one-click unsubscribe button so leaving a list takes a single tap.

Calendar invites

rule
Sprint planning
Tue Jun 24, 2026 3:00pm – 3:30pm
Add to calendar →

Detect meeting invitations and offer an add-to-calendar card with the time.

Three jobs, one surface

Receive, send, and broadcast — and an agent runs all three.

The same owned stack does the inbox (triaged, drafted, waiting for your yes), the transactional sending (receipts and resets from your domain), and the newsletters (turn your notes into this month's campaign, scheduled to active subscribers). One agent works across all three because they're one system, not three tabs — reaching into the store and CRM you already run, everything that sends parked for your one click.

Chat or schedule. Pull context on a lead, draft the reply, turn your notes into this month's campaign. Or let Autopilot wake on a cadence and work the routine, leaving anything that sends in your Review queue for your one click.

You keep the send button. Every agent send waits in your Review queue — everything on your decision, to approve, edit, or deny with one click. The line is drawn in the code, not a setting, so it holds. And every send is logged in Activity, filterable by who sent it — you, an agent, the API, or an automation — so you can audit the whole trail. See how the agent works your inbox →

Inbox

What's going on with Acme?

email_list · 3 threads

Recent threads from @acme.com

Re: Q3 renewal — 2 days ago · unanswered

Invoice #1042 overdue — 5 days ago

Onboarding follow-up — 2 weeks ago

Open in inbox →

summary

Where the relationship stands

3 open threads with Dana and Raj. The renewal is waiting on your reply; an invoice is overdue. Last inbound was a nudge on pricing.

View thread →

draft

Drafted reply to the renewal thread

Hi Dana — thanks for the patience. Confirming the Q3 renewal at the agreed terms; I'll have the invoice corrected today and sent over by EOD.

Open thread to review & send — a human sends it.

Lists

Turn these release notes into this month's newsletter, schedule it for active subscribers Thursday 9am.

campaign

Drafted: "June product update"

Subject: What shipped in June →

Built from your release notes · 4 sections · 1 CTA

Edit draft →

audience

Segment: active subscribers

1,284 recipients · opened in last 90 days

Manage audience →

campaign · scheduled

Scheduled for Thursday, 9:00am

Throttled, ledger-backed fan-out · open + click tracking on

Approve to send — needs your newsletter:send key.

Send

Did the renewal invoice to ops@acme.com actually go out?

delivery_status

Receipt #1042 → ops@acme.com

delivered · 1 recipient · sent from billing@yourco.com

ledger row led_8f2c · delivered

View in activity →

summary

You get the answer, not a guess

Every send is logged — recipient, from-address, delivered or not — so "did it go out?" has a real answer, pulled straight from the ledger.

Better, not just cheaper

One system on your data beats three that don't talk.

One stack, no glue

Inbox, sending, and lists share one database on your own Cloudflare account — so a support thread, a receipt, and a campaign are the same system, not three subscriptions stitched together with forwarding rules and CSV exports.

Change anything

Because you own it, open the repo and add the columns you want, a refund button wired to your own Stripe, the rule for how you actually work. None of the three tools you're replacing lets you reach inside it. This one is yours to reshape.

Give the agent your tools

Add a tool once to the shared, typed manifest and it shows up in the in-app chat, the CLI, and MCP at once — gated by the same scoped keys as every human action. The agent learns to do your jobs across the whole stack, not one tool at a time.

Perfect to start on

Live in one deploy. Yours to leave any time.

Inbound rides Cloudflare Email Routing; outbound goes through Cloudflare's managed sending pool with SPF, DKIM, and DMARC on your zone — the same authenticated path a hosted sender gives you, correct from day one. Click the button from your browser, paste a prompt to your coding agent, or run npx tinbox yourself — three ways in, all landing in your own account. And because it's standard email on infra you control, you can export it, mirror it, or walk with all of it whenever you like.

Pick how you get there: click Deploy to Cloudflare from your browser, run npx tinbox to scaffold the code yourself, or hand it to your coding agent and approve as it goes. All three land in the same place: your whole stack, live on your own domain.

No terminal required

Deploy straight from your browser.

The Deploy to Cloudflare button clones the project into your GitHub, auto-provisions everything it needs, and deploys it to your account, all from the Cloudflare dashboard. The in-app setup then walks you through attaching your domain and turning on mail.

Deploy to Cloudflare

opens the Cloudflare dashboard

Prefer the command line? Own the code from the first commit.Two commands scaffold the project locally, then deploy it to your account.
  1. 01

    Run the installer

    npx tinbox opens an interactive prompt: pick Init and it scaffolds your own deployment.

    npx tinbox
  2. 02

    Deploy to your account

    pnpm deploy:tenant yourdomain.com provisions everything inside your Cloudflare account.

    pnpm deploy:tenant yourdomain.com
  3. 03

    Send + receive on your domain

    MX points at Cloudflare Email Routing; outbound goes through Email Sending with SPF, DKIM, and DMARC on your zone.

    ✓ hello@yourdomain.com is live

Or hand it to your agent

Let your coding agent set it up.

Copy the prompt, paste it into Claude Code, Cursor, or any agent with shell access.

Set up Tinbox on my Cloudflare account.
Run `npx tinbox` and choose Init,
then deploy it and wire up Email Routing
+ DNS (SPF/DKIM/DMARC).

One domain, one deployment, start to finish. See the full architecture →

Not technical? We'll set it up for you.

Buy a license and we'll help you get started. Want the whole thing handled — domain, DNS, Mailchimp migration? Done-for-you setup starts at $300. For deeper customization or ongoing agent supervision, we work by the hour.

Tell us what you need →

The model

Three bills become $249 once.

Three subscriptions recur forever; the price you researched isn't the price you pay by year two. Tinbox is one license, and the AI runs on your keys — no markup on the intelligence, a cheap model for autocomplete and a frontier one where it matters. Storage and compute sit in Cloudflare's free tier for a small team. Not another subscription — the last email tool you'll ever buy.

Set your team size and volume below and compare five years, side by side.

5
125
1.0k
10010M

Drag to match your team. Both cards update live.

Before

rented · 3 vendors
  • Mailboxes · 5 seats$72/mo
  • Team inbox · add-on$95/mo
  • Mailing list$0/mo
  • Send API$20/mo
  • Glue & upkeepyour time
Three bills, every month$187/mo
Over 5 years$11,220
  • ×  and it keeps rising — you find out in an email
  • ×  your mail on their servers; export is a migration
  • ×  locked to what each vendor ships

After

owned · 1 deploy
  • Mailboxes · 5 seats$0
  • Team inbox · built in$0
  • Mailing list$0
  • Send API$0
  • Cloudflare usage~$0/mo
Every month~$0/mo
5-yr total · $249 license$249
  • ✓  one deploy you own — pays for itself in ~2 months
  • ✓  data in your account; license includes the full readable source
  • ✓  bring your own AI keys — no markup

Same 5 years: $11,220 rented vs. $249 owned — about 45× less, and you keep it.

Bring your own AI keys. You already pay Anthropic or OpenAI — Tinbox uses your key, so you don't pay an AI markup on top of a subscription. And you pick the model per task: a cheap fast model for autocomplete, a frontier model where it matters. No dumb house model you're stuck with.

Rented prices are conservative 2026 list prices for a small team; Tinbox figures are your estimated Cloudflare usage plus the one-time license. Your mileage varies — see full pricing & the license →

Deploy free

$0

Self-host, forever

  • ✓ The full stack — inboxes, sending, newsletters, outreach — on your own account
  • ✓ Unlimited inboxes, domains, and teammates; your data never leaves
  • ✓ Shape it with Skills, plugins, and agents

Lifetime license

$149 founding

One-time, not a subscription

  • + The full readable source — yours to audit and modify
  • + Direct support from the people building Tinbox
  • + Priority updates, early access, and a direct support line

Not a hosted service — there's no Tinbox server in the path. It's ownership of the code, not a seat we rent you.

Lifetime doesn't depend on us.

The license includes the full readable source, and it runs on your account with no Tinbox server in the path — so it keeps sending on its own, and the code's always yours to change.

Who runs on it

From a weekend app to a store running on it.

Same inbox, any size. A side project that just needs to send a password reset, or a store running support, receipts, and newsletters off one deployment — three subscriptions replaced before the project has earned one. There's no plan to outgrow and no migration waiting at the next tier.

Just launched — early users are already running it in production, including partners like . Open source on GitHub; wider access is opening by invitation.

Vibe-coded apps

Real email for the app you just shipped

You built the product over a weekend; it still needs to send password resets, magic links, and receipts. One POST /emails from your own domain — no Resend account, no deliverability project. The coding agent that wrote your app can set it up too.

Small startups

All your email, before you hire for it

Shared support@ and billing@, transactional sending, and a mailing list — one deployment instead of three subscriptions and three logins. The agent drafts replies and triages threads, so a small team keeps up without hiring for it.

E-commerce stores

Customer asks about order #1234 — you see the live order

Connect your Shopify and every support email shows the live order right in the thread — status, items, tracking, one click from the admin. Run support@, send receipts, run your newsletter, all from one place. Not technical? We'll set it up for you.

Indie makers

Stop paying three bills just to send email

Three email bills add up faster than the revenue does. Tinbox runs on your own Cloudflare account — usually ~$0/mo on the free tier — so the side project doesn't carry a SaaS stack before it earns one.

The receipts your agent reads

What makes one system out of three: typed primitives an agent reads natively, which is what lets it deploy and run the whole stack for you. A typed CLI and SDK, an /mcp endpoint, scoped keys on one authorize() gate, exactly-once send across a single receipt or a 4,000-recipient newsletter, and the lists engine that replaces Mailchimp. You get the outcome; it does the wiring.

Every agent gets its own scoped key

Agents hold scoped, revocable tokens checked by the same authorize() gate as every human action.

An /mcp endpoint, on your own Worker

Every deployment exposes /mcp. Point Claude, Cursor, or any client at it.

A git archive of every message

Turn on the archiver and every message mirrors to an append-only file in a git repo.

Full-text search over every message

FTS5 search across every inbox — from the app, the CLI, or an agent, with the same --json results.

an agent, working the inbox
npx tinbox search "invoice overdue" --inbox billing --json
→ 3 threads, 2 unanswered

npx tinbox draft create --thread th_8f2c --file reply.md
→ draft v1 created, awaiting human review

Questions

The things you're actually wondering.

DON'T TAKE OUR WORD FOR IT.

Ask ChatGPT, Claude, or Perplexity what the trade-offs are.

Click a button and see what your favorite AI says about us.

Three subscriptions gone. One you own.

Inbox, sending, and newsletters in one deploy on your own Cloudflare account — and unlike the three tools it replaces, it knows your customer. It runs on your own account, independent of us, and the code's yours to change. The last email tool you'll ever buy.