Skip to content
Durian

Mail you can grep.

Use it from the terminal, in a native macOS app, or both. Vim keys, tags instead of folders, local SQLite, typed Pkl config.

gi go to inbox
dd archive thread
c compose
r reply
t tag picker
/ search
~/.config/durian/config.pkl
accounts {
  (C.gmail) {
    name = "Personal"
    alias = "personal"
    email = "you@gmail.com"
  }
  (C.microsoft365) {
    name = "Work"
    alias = "work"
    default = true
    email = "you@company.com"
  }
}

Durian, light mode

More screenshots

Durian, dark mode


Durian compose editor


Mail clients keep growing into productivity suites.

Calendars. Tasks. AI replies. “Engagement metrics.” Sender‑side read receipts. Upsells.

Durian goes the other way: render mail, search mail, reply, file. Tags instead of folders. A SQLite store on disk. A vim‑style keyboard. Configuration in a typed file you check into git, not a settings panel you click through twice a year.



Search like notmuch.

group:vip AND tag:unread
from:boss@company.com AND has:attachment:pdf
date:6m.. AND subject:invoice
header:list-id: AND NOT tag:newsletter

Same syntax in the search popup, in durian search, and as folder definitions in profiles.pkl. Save any query as a sidebar entry — your inbox shape is just a file.


What’s not in here.

  • No AI replies, AI summaries, AI anything.
  • No remote image loading by default — no tracker pixels phoning home.
  • No engagement metrics. No read receipts shipped to senders.
  • No calendar, tasks, chat, or “smart” inbox. It’s an email client.
  • No telemetry. The app never talks to a Durian server, because there isn’t one.

Install

Early Alpha. Expect bugs and breaking changes. No external security audit. This is a side project — features and fixes happen as time allows.
brew install pkl                # config language runtime (required)
brew tap julion2/tap
brew install durian             # CLI (required — the GUI uses it as backend)
brew install --cask durian      # GUI (macOS only)

Or build from source.


Read on.