mono.mail v0.9.0-beta / private
build · passing → join waitlist
// fileREADME.md
// status coming soon
// etaQ3 · 2026
// platformsmacOS · Linux · Win

monomail_

The inbox command line for your email. An opinionated, keyboard-first, local-first client built for people who live in their terminal and want the rest of their life to feel the same.

// positioning Zed for email. Neovim for your inbox. Brutalist on purpose. No AI summaries you didn't ask for. No read receipts. No spring-loaded animations begging for your attention. Just mail, the way it was supposed to be — fast, tactile, and yours.

/01the waiting list

invite-only · ships in waves
~/mono.mail/join.sh
$whoami
>not yet a user.   drop your email to change that.
$./join --early-access --honest
@
// what do you use today?

We send two emails, max: one to confirm, one when your wave opens. No drip campaigns. No "we miss you." No analytics pixels (we literally haven't written the code).

// on the list
12,847
// your position
submit to get in line
// queue · wave 1 opens Q2 · 2026
shipped · 312 you · — in queue · 12,847
// skip the line
Every 3 referrals moves you up one wave. Top 100 get a lifetime license, a manpage printed on risograph, and a t-shirt.

/02nine things we believe

opinions · not preferences
01 / keyboard

The mouse is a productivity tool a tax.

Every action must have a keybind. The ones you'll use are two keystrokes or fewer. Vim, Emacs, Helix, or a custom map — pick your religion.

jknext / prev · rreply · earchive
02 / plain text

HTML email is a feature disease.

We render plain text by default. Images are blocked. Remote pixels are stripped. You'll see the actual message someone wrote, not the tracking beacon wrapped around it.

Hrender html · opt-in
03 / local-first

Your inbox lives on a server your disk.

Every message indexed, offline-searchable, SQLite-queryable. Sync is a background job, not the critical path. Works in airplane mode.

/search — <50ms on 400k messages
04 / no ai slop

We will write emails for you stop.

No summaries you didn't ask for. No auto-reply suggestions. No "unread, but important" rankings. You are not the output of a language model; neither are your friends.

/ask an llm · explicitly · bring-your-own-key
05 / tabular

The inbox is a stream table.

Columns, sortable, filterable, pipeable. Everything is a thread, threads live in folders, folders live in accounts. No nested-reply UIs. No "smart" views that move your mail behind your back.

Kcommand palette
06 / no dark patterns

No unsubscribe friction. Ever.

One keystroke unsubscribes via RFC 8058. No "are you sure?" No "we'll miss you." No 12-step form. One. Keystroke. We also auto-detect and nuke tracking pixels on open.

Uunsub + move to trash
07 / composable

Rules are a GUI code.

Filter rules are tiny JS functions. Test them on any folder. Version them in git. Share them as gists. Your inbox becomes a programmable surface, not a wizard.

rules.js · scheme or lua coming
08 / quiet

Your inbox is not real-time.

No desktop notifications. No unread badges in your dock. No red dots. We fetch on your schedule. Inbox Zero is a state you choose; not a treadmill you're strapped to.

Ffetch now · otherwise: silent
09 / yours

Self-host, or we don't ship.

Open-core. Licensed per-seat, not per-feature. Runs on your laptop, your homelab, or our cloud — same binary. If we ever get acquired, the core stays open. Written down. Notarized.

source · available Q3 · 2026

/03commands, not features

sample · not exhaustive
m inbox --unread
Triage inbox
Open today's unreads in a single pane. Reply, archive, or snooze without leaving the keyboard. Mutation is atomic; sync is eventual.
gi
m grep "contract"
Ripgrep your inbox
Full-text search across every account, attachment body included. Sub-50ms on 400k messages. Regex, fuzzy, or exact — no SaaS relay.
/
m send < draft.md
Compose in Markdown
Write in your editor of choice. Pipe to mono.mail. Rendered as HTML + plaintext multipart. Attachments by path. Done.
c
m snooze +2d
Snooze with honesty
Hides the thread. Doesn't ping you at 8:47am with a forced re-surfacing. Returns exactly when you said. No "morning / afternoon" fuzz.
z
m rule --test
Filters as code
JS functions, version-controlled, dry-runnable on any folder. See exactly which 2,300 newsletters would be touched before you touch them.
.r
m unsub
One-keystroke unsubscribe
RFC 8058 one-click, falls back to headers, falls back to parsed unsubscribe link. Pixels stripped on open, senders scored, junk auto-routed.
U
m export mbox
Leave whenever you want
Every byte is yours. Export to mbox, maildir, or a raw SQLite file. We don't hostage your archive.
:wq

/04what it looks like

live · click around
~/work/mono.mail/app — inbox · 42 threads · synced 2s ago v0.9.0-beta

/05how we compare

honest · not flattering
//
gmail web
superhuman
mono.mail
Keyboard-first
partial · bolted-on
yes · proprietary
yes · vim / emacs / custom
Works offline
read only, janky
no
full · local sqlite
Blocks tracking pixels
proxied, still leaks
opt-in
on by default · stripped
Unprompted AI
everywhere
yes
never · opt-in, BYOK
Price / month
"free" (you are the product)
$30
$8 · or self-host · free
Source-available
no
no
core · MIT

/06frequently asked

actual questions · from actual beta users
When does it ship?
Private beta is ongoing — wave 01 opened in February 2026 with ~300 seats. Wave 02 opens Q2, wave 03 mid-summer. General availability: Q3 · 2026. Join the list and we'll send exactly one email when your wave is next.
Which accounts does it support?
At launch: Gmail / Google Workspace, Fastmail, and any server that speaks IMAP + SMTP (Proton Bridge, Migadu, self-hosted Dovecot, iCloud, etc.). Exchange / Outlook 365 lands in the second post-GA minor. JMAP is a first-class citizen.
Is there a mobile app?
Not at launch, and not soon. Building a great keyboard-first desktop client is a three-year problem; building a great mobile client is a different three-year problem. We'd rather do one well. A read-only companion for iOS / Android ships after desktop hits 1.0.
Do you store my mail?
No. mono.mail is a client — it talks directly from your device to your provider. We see nothing. We have no servers that could hold your email even if we wanted to. Optional encrypted device-to-device sync is opt-in and uses your keys; we hold ciphertext only.
Why "brutalist"?
Because the honest thing to do with a tool you spend 4 hours a day in is to make it behave like a tool, not an advertisement. Dense type, visible structure, no decorative motion, no beg-buttons. The visual language is the philosophy.
What about encryption, PGP, S/MIME?
PGP via gpg-agent at launch, with inline & MIME support. S/MIME in the first minor after GA. Keybase-style identity is not on the roadmap — we think the PGP workflow, while old, is the right one.
Who's building this?
Four people who've spent a cumulative 40+ years shipping devtools — two ex-Chromium, one from Tailscale, one from the Rust compiler team. Funded by revenue and a single seed check from a fund we chose because they don't require growth at any cost. No growth team. No marketing team. No plans for either.