Penguin Mail – open-source Rust email client for Linux with AI
penguin-mail.com
[32 comments hidden]
A mail client is always a tough thing to get right so I'm glad you're working on one
I love then idea that as the total cost (time/money/attention) of personalizing software continues to come down, more people will be able to encourage a diaspora of options, tailored to each niche.
[3 comments hidden]
This is one of those types of app that really benefits from a proper menubar with several top-level menus so the user isn’t stuck spelunking submenu tunnels.
[5 comments hidden]
[hidden]
[3 comments hidden]
Quick grammar correction can also be nice. Not super important, but nice.
[2 comments hidden]
yeah, that too.
But these MUST have a local option first and foremost, this is something that any local model can do, even the smallest ones.
But even before that there would need to be a set of APIs from the DE, imho. I think that GNOME is going into this direction with their AI center, i whish KDE would start looking into that too
[23 comments hidden]
They will probably all be abandoned within the year.
[18 comments hidden]
Linux really need applications more polished, that’s what they are bringing to the table.
[7 comments hidden]
So I had Claude whip up a super fast image browser that had some features I really like from a Mac app I use. It looks better than 90% of Linux apps, is super fast and fits me like a glove.
Of course some of these mail apps will be abandoned, but they also provide an opportunity to make things more attractive on the Linux side and win some users.
[3 comments hidden]
[2 comments hidden]
[hidden]
[5 comments hidden]
[4 comments hidden]
[5 comments hidden]
Linux mail clients tend to look how the desktop toolkit look.
What is wrong with how kmail, Geary, Elementary-mail or Evolution look and behave?
Mail client has been a solved problem for decades already.
[4 comments hidden]
None.
All of them slowed them to a very painful crawl.
[3 comments hidden]
[2 comments hidden]
[hidden]
I compared for instance evolution and outlook, evolution has always had much faster searches.
Having said that, having a bit of digital hygiene goes a long way.
[3 comments hidden]
This could be a proclamation for ALL vibe coded software. As a matter of fact, I think this is what marks software as "Vibe Coded". It's fun while the vibes last. The first few GitHub issues bring excitement because, "hey! people are actually using my project!". So the author prompts a few bugfixes or features. Then the GitHub issues become unmanageable. The author doesn't really KNOW why things aren't working. They can't find anything in the codebase without grep (this is true for the agents too). After awhile, it's not a good vibe anymore.
[2 comments hidden]
[hidden]
Also, I'd like to know what "after a while" means, concretely. Seems to be working out all right for me on the 4 new apps I've started that I wouldn't have time for otherwise, thanks to AI. I'm at 184 revisions in one of the projects and it works fine so far.
[hidden]
[6 comments hidden]
- can’t choose a sender email?! This is major dealbreaker, if you have many aliases or domains.
- no favico for emails, this is also a deal breaker for me, as I used it to quickly skim and find or check new emails.
- folders orders is messed up, trying to arrange them made it worse
- trying to color a folder and it says “server doesn’t support that”
Also the UI needs more polishing overall.
[2 comments hidden]
I'll stick with the web UI in that case. Are you using any other clients on Mac or Linux?
[2 comments hidden]
Ugh, this drives me nuts. It's the same reason why I stopped using my Supernote Nomad for email.
I use iCloud+ email with a custom domain. With that arrangement you authenticate to Apple's servers with your iCloud "primary address", like someone.somename@icloud.com. Then you can send and receive email with your custom domain email address, which is the one you're actually using. But not with Supernote, or apparently Penguin Mail. My Nomad will only send mail with my @icloud.com address, even though that's only used for authentication.
So yeah, I just stopped using it altogether. That's not my address. It's not how people reach me. It's literally just a username.
[9 comments hidden]
[6 comments hidden]
I wouldn't say it's something that can be vibecoded in a month or two. Proper design and implementation take time if you want to handle accounts with hundreds of thousands of messages seamlessly.
[2 comments hidden]
[3 comments hidden]
These days with the convenience of having LLMs at developer’s disposal, it feels unjustified to use electron like apps.. whenever I see “one app all/multi-platform”, I feel discouraged to give it a genuine try.
I tried a bunch of email clients and then crawled back to mail.app + Calendar.app on MacOS simply for how native it feels.
[2 comments hidden]
[hidden]
Interesting. TIL about this. I added myself to the waitlist.
[5 comments hidden]
Example:
"Penguin Mail – open-source email client for Linux with AI, written in Rust".
Its important, or people might miss the most interesting/important thing about your software.
[25 comments hidden]
I like the idea of a native Linux email client. The UI looks pretty good too. It's really not hard to beat thunderbird.
Calling it version 1.0 is bullshit though. It's only about a month old: https://github.com/c9dev/penguin-mail/graphs/contributors?al...
A project with the complexity of an email client cannot be considered stable in a month. There are bugs that will only show up after a year. It has a calendar after all.
[6 comments hidden]
2. Seems odd to assume instability by default without evidence.
[13 comments hidden]
I don't understand this mentality. It's an email client. There's not a lot needed UI-wise to make a functioning interface. Display a list of emails, show the full message when you open it, etc. I don't see anything functionally different between this email app and basically every other one I've ever used.
You've either got insane standards or are using email way different than I.
[4 comments hidden]
[3 comments hidden]
But from a normal user's standpoint? I don't care. If my email client needs more than a single thread, something's fucked.
I randomly bounce between Thunderbird and KMail and honestly I can't tell the difference except cosmetically. Both are snappy. Neither crash. Both send and receive emails just fine.
[5 comments hidden]
I know things like that don’t bother some folks and that’s fine, but others like myself can’t turn the visual parts of their brains off and so some software feels like nails on a chalkboard to use.
[hidden]
[hidden]
That might be the most accurate description of Thunderbird that I've come across. It's hard to pinpoint exactly what's wrong with Thunderbird, despite me using it every day. Somehow it feels like the emails aren't the important bit of the UI, but I also couldn't tell you what I'm looking at instead.
[2 comments hidden]
I often find myself in situations where someone wants to break the UI I like, because they're used to something else.
It seems that most of the time, "feels right" just means "it works like I'm used to in other software". So: GMail, Outlook, whatever. Which is sad.
I wonder how would you react to "TheBat!" or Pegasus Mail?
[hidden]
Glancing at screenshots of TheBat! and Pegasus Mail, i don’t find them objectionable in the way I do Thunderbird. They’re just old school desktop clients like I used in the late 90s/early 2000s, which I generally find workable. They’re not quite my preferred style these days (which falls into the “it’s not what I’m used to” bucket you mentioned) but I could probably get used to them again if I had to.
Thunderbird on the other hand feels wrong somehow, and the recent UI “modernization” didn’t do much to change that.
[hidden]
I don't understand this mentality.
Human communication is one of the most complicated activities in existence. Most (all) clients are modelling it very poorly.
[hidden]
I remember waiting for ~15 years until Thunderbird finally implemented rich content support in the e-mail list (needed for a proper 3-column layout, as otherwise the e-mail list, being a simple table, wouldn't fit on the widest screens available).
So, yeah... Not a lot, but Thunderbird has been missing the bar for over a decade.
[5 comments hidden]
There is a case to be made to always start at 1.0, especially libraries with public API’s. The reason is that if you use semantic versioning then below 1.0 you can’t properly declare a new release to be a feature or bugfix release (for example, 0.4 to 0.5. Is this bugfix or feature?). Above 1.0.0 this is easy (for example 1.1.0 vs 1.0.1).
[3 comments hidden]
Naturally, the users should treat those libraries as beta versions and only use them in production at their own risk.
> you can’t properly declare a new release to be a feature or bugfix
0.5.0 vs 0.4.1?
[2 comments hidden]
In practice, 0.5 can be assumed to be breaking but then how do you specify non breaking new features? 0.4.1? Moving to 1.0.0 makes things a lot clearer. For breaking, just go to 2.0.0 etc
[hidden]
You don’t. As soon as you feel the API is stable enough, move to 1.0.0. 0.x is for the “yeah the API doesn’t feel right just yet but it might be useful for early adopters” stage.
I know there’s the tendency for mature projects to live in 0.x for a long while, yeah – definitely try to avoid that. But 0.x is a useful first step for libraries, especially if the API is non-trivial.
[6 comments hidden]
For people that want a terminal client with tabs, integrated html viewer(including images), markdown compose, MCP, with unified inbox, I built notmutt.
[4 comments hidden]
[hidden]
[2 comments hidden]
But apart from given what I've seen from my experience with handling maildir, actually implementing mail sync, storage, and all the other things associated with mail AND calendar, it sounds risky to use a project this young.
[hidden]
That’s about a completely different client: https://news.ycombinator.com/item?id=49990103
Perhaps you’ve accidentally replied to the root thread instead of that comment?
[6 comments hidden]
[7 comments hidden]
Can this be compiled for other operating systems than Linux?
[2 comments hidden]
(This used to come at the cost of code quality, but increasingly does not.)
[4 comments hidden]
[3 comments hidden]
There was an entire talk given about the pain of needing to switch Linus Torvalds' divelog app from GTK to Qt and they seemed to have the same opinions I do: https://www.youtube.com/watch?v=gGZyVSOnqm0
Perhaps GTK4 is different and looks better cross-platform, I don't know, but I haven't heard of any new/prominent cross-platform apps that actually use it.
And the way I have been observing several top gnome devs' attitudes and abusiveness towards their own users the last handful of years does not sit well with me.
[2 comments hidden]
[hidden]
Yes but I mentioned that because to me gtk still looks ancient today while Qt looks native on each platform IMO.
> Good luck writing anything in Rust in QT.
There is this thing now: https://www.qt.io/blog/rust-ui-framework-via-bridging-techno...
And there was already multiple Rust bindings: https://wiki.qt.io/Language_Bindings
[3 comments hidden]
- Detection of one time login codes (which is annoyingly getting more popular). It's annoying to manually copy paste them
- Detecting whether an email contains something that requires urgent action (eg court documents, complaint processes, lawyers)
- Options to filter out the torrent of "detected new login" emails
- Options to filter delivery spam (I often get 3-6 emails about nonsense minor delivery updates about - received, at customs, out for delivery etc)
ie doing clever and useful things with the content of emails based on common content and actions
Or maybe these just apply to me?
[6 comments hidden]
[5 comments hidden]
[3 comments hidden]
KindOfCoders, AI is a very useful tool, but nothing works like the way you're explaining. I am kind of finding it hard to articulate the problem, because the assertion is just a bit wild. So I will do my best.
Thunderbird has been in production use for over 20 years, many many smart people have put their time into it to make sure it works correctly, yes, it is a bit clunky, it has a lot of craft, but you're not going to replace that much labour with running an AI agent for a few hours; despite the AIs usefulness in finding bugs and vulnerabilities. Not yet at least.
[hidden]
I assume what KingOfCoders suggested is to run an agent almost like an antivirus which I guess sounds somewhat interesting but you'd have to re-run it on every update and probably spend many more hours+tokens for such a system to work properly.
But perhaps once inference gets truly cheap repository maintainers should include AI security checks for new software as part of their pipeline? I think that would make sense. Especially for repos that are frequently pwned like npm!
[2 comments hidden]
Google hasn’t verified this app
The app is requesting access to sensitive info in your Google Account. Until the developer (support@penguin-mail.com) verifies this app with Google, you shouldn't use it.
[hidden]
Why am I not using Thunderbird? Aerion's UI is much better, and most importantly snappier, especially on my older laptop.
[4 comments hidden]
[3 comments hidden]
[hidden]
Viewing: I have a message or messages stored on disk in files or mboxes or a maildir. How do I render them? Example use case is evidence in a law suit or, more likely, emails I’ve put in a shared drive to help me and my partner argue with our landlord. Yes, I could just have a Gmail folder for these but I don’t want to have one foot in a file-filesystem and one in a mail-filesystem. I want “lease_2024.pdf” and “20240401_deposit_confirmation_002.eml” to both be files. But then of course we have…
Filesystem interface: Emails have important attachments with MIME file names. Or perhaps a more keen observation is that some named files have emails as attachments! I’d like to symlink into a virtual FS that keys files off a UUID / Message-ID, and be able to mount that virtual FS from any mail store I have available (Gmail API, JMAP, IMAP, .tar archive, mbox, maildir, or .eml files.) Most conversations I have with people don’t involve files, and most files don’t involve conversations, but when they do I want them to feel natural and not some kind of special category of filey-messagey thing that doesn’t play well with plain files or, less commonly, plain messages.
Composition and sending: Creating a new message involves making a new file and then using that file to drive a sending API. I want to compose a beautiful email using a tool that is good at that job. Maybe I’m using vim to draft it in markdown with macros and tools to machine build certain complex parts? I also need some mime aware tooling — sometimes — to help prepare a bunch of attachments that may or may not have names related to their names on disk! I want all of this to be scriptable, on the occasions when it’s complex (30 part message for a client’s loan application!) and easy when it’s ad hoc (to: mom, see cat.jpg).
Search: email is notoriously the extension of and replacement for my long term memory. I have gathered message history from many sources and accounts over the years. I need to manage these into packed archives for the old ones, editable archives for the current ones, promote the former to the latter, and arrange new messages into the system. This feels like another separate tool.
I’m sure there are other potential tools lurking here as well. Separate rendering, composition, sending, receiving, searching, and archiving, feels like the goal. Most new email apps I see try to implement all of the above in one new package when, really, it would be great to see innovation on each branch of email as separate tools.
My PDF viewer doesn’t need to innovate on file browsing! My SVG drawing tool doesn’t need to innovate on mounting remote filesystems via SSH!
[hidden]
thank you all :)
[2 comments hidden]
Also it is made by pivotd ? What is it ? What is the end game ?
Genuinely curious as I am in the mail space with klar.im
[3 comments hidden]
[2 comments hidden]
[8 comments hidden]
[2 comments hidden]
[hidden]
[2 comments hidden]
As long as it tries to be the "I" in "AI" and do something useful like automatically detect conversations with my accountant, per project and not per sender mails including somehow labeling mails referring to multiple projects with multiple labels etc.
Not that I think this mail client can do that...
[hidden]
Drafting emails with LLMs is... ugh.
And assistant chat? Really?
Okay, two things might be great: translations (preferably local, e.g. using Project Bergamot) and message summary (in case somebody does send an unedited blob of LLM slop to me and social dynamics don’t let me send it to spam).
[2 comments hidden]
[hidden]
I really appreciate that we have a choice, but I honestly don't get how anyone can call Thunderbird an awesome email client given it's UX - am I using the wrong Thunderbird? It gets the job done, but the UI is bloated(all options must fit onto the screen at all times), slow and confusing. Happy to see alternatives emerging - vibe-coded or not.
[hidden]
[hidden]
[3 comments hidden]
[hidden]
https://terminaltrove.com/herald/
https://terminaltrove.com/matcha/
And this is the one I use with Gmail, Outlook, Yandex:
[hidden]
[17 comments hidden]
Sorry for the off-topic, but Google (and all ad networks) should be legally required to vet their advertisers. That's gotta be the worst I've seen.
[2 comments hidden]
[hidden]
[3 comments hidden]
[^1]: https://www.bloomberg.com/news/articles/2026-08-27/-locker-k... [^2]: https://www.aa.com.tr/en/europe/polish-minister-accuses-meta...
[2 comments hidden]
[hidden]
[hidden]
Ublock is still a thing. Or use Brave as thats got baked in ad blocking which can be combined with ublock to make it even more effective. Then adguard or pihole on your local network so no analytics/tracking data is still being pushed out.
[2 comments hidden]
I use Penguin as my daily driver, and I made it exactly because of what I was missing on other mail clients, but idea after idea brought me here to share it with everyone, my intentions are to continue development and not keep it stale or let it die, there are loads of things i want to add but I also don't want to lose any stability, a nice balance is what I'm looking for
[3 comments hidden]
The hero pictures look AI generated yes but the individual products look like "normal TEMU"?
[2 comments hidden]
https://wccftech.com/customer-buys-32tb-external-hard-drives...
[3 comments hidden]
What it does: • Aggregates Gmail, Microsoft (Outlook/Hotmail/Microsoft 365), Fastmail, iCloud, Yahoo, and any IMAP/POP3 account into one inbox • Calendar support for every account (Google Calendar, CalDAV) • Contacts with CardDAV integration • OpenPGP and S/MIME signing/encryption — keys never leave your machine • Gmail-style categories bar (Primary, Updates, Promotions, Social) • Send Later, Undo Send, templates, Markdown compose • A built-in AI assistant that can summarize threads, draft replies, manage rules, and search calendars. It runs on a local model (Ollama/LM Studio), an Anthropic API key, or Claude Code — you pick per job • Remote content blocked twice (WebKit filter + CSP), JS off by default • Runs in the tray at ~55 MB
It's GPL-3.0 and available as .deb, .rpm, Arch package, snap, tarball, and Flatpak. Not on Flathub yet — that's next.
We built it because existing Linux email clients felt bloated or didn't respect privacy. The AI assistant is a nice-to-have but not required — the app works great without it.
Feedback welcome: install experience, missing features, anything confusing. Happy to answer questions about the Rust/GTK4 architecture too.
[2 comments hidden]
Also, from the AGENTS.md
> # Working with the owner
> The standing instruction is to decide on taste and keep going without stopping to ask: build a complete, good-looking client. Ask only for decisions that are theirs, such as the licence or anything outward facing.
Any learnings from this kind of interaction?
[2 comments hidden]
1. Install the GTK stack:
pkg install gtk4 libadwaita webkit2-gtk_60 pkgconf
2. FreeBSD ships WebKitGTK 2.46.6 and the project turns on the v2_50 feature of the webkit6 crate, so switch that to v2_46: sed -i '' 's/v2_50/v2_46/' $(git grep -l v2_50 -- '*Cargo.toml')
After that, cargo build completes against 2.46.
jttnr[25 comments hidden]
koiueo[10 comments hidden]
KingOfCoders[9 comments hidden]
IsTom[hidden]
koiueo[4 comments hidden]
They argue that just as programmers once wrote ASM and C, the arrival of Java and Python meant you no longer had to be a neckbearded autistic kid to write software that doesn't leak memory or segfault.
Arguments like this show me you’ve never done software engineering seriously.
Despite compilers (written by some of the smartest engineers on Earth) trying hard to prevent developers from writing shitty software, those new age "engineers" still managed to ship software that crashes, leaks, and generally sucks.
I'm not saying this email client is not secure (although I'd bet 5$, it is). But it seems beyond silly to assume software is automatically safe just because a new piece of tech can potentially find vulnerabilities. Intent still matters. And the 99% would never have the intent to write secure software.
brailsafe[3 comments hidden]
Hard agree, especially the apparent 99% of AI boosters on HN who seem to basically only care about shipping arbitrary products as fast as possible and skipping the whole middle part where someone sweaty person is grinding through the details intimately, all day, and while they should be sleeping.
At my last place, it was a battle to convince the narcissistic idiot CTO and even one of our senior engineers (both in age and experience) that it was important to encrypt customer data before it transited through third-party cloud service providers. People don't—and aren't incentivized—to give the slightest shit about quality, security, you name it.
kdkwcjkejdwijc[2 comments hidden]
This normally happens on two scenarios: a) they are not paid enough to care that much or b) they are paid more than enough to not have to care that much.
Either way it’s almost always down to how much the company is willing to pay for people that actually care about these things.
brailsafe[hidden]
geraneum[hidden]
… but as shown by many shovel sellers… their shovel…
Here I fixed it.
askonomm[2 comments hidden]
LtWorf[hidden]
achempion[11 comments hidden]
Other interesting problem to solve for mail clients is the editor. You should be able to forward/edit untrusted html content. Source: I develop tecotype.com for mac/linux/windows.
scandox[5 comments hidden]
achempion[3 comments hidden]
scandox[hidden]
setopt[hidden]
One good alternative is AppImage. Works on every distro out of the box, but doesn’t have the permission system of Flatpak.
PurpleRamen[hidden]
melicerte[2 comments hidden]
achempion[hidden]
asdfqwertzxcv[3 comments hidden]
achempion[2 comments hidden]
For example, I'm using catch-all address with fastmail. I wasn't able to find any client with the right design that would allow me to define sender address and email account separately during composing, so I can use "alias@test.com via me@example.com" as a sender.
You can send "ping me when linux available" and I'll follow up.
asdfqwertzxcv[hidden]
If I can be a beggar and a chooser: The vim keystrokes to go to the top or bottom of the current email list and/or the conversation thread items are sorely missed.
gen2brain[3 comments hidden]
I did that in my IUP fork, bold, italic, headings, link, image, table, that can all be mapped to native text widget, can load and save markdown from that.Will it look as intended, no, but, do not create websites when you send emails and everything will be fine.
jll29[2 comments hidden]
Should be TUI-based and for Linux + Mac.
bs9u[hidden]