/
Blog
Tutorial

Rusty Inbox 0.2.0: an Open-Source Email Client Where You Choose the AI

Abo-Elmakarem ShohoudOctober 29, 20267 min read
Rusty Inbox 0.2.0: an Open-Source Email Client Where You Choose the AI

Rusty Inbox 0.2.0 adds an optional AI assistant to the free, open-source email client for Linux, Windows and macOS, and you choose which AI it uses. Sign in with the ChatGPT subscription you already pay for, or bring a key for OpenAI, Anthropic or OpenRouter, or run a model on your own computer with Ollama. The model list comes straight from the provider, so you can pick any model it offers, search the list, and set how hard it thinks. The assistant proofreads, rewrites, translates and drafts your mail, summarizes conversations with their action items, suggests replies, checks suspicious mail for phishing, and can keep a Needs reply list and a daily briefing. All of it is off until you turn it on.

Rusty Inbox itself is a native desktop mail client: a Rust mail engine behind a Qt 6 / QML interface, with a Smart Inbox, Undo Send, instant push and keyboard shortcuts for everything. The first post tells how it is built; this one is about the AI.

Why bring your own AI to an email client?

Most AI email features come bundled with one vendor's model and one vendor's servers, and they read your whole mailbox to work. I wanted the opposite: the model I choose, the account I already pay for, and only the message I am working on sent anywhere. In practice that means three things:

  • No new subscription. If you have ChatGPT Plus or Pro, Sign in with ChatGPT uses it directly. No API key and no second bill.
  • Any model, the day it ships. The app asks the provider for its current model list every time, so a new model shows up without an app update. There is no model list hard-coded in the app.
  • Local when you want it. Point it at Ollama on your own machine and nothing leaves the computer.

What can the Rusty Inbox AI assistant do?

While you write

  • Proofread: fixes spelling, grammar and punctuation only, and highlights each change.
  • Rewrite: formal, friendly, shorter, longer, clearer or more persuasive.
  • Translate your draft into English, Arabic or any language you type.
  • Write for me: a one-line instruction or a few bullet points become the full email, written in the context of the conversation you are replying to.
  • Suggest a subject: three options to pick from.

Results are previews. Nothing in your draft changes until you click Replace, and your signature and the quoted message are never touched.

While you read

  • Summary of the whole conversation with its action items, the owner of each and its due date.
  • Three suggested replies. Click one and the reply opens with it.
  • Translate a message in place, then switch back to the original.
  • Attachment summaries for PDF, Word (DOCX), text, CSV, HTML and .eml files, without opening them.
  • Phishing check: a risk level and the reasons behind it: a Reply-To that does not match the sender, failed SPF/DKIM/DMARC, links whose text and real address differ, pressure to act now.

In the background (each one off until you switch it on)

  • Needs reply: mail that expects an answer from you gets a mark and its own list.
  • Follow up: mail you sent that asked for something and got no answer after a few days.
  • Ask in plain words: type ? and a question in the search field, such as "invoices from Cloudhost last month". The app turns it into a normal search you can still edit.
  • Daily briefing at the hour you choose: people first, then what needs action, then the rest in one line each.

One detail that took a real bug report to get right: the assistant knows which addresses are yours. A message sent from one of your accounts (even a shared team mailbox) with your main address in Cc is treated as yours. The summary says "you asked them to pay", and the suggested replies are your follow-ups, not answers to your own request.

How does it connect to ChatGPT, OpenAI, Anthropic and Ollama?

The AI lives in its own Rust crate, rusty-inbox-ai, with no UI code. Every provider streams its answer, so text appears as the model writes it, and every request can be cancelled.

ProviderHow you connectAPI it speaks
ChatGPT subscriptionSign in (browser, or a device code)Responses API (ChatGPT backend)
OpenAIAPI keyResponses API
AnthropicAPI keyMessages API
OpenRouterAPI keyChat Completions
OllamaLocal, or ollama.com with a keyOllama chat API
Any OpenAI-compatible serverBase URL (+ optional key)Chat Completions

The ChatGPT sign-in is a standard OAuth flow with PKCE: the app opens the provider's sign-in page in your browser and receives the result on a local port, or shows a code to type on another device. Sign-in tokens rotate on every refresh, so the app refreshes them one at a time and saves the new pair before using it. Thinking levels are translated per provider: a reasoning effort for OpenAI and OpenRouter, a thinking budget for Anthropic, the think switch for Ollama.

Model answers that the app has to understand (a summary with action items, three replies, a phishing verdict) are requested as JSON and checked before anything is shown. If an answer cannot be read, you see an error with a Retry button, never invented text.

What does the AI see, and what stays private?

  • Nothing is sent until you choose a provider in Settings → AI.
  • When you click a tool, the text of that message or draft goes to the provider you chose, and nowhere else. There is no Rusty Inbox server in between.
  • The background helpers are off by default. When you switch one on, it only looks at mail that arrives after that moment, not your whole archive.
  • Accounts you exclude are never sent, by any feature.
  • API keys and the ChatGPT sign-in are stored with your mail passwords in a local file that only you can read, never in settings or logs.
  • With Ollama on your own computer, nothing leaves it.

How do I try it?

On Linux, Flatpak is now the recommended package. It is signed, sandboxed, works on every distribution, and flatpak update keeps it current:

flatpak install --user https://karem505.github.io/rusty-inbox/rusty-inbox.flatpakref

Windows and macOS builds, the AppImage and the tarball are on GitHub Releases. If you already run 0.1.2 or later, Settings → Updates installs 0.2.0 for you. Then open Settings → AI, choose a provider, pick a model and press Test connection.

What I took from building it

The interesting part of putting AI into an everyday tool is not the model call. It is everything around it: letting people use the account they already have, never changing their text without a click, telling the model who "you" is, and saying plainly what leaves the machine. Those are the same questions every company faces when it brings AI into its own workflows. If your team is working through them, that is what my AI training for teams covers.

FAQ

Is the AI in Rusty Inbox free? The app is free and open source. The AI runs on the provider you choose: your existing ChatGPT subscription, your own API key, or a free local model with Ollama.

Can I use my ChatGPT Plus subscription instead of an API key? Yes. Choose ChatGPT subscription in Settings → AI and sign in. No API key is needed.

Can it run fully offline? Yes, with Ollama on your own computer. The model runs locally and no mail leaves the machine.

Does Rusty Inbox send my whole mailbox to the AI? No. Tools send only the message or draft you act on. Background helpers are off by default and, once on, only look at new mail. Excluded accounts are never sent.

Which models can I use? Any model your provider lists. The app fetches the list live, with search, and shows a thinking level for models that support one.

Try it, star it, or open an issue: github.com/karem505/rusty-inbox.

Share this post