The old way
Email is five services and a pile of glue.
Mailbox. Transactional API. Newsletter tool. Plus the webhooks tying them together. Each one bills you, each one has its own dashboard, none of them are yours.
What you get
One programmable stack, bundled.
Skills & plugins in TypeScript
Read a message, pull the live record from your own systems, and render it as a card in the thread — that's a Skill, a small typed function. Or ship a whole plugin with its own routes, crons, hooks, DB, and secrets. Either way it ships with a git push.
Agents over one manifest
Chat, the CLI, and MCP share one typed tool manifest. The tools your agent calls are the same ones callable from Claude or any client you point at it — add a tool once, it's everywhere.
Reach any API safely
Skills and plugins hit the systems you already run over a sandboxed, host-pinned fetch, then render the response as a card right in the thread.
It's all on Cloudflare
Inbox, API, sending, and lists run on one worker on your account. Database, object store, and full-text search are bundled in. One dependency, one deploy.
One command to stand it up. npx tinbox init example.com provisions the whole stack on your account and deploys the bundled worker. Write your Skills, plugins, and agent tools, then ship them with wrangler deploy.
The fundamentals
What's in the box.
- One bundled worker: fetch, email, queue, and scheduled
- Database, object store, and queues on your account
- Typed tRPC API shared by the SPA, CLI, and MCP
- better-auth with passkeys and an OIDC IdP
- Full-text search over your own mail
- Transactional + bulk sending on one auditable ledger
- Sandboxed, host-pinned fetch for any REST API
- One authorize() gate, capability tokens, human-in-the-loop
Questions
How it's built.
- Is the extensibility no-code?
- No, and that's the point. Skills, plugins, and agent tools are TypeScript you deploy. Runtime toggles (autopilot, secrets, model, voice, branding) flip without a redeploy. New behavior is a git push, and it's yours.
- Can plugins ship their own UI?
- You build custom cards, columns, and views into your own scaffolded app layer. There's no runtime plugin-supplied UI or drag-drop dashboard builder. The UI is code you write and own.
- Does it really run on just Cloudflare?
- Yes. One bundled worker, one dependency, one wrangler deploy. Storage, queues, and search are all included on your account. No Postgres, no separate services to stand up or operate.
Why builders switch
What builders say.
“One deploy and I owned the whole stack — inbox, sending, lists, all programmable in TypeScript. I deleted three subscriptions the same week.”
Priya Shah
Indie hacker
Sample testimonials: illustrative, pending real customer quotes.
Your stack, in TypeScript you control.
One bundled worker, one dependency, one `wrangler deploy` — then Skills, plugins, and agent tools you ship with a `git push`. Readable source, your keys, your Cloudflare account. Three subscriptions collapsed into code that's yours.
Not technical? We'll build it for you →