An email client for developers

Your email.
Your rules.

Organize mail with rules, customize the message list, and write replies in your editor.

Try inboxctl Watch a day with inboxctl

Display rules shorten subjects and color run results without changing the original messages.

A day with inboxctl

The inboxctl workspace with the folder pane, message list, and an open message
YouTube loads when you press play.

Completely keyboard-driven. (Emacs not required)

Group GitHub notifications by organization and repository, then shorten and color their subjects with display rules.

Find the email you need

Search your synced mail locally, by content, sender, attachment, and more. Use the same queries in folders and rules.

Configure everything in text

Choose your theme, layout, fonts, and message columns in TOML, using your editor or ours.

~/.config/inboxctl/config.toml

[ui]
theme = "inboxctl"
layout = "( folders / tags ) | ( message_list / message )"
message_list_format = [["unread", "flag"], "date", "from", "subject"]
block_images = true

[ui.font]
families = ["JetBrains Mono", "JetBrainsMono Nerd Font"]
size = 13.0

Sensible defaults included. You can disagree with all of them.

Pick one of four themes or create your own.

Handle email in bulk

Because GitHub can send 50 emails an hour. Archive all search results with M, or select messages with Space. Press u to undo. The rollback plan is one key long.

Rule with rules (and style)

File notifications automatically and flag mail that needs a reply. Use display rules to remove repetitive prefixes and make failed runs stand out.

~/.config/inboxctl/rules

# group GitHub mail by organization and repository
from:notifications@github.com
  subject~/^(?:Re: )?\[(?<owner>[^\/\]]+)\/(?<repo>[^\]]+)\]/
  -> file GitHub/${owner}/${repo} sort count

# file the mailing list and mark it read
list-id:rust-users -> file Lists/Rust, mark read

# flag mail from your boss and show a Dock dot
from:boss@corp.example is:unread -> flag, dot

# count unread messages in each folder
is:unread -> count folder

~/.config/inboxctl/display-rules

# drop the reply marker
from:notifications@github.com -> match:msg /^Re: / replace ""

# shorten the repository prefix and color it cyan
from:notifications@github.com -> match:msg /\[[^\]]+\/([^\]]+)\]/ replace "$1" cyan

# align PR numbers on the right
from:notifications@github.com -> ralign:msg /\S/ /#\d+$/

# show run results as green PASS or red FAIL
from:notifications@github.com -> match:msg /Run succeeded:/ replace "PASS" green
from:notifications@github.com -> match:msg /Run failed:/ replace "FAIL" red

Save with Cmd S to apply rules to existing mail too. Errors are underlined; your last valid rules keep working. A syntax error needn’t become an incident.

GitHub subjects with repeated bracketed prefixes and Re: markers
Before
The same subjects with the repository first, run results as PASS and FAIL, and PR numbers aligned right
After

More features

Try it before you buy it

Available for macOS. Supports IMAP, JMAP, and POP3.

Email me for a build