$ tern --demo

Mail at the speed of vim

tern is mutt for 2026. Mail, calendar and contacts in one dense, keyboard-driven terminal app, with nothing else on screen. It pushes new mail, never loses a message, and wears your Omarchy theme.

This is tern, not a mockup. Pick a theme:
  • earchive
  • dtrash
  • bsnooze
  • sflag
  • xmark
  • rreply
  • guall inboxes
  • ^zundo send
  • Ccalendar
  • Ppeople

Your mail client shouldn't compete for your attention. tern has no badges, no feed, no promotions tab, and no AI summarizing the person who wrote to you. It's three panes of text, a key for everything, and a status line that tells you what just happened.

Mail

Triage in keystrokes, not clicks.

Every action is one key, and the list moves before the server answers. Archive with e, trash with d, move with M. Mark a run with x and act on all of it, or use counts: 5j.

Not today? b snoozes it to tomorrow morning, Monday or 3h from now. It moves to a Snoozed folder on the server, so it's gone from your phone too, then comes back unread.

How triage works →
Insert

Reply without losing your place.

The reply opens in the right-hand pane with the list still in view. The editor is modal like vim:esc, dd, cw, u and ZZ to send. Addresses complete from your contacts.

^f switches which account it's sent from and swaps the signature. Prefer your own setup?:e opens $EDITOR and brings you back.

Composing →
Outbox

Nothing you write gets lost.

The terminal is a fragile place for a half-written email. tern is built so it never matters.

^z

Undo send

Sent mail waits ten seconds in the outbox. ^z brings it back into the composer, exactly as you left it.

go

Retries until it's gone

Offline, or the server's down? The message stays queued and is retried after 30s, 2m, 10m, then every half hour, even across restarts.

gr

Drafts survive crashes

What you're writing is saved every few seconds. Close the terminal mid-sentence and gr picks it up next time.

Calendar

Your day, one key away.

C flips to an agenda of every CalDAV calendar you have, from Fastmail, Google, iCloud and Nextcloud. Recurring events, time zones and all-day events work, and everything is cached, so it opens instantly.

Add events the way you'd say them:

a Lunch with Maya fri 12:30 1h @Osteria
a Design review thu 2pm 45m @meet
The calendar →
People

Everyone, with context.

P opens your CardDAV contacts. Each person comes with your upcoming meetings together and the mail you've traded. Write to them with m, edit them with e, and changes go straight back to the server.

A on any message adds the sender. The same contacts complete addresses as you type.

People →
Omarchy

It wears your theme.

tern reads the active Omarchy theme and repaints within two seconds of omarchy-theme-set, with no restart. It reads colors.toml, Alacritty, Kitty or Ghostty colors, and leaves your terminal's transparency alone. This page does the same. Try it:

Doctor

When something's wrong, it says what.

tern doctor signs in to every IMAP and SMTP server (it sends nothing), checks password commands and OAuth tokens, finds your calendars and address books, and looks at your theme, time zone and tools.

Every failure comes with the fix. It exits non-zero, so you can script it.

tern doctor →

And the rest of a working day.

gu

One inbox for every account

Work and personal in one list, newest first. Archive and replies still go to the right account.

IDLE

Push, not polling

A second connection waits in IMAP IDLE, so mail shows up the moment it lands.

za

Real conversations

Threads from Message-ID and References, folded to one row, read top to bottom with quotes hidden.

/

Filter, then search

Filter the list as you type. Press ⏎ and the server searches the whole folder.

H

HTML, tamed

Newsletters laid out as clean text: headings, lists, links and tables keep their shape. No remote images load.

^f

Send as anyone you are

Cycle the From address through your accounts; the signature follows.

ge

Email → event

Turns a message into an event, with the date, time and call link it mentions already filled in.

a

Answer invitations

Invites show as a card with what they overlap. a / t / n replies to the organizer and files the event.

gm

Meet and Zoom links

gm creates a Google Meet link on an event; gz adds your personal Zoom room.

today

Today, under your folders

The rest of today’s meetings sit in the mail sidebar, so you never switch screens to check.

notify

Notifications that matter

New mail in your inboxes and meetings about to start, through notify-send and mako.

U

One-key unsubscribe

Follows List-Unsubscribe, so the newsletter you never read stops coming.

,

Settings without a manual

Accounts, calendars, keys and theme, edited in the app. Your config.toml comments survive.

auth

OAuth built in

tern auth signs Gmail and Microsoft 365 in through the browser. No helper scripts.

click

Mouse when you want it

Click, double-click and scroll every pane. Turn it off for the terminal’s own selection.

offline

Works offline

Calendars and contacts are cached; mail sent offline waits in the outbox and goes when you’re back.

tern and neomutt

neomutt is a great piece of software with decades of depth. If you need PGP or local maildir, keep using it. tern is for people who want mail, calendar and contacts working together today, with less configuration.

neomutttern
Mail over IMAP and SMTPyesyes
Push with IMAP IDLEyesyes
Calendar (CalDAV)noyes — agenda, edit, invitations
Contacts (CardDAV)via abook / khardyes — read and write
Gmail & Microsoft 365 sign-invia an OAuth scriptbuilt in: tern auth
Undo send, retrying outboxnoyes
Snoozenoyes
Unified inboxwith notmuchyes
Writing$EDITORbuilt-in vim-style pane, or $EDITOR
ConfigurationmuttrcTOML plus an in-app settings screen
Colorshand-written color linesfollows your Omarchy theme, live
Local maildir, mbox, notmuchyesno — IMAP only
PGP and S/MIMEyesnot yet

Five minutes to inbox.

tern is a single Rust binary. Install it with cargo, try the demo with no account, then point it at your servers. Settings → Accounts has presets for Fastmail, Google, iCloud and Microsoft 365.

# needs a Rust toolchain
$ cargo install --git https://github.com/etmartinkazoo/tern
$ tern --demo     # look around, no account
$ tern --init     # write the config
$ tern doctor     # check every server
$ tern