Disposable email in minutes. No account, no tracking, no permanent storage.
Built on Cloudflare Workers. Inboxes die with their TTL.
Why · Features · Architecture · Quick start · Deploy · Config
Need an inbox for one signup. Not another identity.
Most temp-mail products keep messages, fingerprint visitors, or force an account. AtomMail is the opposite: a short-lived inbox on the edge.
| Pain | What AtomMail does |
|---|---|
| Sign-up just to receive one code | Instant disposable address, no account |
| Messages linger forever | Automatic cleanup after a short TTL |
| Tracking pixels and analytics | No tracking, no persistence by design |
| Heavy VPS for a throwaway inbox | Cloudflare Workers + KV + D1 |
Default TTL is intentionally short. Self-hosted instances can raise it in Worker / KV settings.
| Addresses exist only as long as the configured TTL. Empty state after expiry is expected. | No sign-up. No tracking. Messages are never stored permanently. |
| Cloudflare Workers for ingest and routing. KV / D1 for short-lived state. | App Router frontend with Tailwind and Framer Motion. |
| Dashboard lives in atommail-admin. | Wrangler for the worker. Vercel or Next.js for the UI. |
flowchart LR
S["Sender"] --> CF["Cloudflare Email Routing"]
CF --> W["Worker"]
W --> KV["KV / D1<br/>TTL state"]
W --> UI["Next.js inbox UI"]
UI --> SB["Supabase<br/>optional"]
atommail/
├── app/ # Next.js App Router UI
├── components/
├── lib/
├── worker/ # Cloudflare Worker
├── supabase/
└── package.json
git clone https://github.com/awhite0030/atommail.git
cd atommail
npm install
npm run dev # UI
npm run worker:dev # Cloudflare WorkerDeclare KV / D1 bindings in wrangler.toml first. Mismatched binding names are the most common local startup failure.
npm run worker:deploy
wrangler secret put SUPABASE_URL
wrangler secret put SUPABASE_SERVICE_ROLE_KEYAfter deploy, confirm KV and D1 bindings in the Cloudflare dashboard and watch Worker logs. Free-tier KV write limits can fail cleanup under heavy use.
| Variable | Purpose |
|---|---|
SUPABASE_URL |
Supabase project URL (optional / admin path) |
SUPABASE_SERVICE_ROLE_KEY |
Service role for worker / admin |
Inbox lifetime is approximate and depends on TTL plus the worker schedule. A very short TTL can look empty quickly — that is expected.
MIT © 2026 A. White