Your inbox is full of noise.
An email client that runs locally, uses AI to tag and sort your mail, and stays out of your way. Open source. No account needed.
As a founder, my inbox was drowning in cold outreach, marketing, and noise. The stuff that actually mattered got buried. I looked for a solution that was fast, local, and could use AI to sort through it all. Nothing fit.
I was inspired by tools like Linear and other well-crafted software that just feels right to use. Fast, keyboard-driven, no bloat. I wanted that for email.
So I vibecoded it. This is the result. It's early, there are plenty of bugs, and it's rough around the edges. But it works, it's fast, and it solves the problem I had.
It's open source and MIT licensed. Anyone is free to contribute, fork it, or just use it.
Want to try it without connecting your email first? There's seed data built in so you can test all the features with fake emails.
Warpmail is a desktop email client built for speed and focus. It runs entirely on your machine with no external servers or tracking.
- Extremely fast - Built with Go. Performance was a priority from day one.
- Local-first - SQLite on your machine. Nothing leaves your computer. No cloud, no tracking.
- Cross-platform - macOS, Windows, and Linux. Same experience everywhere.
- AI tagging - Emails get tagged automatically. Cold outreach, spam, marketing, receipts. Generate tags from your actual inbox or define your own.
- Intent detection - AI detects what each email wants: reply needed, FYI, scheduling, decision, feedback, etc. Configurable intents with color coding. Drives the triage view.
- Auto-summarize - Set which tags and priorities should be automatically summarized on sync. Important emails have summaries ready before you open them.
- Writes like you - Build a writing style profile from your sent emails. AI drafts replies that actually sound like you.
- Reply suggestions - AI suggests replies in triage. Review and send with one click, or send all suggestions at once.
- Keyboard-driven - Vim and traditional shortcut presets. Do everything without touching the mouse.
- Quick view - Preview emails without leaving the list. Navigate with keyboard, reply, summarize, or act on emails inline. Shows other emails from the same sender in a sidebar.
- Brief with B - One key to get a bullet-point summary of any email. Works in list, quick view, triage, and compose.
- Triage dashboard - Prioritize your inbox fast. Emails are split into "needs response" and "good to know" based on AI intent detection. Bulk actions to send all suggestions or mark all read.
- Triage briefing - AI-generated summary at the top of triage with real-time stats. Configurable refresh interval.
- Quick reply - Press T to reply with a one-liner without leaving the list or quick view.
- Snooze - Press Z to snooze an email. Pick from presets (1 hour, 3 hours, tomorrow, next week) or a custom time. Snoozed emails reappear when ready.
- Rules engine - Auto-move, tag, delete, or prioritize emails by sender, subject, body, or AI tags. Create rules with AI or manually. AI can also recommend rules based on your setup.
- Search - Full-text search across all emails. Filter by sender, tags, date range, priority, and status.
- Group by - Group your email list by priority, status, tag, date, or account.
- Stats dashboard - See emails per day, hourly distribution, priority breakdown, top senders, and tag distribution.
- Desktop notifications - Get notified for new emails. Filter by tags and priority so you only see what matters.
- Undo send - Configurable delay (0–30 seconds) before emails are actually sent. Cancel if you catch a mistake.
- Block sender - Right-click any email to block the sender.
- Dark and light theme - Switch between dark and light mode in settings.
- Your API keys - Bring your own Anthropic key. Stored in your system keychain. We never see it, touch it, or proxy it.
- Multi-account - Manage all your IMAP/SMTP accounts in one unified inbox. Presets for Gmail, iCloud, and Outlook.
- Custom folders - Create your own folders and move emails into them with rules or manually.
- Auto-updates - Checks GitHub releases for new versions and shows an update indicator in the sidebar.
- Demo data - Try all features with ~500 fake emails before connecting a real account.
- Open source - MIT licensed. Fork it, read it, contribute.
Try without connecting email: On first launch, click "Demo Data" on the welcome screen (or use Settings > Database > Seed Demo Data). This resets the database and loads ~500 fake emails so you can try all features—AI categorization, rules, search, etc.—before adding a real account.
-
Add your email accounts - Supports any IMAP/SMTP provider with presets for Gmail, iCloud, and Outlook. Start with one to test, but Warpmail shines with all your accounts.
-
Add your Anthropic API key (optional) - Enables AI categorization, reply drafting, and writing style profiles. Get a key at console.anthropic.com.
-
Create your writing style profile - Analyzes your sent emails so AI can draft replies that sound like you.
-
Categorize and create rules - Let AI tag emails as cold, spam, marketing, important, etc. Then create rules to auto-move them.
- macOS:
Warpmail.app(Universal - works on Intel and Apple Silicon) - Windows:
Warpmail.exe(64-bit) - Linux:
warpmailbinary
The app is not signed with an Apple Developer certificate. On first launch, macOS will block it. To open:
Method 1 (easiest): Right-click the app and select "Open", then click "Open" in the dialog.
Method 2: Go to System Settings > Privacy & Security, scroll down and click "Open Anyway".
Method 3 (terminal):
xattr -d com.apple.quarantine /Applications/warpmail.appchmod +x warpmail
./warpmail- Go 1.24+
- Wails CLI v2
go install github.com/wailsapp/wails/v2/cmd/wails@latest# Production build
wails build
# Development mode (hot reload)
wails devThe built app will be in build/bin/.
# macOS (Universal)
wails build -platform darwin/universal
# Windows
wails build -platform windows/amd64
# Linux
wails build -platform linux/amd64Or use the included build script to build all platforms at once:
./build.shClick the + button next to "accounts" in the settings. Presets are available for Gmail, iCloud, and Outlook that auto-fill the server details.
IMAP/SMTP settings:
- Email address: Your full email address
- IMAP host/port: e.g.,
imap.gmail.com:993 - SMTP host/port: e.g.,
smtp.gmail.com:465 - Username: Usually your email address
- Password: App-specific password (for Gmail, generate at myaccount.google.com/apppasswords)
Press h to see the full shortcut overlay. Two presets are available: Traditional and Vim.
| Action | Traditional | Vim |
|---|---|---|
| Move up | W / ↑ |
K / ↑ |
| Move down | S / ↓ |
J / ↓ |
| Open email | Q |
O |
| Extend selection up | Shift+W |
Shift+K |
| Extend selection down | Shift+S |
Shift+J |
| Command bar | K |
Ctrl+K |
| Action | Shortcut |
|---|---|
| Open email | Enter |
| Go back / clear | Esc |
| Command bar | F |
| Toggle panel | P |
| Help overlay | H |
| New email | N |
| Open last draft | O |
| Reply | A |
| Suggest reply (AI) | Shift+A |
| Forward | G |
| Delete | D |
| Mark read / toggle | R |
| Jump to top | U |
| Jump to bottom | Y |
| Copy email | C |
| Move to folder | M |
| Snooze | Z |
| Archive | E |
| Brief / Summary | B |
| Quick reply | T |
| Open attachments | Cmd+O / Ctrl+O |
| Action | Shortcut |
|---|---|
| Brief / Summary | Cmd+B / Ctrl+B |
| Write with AI | Cmd+G / Ctrl+G |
| Send (answered) | Shift+Enter |
| Send (waiting) | Ctrl+Shift+Enter |
| Action | Shortcut |
|---|---|
| Select | Space |
| Extend selection | Shift+W/S or Shift+J/K |
| Select all | Cmd+A / Ctrl+A |
| Clear selection | Esc |
| Action | Shortcut |
|---|---|
| Done | D |
| Snooze | Z |
| Reply | A |
| Use suggested reply | R |
| Brief me | B |
| Quick reply | T |
Click "rules" in the sidebar. You can describe a rule in plain English and AI will create it, or add one manually.
Rules run automatically in the background. When you add or change a rule, it gets applied to all existing emails too.
Fields: from, from_name, to, subject, body, tags
Operators: contains, equals, starts_with, ends_with, not_contains, has_tag
Actions: move, tag, delete, mark_read, set_priority
Scope rules per account or apply them globally.
Requires an Anthropic API key (stored in your system keychain). We never see it, store it, or proxy it. Choose different AI models per feature (tags, intents, summarize, writing) in Settings > AI.
Emails get categorized using your API key. There are sensible defaults, but you can let AI analyze your inbox and generate tags specific to the kind of email you actually get.
| Tag | Description |
|---|---|
| cold | Cold outreach, sales pitches, partnership requests |
| spam | Unsolicited promotional content, scams |
| marketing | Newsletters, promotional emails from subscribed services |
| important | Work-related, personal, time-sensitive, financial/legal |
| receipt | Purchase confirmations, order updates, invoices |
| notification | System alerts, social media notifications, automated messages |
Tags are fully customizable — add, remove, rename, recolor, and set descriptions in Settings > Tags. Click "Generate Tags from Inbox" to let AI suggest tags based on your actual email.
AI detects what each email wants from you. Intents drive the triage view, splitting emails into "needs response" and "good to know".
| Intent | Description |
|---|---|
| reply | Expects a reply from you |
| action | Requires you to do something |
| decision | Needs a decision or approval |
| scheduling | Meeting or calendar related |
| feedback | Asking for your input or opinion |
| fyi | Informational, no action needed |
| notification | Automated alert or system message |
Intents are customizable with colors in Settings > Intents. Generate from inbox or define your own. Filter which tags and priorities trigger intent detection.
Ask AI to analyze your sent emails and it builds a profile of how you write. Tone, length, greetings, sign-offs. When you generate a reply, that profile is used as context. You can tweak it anytime or regenerate it.
In triage, AI suggests replies for emails that need a response. Review the suggestion inline and send with one click, edit it first, or use "send all suggestions" to batch-send.
Press B to generate a brief/summary of any email. Works everywhere:
- List view: Opens quick view and generates a bullet-point summary
- Quick view: Shows a summary banner at the top
- Triage: Generates an inline briefing with summary bullets and a reply suggestion
- Compose:
Cmd+B/Ctrl+Bsummarizes the draft or reply context
Summaries are saved to the database so they persist across views—summarize in quick view and it's already there when you reply.
You can also enable auto-summarization in Settings > Summarize. Choose which tags and priorities should be summarized automatically on sync, or let AI recommend criteria based on your setup. Important emails will already have summaries waiting when you open them.
The triage view shows an AI-generated summary at the top with stats (emails in triage, need reply, FYI, pending). The briefing refreshes on a configurable interval (Settings > Triage, default 6 hours). Click "regenerate" to refresh manually.
Describe a rule in plain English (e.g. "move cold emails to trash") and AI creates the rule for you. It knows your existing tags and folders.
Click "AI Recommend Rules" in the rules panel and the AI will suggest useful rules based on your tags, folders, and existing rules. It recommends things like trashing cold outreach and marketing, setting priority for important emails, and organizing by folder. Review each suggestion and add with one click.
All data is stored locally:
| Data | Location |
|---|---|
| Database | ~/.warpmail/warpmail.db (SQLite, WAL mode) |
| Database (dev) | ~/.warpmail-dev/warpmail.db (when running with wails dev) |
| Attachments | ~/.warpmail/attachments/ |
| Passwords | macOS Keychain / Windows Credential Manager / Linux Secret Service |
| API Keys | System keychain |
| Settings | In-database key-value store |
| Component | Technology |
|---|---|
| Backend | Go 1.24 |
| Desktop framework | Wails v2 |
| Frontend | Vanilla HTML/CSS/JS |
| Database | SQLite (WAL mode) |
| SQL generation | sqlc |
| Email protocols | IMAP (TLS/STARTTLS), SMTP (TLS/STARTTLS) |
| AI | Anthropic Claude API |
| Security | System keychain (go-keyring), DOMPurify, bluemonday |
internal/
app/ # Application logic and frontend bindings
ai/ # Anthropic API client and AI tasks
db/ # Database layer and migrations
db/sqlc/ # Generated SQL queries and models
email/ # IMAP/SMTP client
detector/ # Pattern-based spam/cold/receipt detection
keyring/ # System keychain integration
rules/ # Rule matching engine
seed/ # Demo data for testing without a real account
frontend/
dist/ # Frontend assets (HTML, CSS, JS)
The database layer uses sqlc for type-safe SQL queries.
# Regenerate after modifying SQL
sqlc generateSQL files are in internal/db/sqlc/.
go test ./...Tests cover input validation, HTML sanitization, and the rule matching engine.
MIT