吾輩

Wagahai

Mail, in your terminal.

Gmail, Google Workspace and Fastmail as one fast local mailbox, where only mail you've said yes to reaches you.

「吾輩はメールクライアントである。名前は今言った。」
“I am a mail client. My name — I just said it.”

The demo, in half a minute: a reply that's waiting, an archive, two strangers screened and one taken back, a newsletter and its picture. Under 80 ms to a painted inbox.

Only mail you've said yes to

You screen calls from numbers you don't know. HEY asked why email should be any different, and they were right — so wagahai inherits the idea, and adds the part we couldn't live without: every screening decision becomes a rule you can read, in rows you can edit. Never a model's mood.

First-time senders wait

New senders land in the Screener, not your inbox. One key decides: y in, n out forever, l filed. The rule your keystroke writes is yours to read.

What waits on you, flagged

A watcher reads for genuine questions — “are you free Thursday?”, not a newsletter's “Ready to grow?” — and flags the threads waiting on your reply. It would rather miss one than nag you twice.

Everything undoable

Archive, file, rule, send — every action is one u from undone, and outgoing mail waits out a cancel window before it leaves. Regret is a supported workflow.

Reading, with pictures

HTML mail comes through as plain, readable text — legible, not pretty. Pictures draw right there in the terminal, but only when you ask.

 Feed ▸ 1/48 · autumn, upcountry                                      r reply · f fwd 
 The Daily Loop ‹letters@dailyloop.example›                          today 07:12
   Autumn, upcountry

   The maples turned early this year. Our correspondent walked the
   ridge trail at dawn and sent back one picture worth the trip:
A photograph of a mountain ridge trail at dawn, maples turned red and orange above a valley of mist, drawn inline in the terminal
   Full gallery and the walking notes [1].

   ▨ 2 remote images shown · 1 tracker blocked — permanently

Press I and the pictures appear. The tracking pixels never do — blocked by architecture, not by preference. You can see how many were blocked.

 screener review  3 senders · 5 threads                                               
  N  Noor Haddad                                                     → Feed             bulk: mentions unsubscribe                                                        Atlas: your week in review · 3 threads · noor@atlas.example                  
  M  Marco Bellini                                                   → Imbox?
     a person until told otherwise
     Intro from the Rust meetup · 1 thread · DMARC ✓

 y in · n out · l file · Enter open · u undo

The Screener review: each stranger, the evidence, one keystroke.

It keeps time

Four themes, one for each band of the day — kinari in the morning, geppaku by day, kachi at dusk, nureba at night — and within each the ground drifts warm at the edges of the day and cool at noon. The ink in the corner turns with the season.

One day at ten minutes a frame, then a year at a day a frame. Click to play.

It runs while your laptop sleeps

Wagahai splits in two: a daemon that owns your mail, and the client you look at. Put the daemon on any always-on machine — a home server, a mini in a closet — and open the client from your laptop over plain ssh. Close the lid; syncing, screening and flagging carry on without you. Open it tomorrow anywhere and the work is already done. The client even keeps itself up to date over the same ssh connection.

Agents are first-class — and fenced

Every operation the client can perform exists on a local, permissioned API. An assistant connects with a token scoped like “Feed, read-only, expires tonight” — and can see and touch nothing else. Every agent action is attributed and undoable; a week of agent activity is one query. Sending is the hard line: agents may only queue, and mail leaves when a human presses the key.

Is it any good?

No, but we like it. Wagahai is an internal client we built for ourselves — free, experimental, and depending on how far your needs and setup are from ours, it may simply not work for you. We read all of our own mail with it and it seems good to us — but we wrote it, so we would say that. Expect sharp edges, missing features, and firm opinions.

Tested on macOS, in Ghostty, and nowhere else. It might work on other systems. We genuinely have no idea.

What Wagahai does with your Google account

That is all. Everything happens on your machine: Wagahai's daemon talks to your mail providers directly. There is no Wagahai server, no account with us, and your mail is never sent anywhere except to the provider it came from. How your data is handled →

Get it

One line. No account, no setup — the demo ships a fully fictional mailbox. You owe nobody a reply.

curl -fsSL https://wagahai.org/install.sh | sh
wagahai --demo

macOS on Apple Silicon today. The script is short enough to read first — it installs one binary to ~/.local/bin and verifies the checksum. Real mail runs through your own always-on daemon (the ssh trick above); for that, and for everything else, write to info@katayama.dev — tell us what you'd use it for.