A privacy-first desktop email client with AI built in. Your inbox stays on your machine.
Keyline is a fast, native desktop email client for macOS, Linux, and Windows. It speaks plain IMAP/SMTP, so your data lives where it always has — your provider and your local disk. The intelligence layer (classification, summaries, smart replies, an "Ask Keyline" agent that can search and act on your inbox) runs against either a model on your machine or your own Claude API key. No cloud sync, no telemetry, no account to create.
- You own your data. No proprietary backend. Connect any IMAP account — iCloud, Fastmail, your own server, Gmail/Outlook via OAuth.
- AI that respects you. Pick a local model (runs entirely on your machine, no internet needed) or bring your own Claude key. Both share the same tool surface, so the agent works the same either way.
- Smart without being noisy. Heuristic classifier sorts mail into Important / Conversation / Notification / CI/CD / Tickets / Newsletter / Promo / Bulk. Tracker pixels and remote analytics are stripped by default. New-mail notifications digest non-VIPs.
- Triage that scales. Smart rules (write them in plain English; the AI compiles to a structured rule), smart folders, snooze, send-later with undo, calendar RSVP, blocked senders, VIPs.
- Fast, native, small. Bun runs the host process; a system webview renders the UI. Single ~60 MB binary, no Electron in sight.
| Search | FTS5 across every stored message |
| Smart categories | Heuristic classifier with VIP override |
| Smart rules | Natural-language → compiled rule schema, with backfill |
| Smart folders | Rule-driven views in the sidebar |
| Compose | Rich-text editor, signatures, AI rewrite/tone/grammar, smart replies |
| Calendar invites | Inline RSVP — sends a METHOD:REPLY to the organizer |
| Send later | Schedule per-draft, plus 8 s undo on every send |
| Snooze / VIP / Block | Quick presets, always-notify VIPs, blocked senders hidden |
| Unsubscribe | One-click via List-Unsubscribe-Post when supported |
| Auto-mark read | Mail.app-style 1.5 s dwell |
| Tracker stripping | 1×1 pixels, common analytics domains, remote images blocked by default |
| Ask Keyline | Right-side agent panel with full tool access (search, summarize, draft, snooze, block, etc.) |
| Layouts | Column, Classic, Compact — all panes resizable & collapsible |
| Keyboard-first | Mail.app + Gmail bindings (j/k, c, r, e, #, s, u, /, ?, ⌘;, ⌘\) |
| Offline-aware | IDLE-based real-time sync, CONDSTORE/QRESYNC for incremental, banner when offline |
Requires Bun ≥ 1.1 and the Butter framework cloned next to this repo at ../butter.
bun install
bun run doctor # verify your toolchain
bun run dev # opens the appFirst run: open Settings → Accounts → Add account, paste your email and password (or click Sign in with Google / Microsoft for OAuth). For most providers Keyline auto-detects IMAP/SMTP via Mozilla's autoconfig service.
To enable the AI features, open Settings → AI:
- Local — download Llama 3.2 3B or Qwen 2.5 7B once; it runs offline forever after.
- Claude — paste an API key. Stored in your OS keychain, never on disk.
- Install & first run
- Features tour
- Keyboard shortcuts
- Architecture overview
- IPC contract
- Storage & migrations
- Sync model
- Agent system
- AI providers
- Testing
- Contributing
Full index in docs/.
bun install
bun run dev # start the desktop app
bun run test # run the suite
bunx tsc --noEmit # type-checkThe project follows a strict file convention: lowercase, no -/_/spaces, subfolder structure (src/foo/{index.ts, profile.ts} not src/foo-profile.ts), functional style, Bun never npm. See docs/contributing.md.
Apache 2.0. See LICENSE.