Diary of a Weekend Linux Warrior

Building a mail app

Linux desktop mail clients weren’t working for me, so I’m building my own.

2 min read 414 words

Every time I install Linux, I eventually end up using Thunderbird as my email client. It works fine. It does most of what you’d expect from an email client.

But it never quite feels right to me.

It’s not particularly keyboard-friendly, it feels bloated in places, and after using faster, more opinionated applications, I kept finding myself wishing there was something different.

So, as an experiment, I asked myself: could I build my own email client with the help of AI?

I know almost nothing about building desktop applications, but I figured I could give it a shot.

We started by debating architecture. After going back and forth on different approaches, we landed on something inspired by Ghostty: a Rust core, with GTK4 handling the Linux interface. The idea is that the core could eventually support other platforms while still building a native Linux application today.

The design principles were pretty clear: keyboard first, a nice UI, and focused on speed.

And then I let the AI loose.

I started by using Beads to manage the work, but eventually moved everything to GitHub, which I knew would be the long-term home for the project. Agents created issues. Other agents picked them up and worked on them. We took a TDD-heavy approach to try to make sure that one piece of work didn’t unexpectedly break another.

The first few versions were rough. For about two days, I couldn’t actually read my email.

But eventually, things started to click into place.

The agents have been surprisingly interesting to watch. I’ve been impressed by how they reason through bugs and other problems, and how they take screenshots to validate whether something is actually working.

They’ve also missed some pretty basic functionality along the way.

For example, who really needs to wire the Compose button to the code that opens the editor anyway?

So far, though, the experience has been great. It’s been six days of letting agents work on the project, and I now have a mostly functional email client.

It’s far from finished, and I’m sure I’ll find plenty of things that need to change as I actually start using it. But going from an idea—“I wish there were a Linux email client that worked the way I wanted”—to something I can actually run in less than a week has been pretty remarkable.

You can check out Postio on GitHub, along with all the issues the agents have created, discussed, and picked up along the way.