Modal-vim
email.
IMAP, SMTP, Gmail, Outlook, JMAP. One client, every inbox.
Maildir on disk. SQLite index. tantivy search. hjkl-powered composer.
- a ● GitHub PRkryptic-sh/inbx #42 — wire IMAP IDLE socket 2m
- s ★ Linus T. Re: Maildir layout — looks fine, ship it 14m
- d ● Fastmail JMAPYou have 3 new messages 1h
- f · cron daemon [backup] nightly snapshot complete (124 GB) 3h
- g · Stripe workReceipt for invoice #INV-2026-0418 yest
- h · rust-announce Rust 1.95.0 released — let-chains stabilized 2d
why
An email client shaped like vim, not Outlook.
Modal everything
Normal/insert/visual modes in the message list, the reader, and the composer. Real motions, real text objects, real ex commands.
Hint mode
Press f, every visible message gets a label. Type the label, you're in the thread. No j-spamming.
Multi-provider, one client
IMAP/SMTP, Gmail XOAUTH2, Microsoft Graph, JMAP. One config, every account. Provider abstracted behind a trait.
Maildir + SQLite
On-disk Maildir per account. SQLite index for threading and metadata. tantivy for full-text. Offline-first.
hjkl-powered composer
Composer embeds hjkl — the same modal editor. Headers and body share one FSM. MIME built with mail-builder.
TLS or nothing
Implicit TLS or STARTTLS only. Never falls through to plaintext. Remote content blocked by default. HTML sanitized via ammonia.
providers
Whatever you use, inbx talks to it.
/me/messages,
/me/sendMail) tomorrow. Tenant-aware.
keys
The map you already know.
status
Alpha. TUI usable. Composer blocked on hjkl 0.1.0.
Status: alpha. M1–M5, M7–M9, M11–M19, M22–M23 landed. Read-only TUI panes, IMAP IDLE push, SMTP send, OAuth2 (Gmail + Microsoft), MS Graph backend, FTS5 search, JWZ threading, HTML render + sanitize, calendar invites, DKIM/SPF/DMARC + phishing badge, ManageSieve, List-Unsubscribe, mbox/.eml import-export, PGP/S-MIME detection, CardDAV.
Outstanding: composer (M6, blocked on hjkl 0.1.0 trait surface), GUI MVP (M20), JMAP (M21), templates (M24). Star github.com/kryptic-sh/inbx for releases. Sibling to sqeel, buffr, hjkl.