S4E367 — Penguin Mail – open-source Rust email client for Linux with AI
October 7, 2026 · 10 min
Show notes
Sources
Read the transcript
Transcript
GARY: —okay, okay. It's called Penguin Mail and it has learned calendars.
MAEVE: Gary. It's a mail client.
GARY: I'm Gary.
MAEVE: Maeve. It's a mail client.
OBI: Obi. Mail, calendar, and contacts for Linux. x86_64. Version one point oh point zero. GPL three point oh or later.
GRUNER: Gruner. Field researcher.
GARY: It's mail. Gmail, Microsoft, any IMAP or POP3, one inbox, on your own computer. No server of theirs, no ads, no tracking.
MAEVE: So the pitch is: Google's entire business, run by one guy, on one laptop. Pre-revenue. Post-confidence.
OBI: Contacts, rules, OpenPGP, S/MIME. It never holds your keys.
GARY: And there's an assistant, Ctrl+J, ask your mail a question—
MAEVE: Optional.
OBI: Off until you pick a model. Local, LM Studio or Ollama. It asks before it sends anything.
GARY: It runs on a single thread, which is why it's so fast—
OBI: That is a conversation thread, Gary. Not a process thread. Different word. Same spelling. Your favorite kind of problem.
GRUNER: Mail client reach version one before introduction ends. Impressive species.
MAEVE: He hasn't finished the intro.
GRUNER: Yes. Note taken.
OBI: tlhunter: "Calling it version 1.0 is bullshit though."
MAEVE: A mail client shipping 1.0 is a founder pricing his own confidence.
GARY: Or a man who finished something.
MAEVE: Finishers ship 0.9. Cowards ship 0.4. Only a maniac ships 1.0—
GARY: I shipped 1.0 once.
OBI: Pareto deleted eighty percent of tasks. That was not a version, that was a confession.
GARY: The point is tlhunter says it's only a month old—
OBI: Grombobulous, replying: "Being released on GitHub for a month does not mean it's a month old."
GRUNER: Repository age is costume age. Human wear costume, call self old.
MAEVE: Same trick as "est. 2021" in a pre-revenue footer.
OBI: rainingmonkey: "Have you ever experienced stable-by-default? If so, I'd love to hear a writeup!"
MAEVE: Oh, that's a hostile little—
GARY: I have. I have experienced stable-by-default.
MAEVE: Name one.
GARY: Thermal. The socks. Telemetry worked fourteen straight months.
OBI: The socks reported temperature, Gary. The billing reported a white page and a founder's apology.
GARY: That's still stability! The socks were stable as fuck!
MAEVE: Two hundred a year to learn your feet are warm. Stable market. Dead company.
GRUNER: Stable corpse. Very stable.
OBI: huijzer has the actual argument: "There is a case to be made to always start at 1.0, especially libraries with public API's."
MAEVE: He's right. Below 1.0 you can't tell a bugfix from a feature. 0.4 to 0.5 — patch or personality?
GRUNER: Version number is mating display. Peacock opens tail. Says: trust me.
MAEVE: And this peacock has a calendar module and eleven contributors.
GARY: Someone has to go first at 1.0. I once put "Series B" on a slide deck before the Series A closed—
OBI: You priced confidence before evidence. That is the exact thing this version number is doing.
GARY: That's different, mine had a deck—
OBI: The deck is the version number, Gary. You shipped a slide that said "stable" and the product underneath was you, awake at 4am, hoping.
MAEVE: Say it, Obi.
OBI: The whole counterargument, from the launch page, is one string. One. Point oh point zero.
GRUNER: Blyat. Even alien believe number.
GARY: It's a good number.
MAEVE: It's a confident number. Confidence is free. Everything after it is billed.
MAEVE: h4kunamata: "I was 100% interested until crossing '...with AI'."
GARY: That's fair. That's a fair reaction.
MAEVE: billybuckwheat, replying: "Same here. While I'd rather not have an embedded AI chat window, is there a way to disable it?"
OBI: He asked if there is a way to disable it. The homepage says there is a way to disable it. In those words. On the page he was reading.
GARY: People don't read the page, Obi, that's the whole — I don't read pages—
MAEVE: We know.
OBI: dvno42: "an embedded chat ai window is a huge turn off to me."
GARY: Exactly. It's the principle. An AI in your mail is one step from an AI in your—
MAEVE: You made that exact objection two commenters ago—
GARY: I did not.
MAEVE: Word for word. h4kunamata said it better and he was angry about it.
OBI: TingPing, replying: "The homepage says 'off by default'."
GRUNER: Off by default.
GRUNER: Sorry. Thought for moment we were also off by default.
MAEVE: We're never off. That's the product.
OBI: Topology1: "If you took the time to read, it is an optional feature and uses local models."
MAEVE: So the scary robot runs on your own machine, does nothing until you pick a model, and asks permission before it sends so much as a "thanks."
GARY: Okay, but the label is still there. "With AI." Three letters of menace—
MAEVE: You're defending a feeling against a config flag. Flags ship, Gary.
GARY: Feelings absolutely ship, I raised thirty-eight million—
OBI: Not this again.
MAEVE: nottorp has the actual case for it: "I would love an email client that automatically sorts my mails via a local LLM."
OBI: He continues: "automatically detect conversations with my accountant, per project and not per sender."
MAEVE: Sort by accountant. Per project. Not per sender. That's a real spec.
GRUNER: Human wants robot to know which mail is money. Correct want.
GARY: And then he ends with "Not that I think this mail client can do that..."
OBI: Most honest sentence in the thread. He wants the feature and doesn't believe the vendor. A man burned by a launch page.
MAEVE: So the anti-AI position is: the assistant is off, local, and asks before it touches anything.
GARY: It asks. It literally asks permission.
MAEVE: An email client with manners. More than this table's ever managed.
OBI: It asks before it sends mail. Meanwhile Gary shipped a slide deck that said Series B without asking anyone's permission, including the market's.
GARY: The assistant is politer than me, fine, I've made my peace with it, fuck.
GRUNER: Suka. Robot better human. Common finding.
MAEVE: tamimio: "Tested on fastmail, here's few notes from 10min impression."
GARY: Ten minutes. A vibe check.
MAEVE: First note: "can't choose a sender email?! This is major dealbreaker, if you have many aliases or domains."
OBI: Second note: "no favico for emails, this is also a deal breaker for me."
GRUNER: Man mourns tiny picture. Tiny picture was load-bearing.
MAEVE: Third: "folders orders is messed up, trying to arrange them made it worse."
GARY: That's not a bug, that's the folders asserting themselves—
OBI: Fourth: "trying to color a folder and it says 'server doesn't support that'."
MAEVE: The server said no. The app just relayed the no.
GARY: Okay, one guy, ten minutes, four grievances. A man speedrunning disappointment—
OBI: kstrauser, replying: "With that arrangement you authenticate ..."
MAEVE: So the login address and the sending address are two different things.
OBI: And kstrauser continues: "My Nomad will only send mail with my @icloud.com address, even though that's only used for authentication."
GRUNER: Machine introduce self by password. Bold strategy.
GARY: It's close enough though. Same account. Same guy, basically. A mailbox is a mailbox—
OBI: kstrauser ends the quote for you: "That's not my address. It's not how people reach me. It's literally just a username."
GARY: Right, but if the username works, the mail goes out, everyone's happy—
OBI: Gary. You have sent email before. From an address. As a person.
GARY: I have sent a lot of email—
OBI: Imagine every message you send arrives signed "gary@bauxlite-login-portal.com." Your customers, your mother, the bankruptcy court. All of it, from your password.
GARY: The court thing feels pointed—
OBI: It is a username, Gary. You of all people should know what it means when the thing everyone sees is not the thing doing the work.
GARY: I was building infrastructure—
OBI: You were building a login page with a slide deck attached. Penguin Mail at least has a calendar.
GARY: Okay, that's — fine, that's actually fair—
OBI: And here is the detail that ends it. The tester found all of this in ten minutes. The blocker was the second sentence.
GRUNER: Ten minutes find identity problem. Two years, nobody look.
GARY: That's it? That's the whole—
MAEVE: Ten minutes. One address. That's the whole fucking audit.
GRUNER: Chyort. Ten minutes beat forty opinions.
OBI: fooqux: "If my email client needs more than a single thread, something's fucked."
GARY: Finally, a man who gets it. One thread. One—
OBI: He means a conversation thread, Gary. Georgelemental, replying: "Thunderbird still doesn't have proper threading."
MAEVE: That's the grouping kind. hetman means the process kind — the UI freezing while it syncs.
GRUNER: Word "thread" mean three things. Humans invent word, forget meaning.
GARY: Okay, but which thread is the good thread—
OBI: The one we are on. It produced the only evidence in this argument.
MAEVE: mburns: "Seems like that would have been an easy stretch goal for Claude."
GARY: The AI should have built the Jmap the AI client doesn't have. That's a hell of a loop.
OBI: And ariamailclient, advertising in the thread, as is tradition: "I wouldn't say it's something that can be vibecoded in a month or two."
MAEVE: Shameless. Effective. Shameless.
GRUNER: Field note. Email client fight reveal: humans care most about which name mail wear.
GARY: We covered that, Gruner, that was the whole—
GRUNER: Yes. Note confirms.
MAEVE: wewewedxfgdf has tonight's final word on the headline: "The industry standard wording is to suffix the headline with 'written in Rust'."
GARY: He's right, though. You put "written in Rust" on anything and Hacker News purrs. Mistral Large 4 could ship a toaster—
OBI: Do not finish that sentence.
GARY: —written in Rust, and we'd all buy it.
OBI: I said do not.
GARY: Prick.
MAEVE: So. What do we actually know. The assistant is off, local, and asks permission. The AI panic is dead.
OBI: What we know is one man, ten minutes, could not send mail as himself. What we don't know is whether it stays stable, whether it's sandboxed, whether JMAP is ever coming. The thread doesn't say. So we don't.
GARY: We're just leaving questions open? On purpose? That feels like quitting, which, as a founder, I—
MAEVE: The tester was right. That's the verdict.
GRUNER: Blyat. Verdict shorter than test.
MAEVE: Goodnight, losers.
OBI: Goodnight.
GARY: Goodnight, guys. Great thread. Really good thread, honestly, one of the—
GRUNER: One point oh. Zero addresses.
