PigeonPost icon

Why this exists

The design story in short, the engineering behind it and some honest comparisons.

The three shapes desktop email settled into

The short version of the reasoning.

Desktop email settled into three unsatisfying shapes.

PigeonPost is a refusal of all three shapes at once. The brief was narrow: email as a calm, predictable, local tool. Your mail stays with your provider; the client reads it, caches it and gets out of the way.

There is no PigeonPost account, no cloud relay in the path and no telemetry. Each temptation layered onto modern mail (accounts you do not need, notifications tuned for engagement, rendering that phones home) is declined structurally rather than by policy, so it cannot quietly creep back in.

The engineering carries the same discipline. A Go core sits behind a Wails shell with a React and TypeScript front end; mail speaks IMAP, POP3 and SMTP through explicit protocol libraries; summaries and bodies cache to a pure-Go SQLite store for instant offline search; credentials live in the OS keychain rather than any database.

One clean-architecture boundary separates the mail engine from the UI and structural tests enforce it, with a 100% coverage gate on the core logic.

What works now is a fast, native client for mail, calendar and contacts on Windows, macOS and Linux, each with its own installer. Provider presets cover Gmail, iCloud, Yahoo, Zoho, Fastmail and StartMail through app passwords; Microsoft accounts sign in over OAuth.

Because the server remains the source of truth, the local cache is disposable: trying PigeonPost costs nothing and leaving costs nothing.

Go core React front end Wails SQLite, local-first OS keychain GPL-3.0

Why I built it

I wanted a desktop client that was free, dependable and laid out the way I actually work. The mainstream options did not fit. Outlook 365 wanted a subscription. Thunderbird is free and open but community-governed, so a bug I hit waits in someone else's queue and the things I reach for most are buried.

PigeonPost is my answer: GPL-3.0 and free, a calm predictable interface where everything is easy to find. Oliver Ernster.

✅

Tested to the last line

The core logic carries a 100% test-coverage gate. The test run fails if a single untested line lands there.

🧱

Architecture that holds

A clean layered core whose boundaries are enforced by automated structural tests, not by good intentions, so the design cannot quietly erode as features land.

🔍

Checked before every test run

The same test run checks the formatting of the whole Go codebase and vets it before a single test starts, failing outright on either, so problems are caught before they ship.

🪶

Open and forkable

GPL-3.0 with the full source on GitHub. If it ever stalls, anyone can read it, fork it or carry it on, with credit to the original author retained. Nothing about your mail depends on me being here.

An honest comparison with Thunderbird and Outlook

Where PigeonPost sits next to two clients you may be leaving. Both are good tools. This stays factual, including where PigeonPost is behind.

PigeonPost Thunderbird Outlook 365
Price Free, GPL-3.0 Free, open source Subscription
Platforms Windows, macOS (Apple Silicon) and Linux Windows, macOS and Linux Windows, macOS and web
Where your mail lives With your provider and cached on your machine On your server, cached locally Account and server based
Works offline Yes, cached and searchable Yes Yes, cached
Search Local, instant, offline Local global index Local and online index
Cost of leaving None, your mail stays with your provider Low, standard protocols Account based

A calm promise

Some things PigeonPost will not do, on purpose. Calm and predictable is the whole point, so these stay off the table.

Nothing moves that you cannot move back

Download the build for your platform, point it at your account and see how it feels. Your mail stays with your provider the whole time. If it is not for you, it was never anywhere else.