Skim - Free, open-source AI email client for Windows
by•
Skim is a free, open-source (MIT) email client for Windows.
✂️ Minimal on purpose: no calendar, no rules engine, no bloat. Fewer buttons, less cognitive load.
⚡ Native Rust core (Tauri 2): ~5 MB installer, sub-second cold start, instant full-text search.
🔒 Local-first, offline-ready, zero telemetry.
✦ AI on your terms: bring your own Anthropic or OpenRouter key and Skim drafts replies in your voice and answers questions across your whole mailbox.


Replies
@nikita_zarubin I've migrated from Windows this year, but upvoted for branding only - great job, I like the anti-boring approach ;)
@nikita_zarubin Congrats on the launch! LOVE the website - you clearly put a lot of thought and personality into it.
@anna_ludwinowski that's true, I did! So glad you liked it! 🫶
I will take a look because anything has the be better than MS Outlook these days! Does it handle multiple email accounts?
@siridley Hey, my thoughts exactly 😄
No multi-account support rn. I thought it wasn't needed, but just yesterday I found myself in a situation where I actually did!
Soooo I'll probably add multi-account support in the next release or so. There are usually 2-3 releases a day btw 😄
@siridley Just added multi-account feature in new 1.0.4 release! 🎉
Curious how you handle Gmail OAuth secrets in a public repo though! Great launch, refreshing branding, and love every MIT license.
@aidan_codefox Hey, I'm flattered you love the branding! It's something I'm secretly proud of. At first I went the usual route - you know, purple, polished, sterile shit - but then I thought, "Hey, it's free and open source, right? Fuck it, let's have fun," and ended up with this wonderful zine landing you're looking at.
Okay, flex time's over - to your question.
tl;dr: there are no secrets in the repo. The magic is called PKCE.
Brace for the AI-slop explanation, if you're curious:
Do you have plans for Mac or Linux, or is Windows the main focus? The ~5MB installer and sub-second startup would be a pretty strong selling point for anyone tired of bloated Electron apps, so I'm wondering if expanding makes sense or if you want to keep it tight and focused.
@talhakhalidmtk I'd rather focus on Windows, but not because it's against product philosophy, but because I use only Windows 😄 If you want to add a builder for another OS - feel free to contribute!
Hey Nikita, congrats!
Any plans to release a Mac version?
@luis_parker thanks! I don't use Mac, but there's no obstacles to have such version. It would require new building pipeline and some settings. I invite you to contribute 😄
love that this is BYOK instead of yet another subscription tier, that's rare for an email client. since the AI can answer questions across the whole mailbox, does it send full email bodies to the API per query or is there some local pre-filtering first so you're not shipping your entire inbox history every time you ask something?
@omri_ben_shoham1 nice one! And no, it doesn't ship your inbox on every query. Retrieval is local first.
Under the hood the AI is a tool-calling agent. When you ask something, it searches your mailbox on your machine. What crosses the wire from that search isn't email bodies, it's compact rows: date, sender, subject, and a snippet capped at ~160 chars. That's the pre-filtering step you're hoping for: the full-text index narrows thousands of emails down to a handful before anything touches the network.
Full bodies go out only for the specific emails the model then chooses to open - and even those are truncated (roughly 6k chars per email, ~10k for a whole thread). Per query it's bounded to about a dozen reads, not your entire history. Trash and junk are excluded unless you explicitly ask for them.
finally an email client that respects my storage and my sanity, the 5mb install is unreal on windows. love that i can just plug in my own api key and skip the data-sucking defaults.
@asyadizili Enjoy! 🫶
Honestly the local-first angle is super appealing, and a tiny Rust installer sounds great. One thing that would seal the deal for me though, kind of a small ask, is per-account send aliases so I can manage work and personal replies without juggling separate logins. Would fit nicely with the minimal vibe too.
@lyaszkvraknr2o hey, looks like a solid feature! Tbh, I don't use aliases myself, so I'd love to understand the workflow. I'd super appreciate if you'll share more details in Github issue that I created for your request:
https://github.com/nikserg/skim/issues/7
A few things that'd help me nail the use case (feel free to add comment in Github issue):
What's your setup, one email provider (e.g. a Gmail with a couple of addresses attached), or genuinely separate ones like a work domain + a personal Gmail?
Do work and personal mail land in the same inbox for you, or would you rather keep them separate but just share one "send" experience?
What's missing in the current multi-account switcher for your case, is it the extra login, mixing the inboxes, or specifically picking who the reply comes from?
When you reply, should the app auto-pick the right "From" based on which address the original email was sent to?
love how lean this is, the rust footprint is wild. one thing that would sell me even more is proper vim keybindings for the inbox and reading panes, j/k navigation feels like a natural fit for something this minimal.
@yamurobancsyyp Yeah, j/k navigation works in inbox!
Love the minimal take, especially the Rust core keeping things snappy. One thing that would make it stickier for me: a quick "snooze until later today" or "remind me tomorrow" option right in the inbox. Most of my email backlog isn't urgent, it just needs to come back at the right moment, and that small loop would make Skim feel genuinely complete without adding much weight.
@sevda9qob Ouch, that's a hard one — a highly debatable topic. As for now, I'm closer to not implementing snooze than to implementing it.
However, there's a "canonical" thread about snooze, where my argumentation against the feature lives:
https://github.com/nikserg/skim/issues/8
But. But! Please do argue.