Skip to content

self-hosted · one deploy · your own Cloudflare account

The inbox that knows your business.

Your order email is the live order. Your support queue triages itself. It can do that because the whole stack — inbox, sending, newsletters — runs on your own Cloudflare account, not a rented seat on someone else's. One deploy. $249 once, not ~$150 a month.

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

It reads your mail

Your order email is the live order.

Tinbox 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 without leaving the inbox. It can do this because it runs on your data, on your account: wire one Skill to your store or CRM and the email stops being a dead receipt and starts being the thing it's about. 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.

Whatever your business is

It knows yours.

Pick your business and watch the same inbox become yours — because it runs on your data, the scene below is the real thing it renders, not a screenshot.

It knows your shop

A regular emails "are you open Sunday?" and the reply — "yes, 'til 4" — is already drafted from your hours before you've finished your coffee. The inbox knows your bookings, your hours, your regulars.

See the local-business stack →

Why it can: Teach it your hours and booking rules once; it drafts the everyday reply every time.

It runs itself

Open the queue and the work is already done.

The queue is already triaged, the live context attached, the routine replies drafted and waiting for your yes. An agent works the inbox the way you would — it reads, it drafts, it runs your campaigns — reaching into the store, CRM, and tools you already run, because the keys are yours to lend. Chat or schedule: pull context on a lead, turn your notes into this month's campaign, or let Autopilot wake on a cadence and clear the routine overnight — everything that sends parked in an approval queue 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.

Why it can do that

It knows your business because it's yours.

There's no server

It's one Cloudflare Worker, not a mail server you babysit. Nothing to patch, scale, or keep alive at 2am — and a modern, typed stack an agent can build on from day one. Cloudflare runs the metal; you own the data, the keys, and the code.

No ceiling

Open the repo and add the columns you want, a refund button wired to your own Stripe, the rule for how you actually work. The engine stays locked and stable while you reshape everything around it. Nothing is off-limits, because nothing is rented.

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. The agent learns to do your jobs — wired to your dashboards and systems — gated by the same scoped keys as every human action.

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 cost

$249 once, not ~$150 a month.

Subscriptions rent you software that rents you AI. Tinbox is one license, and the AI runs on your keys — a cheap model for autocomplete, a frontier one where it matters, no markup on the intelligence. Storage and compute sit in Cloudflare's free tier for a small team; you pay for the stack once and keep it. 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 — the inbox that's easy to start on is the one that scales with you. 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

None of this is magic — it's 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, an optional git archive of every message, and the lists engine that runs your campaigns. 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.

The inbox that knows your business.

It renders your live orders, drafts your replies, and runs your campaigns — on your own Cloudflare account. It runs on your own account, independent of us, and the code's yours to change. One deploy, three subscriptions gone, the last email tool you'll ever buy.