The SQLite Mirror
A disposable local read model holding mail, events, todos, and contacts. Reads answer in ~1ms directly from SQLite; dropping it loses zero data.
~/.local/share/mailbox/mirror.db
A fast, agent-oriented CLI and background daemon for email, calendars, tasks, habits, and contacts. Instant local reads from an offline SQLite mirror, write-through consistency, server-side Sieve routing—and three dedicated visual interfaces designed for the Omarchy desktop.
Free & open source · Linux · MIT
Interactive preview · authentic Omarchy Qt client, Quickshell widgets & CLI.
No display server, Qt, or desktop environment required. The background daemon owns all server connections and maintains an offline SQLite mirror; the CLI answers queries in ~1ms with zero network latency.
A disposable local read model holding mail, events, todos, and contacts. Reads answer in ~1ms directly from SQLite; dropping it loses zero data.
~/.local/share/mailbox/mirror.db
Outgoing messages stage in a disk-backed queue before SMTP submission. Network disruptions hold mail safely for retry rather than dropping or duplicating.
held queue · zero lost mail
Recognizes 2FA codes and magic links gated on the subject line. Copies the token to your clipboard, sends a desktop notification when collected, marks it read, and auto-trashes it after ~15m.
clipboard · notification · auto-trash ~15m
Every command supports structured --json with freshness metadata (behind: false). Discovery via mailbox commands.
mailbox commands · skill/SKILL.md
The GUI is not a monolithic program. It is three unbundled tools built for the Omarchy desktop, each interfacing directly with the daemon's Unix socket over NDJSON.
A HEY-style desktop client in Qt 6. Single view, content first: Inbox split into New for you and Previously seen, The Feed, Paper Trail, and Screener. Fanned card stacks for Set Aside and Reply Later ride the bottom. Includes Basecamp's Lexxy rich text composer, 5-second undo send, and Dark Reader mail theming.
make install-gui · ~/.local/bin/mailbox-gui
A Quickshell top bar clock and interactive popup window. Displays the monthly calendar grid with event dots, a year progress bar, upcoming meetings with one-click launch buttons (Join Zoom, Join Teams), weekly task checklists, and a natural language event entry pane.
plugins/mailbox.clock · Quickshell bar widget
A dynamic Quickshell bar icon that appears only when unread inbox mail arrives. Collapses completely when caught up so your bar stays distraction-free. The dropdown lists new arrivals for a quick glance and opens the message in the desktop client with one click.
plugins/mailbox.email · Quickshell notification dropdown
Instead of opening remote network connections on every command, a single long-lived daemon owns the servers and the Mirror. The CLI, GUI, and widgets all speak the same NDJSON protocol.
Local reads answer from SQLite in ~1ms. Modifying commands write through to the server before acknowledging with exit code 0.
Build and install only the components you want. Everything runs locally under your systemd user session with zero cloud intermediaries.
Requires Linux and Go 1.22+. The desktop client optionally requires Qt 6 with WebEngine; the bar widgets require Quickshell / Omarchy.
Full command guide & manual ↗git clone https://github.com/parnoldx/mailbox-cli.git && cd mailbox-cli && make install-all
mailbox setup.
systemctl --user enable --now mailbox.socket.
mailbox status in your shell, launch mailbox-gui, or use the Omarchy bar widgets.
Modular targets: make install (CLI & daemon only), make install-gui (Qt client), make install-plugins (Omarchy widgets), or make skill (AI agent skills).
Yes. The CLI and daemon are pure Go and have zero GUI or display server dependencies. You can run them on remote servers, headless devboxes, or in automated cron/agent environments with make install.
All three GUI components (the Qt client, the calendar widget, and the email notification bar) communicate over a local Unix domain socket ($XDG_RUNTIME_DIR/mailbox.sock) using newline-delimited JSON (NDJSON). They do not open network connections or parse databases directly.
The background daemon listens on IMAP IDLE and pushes sync cycles to remote servers. When you run a read command, it returns in ~1ms directly from SQLite. If the daemon is temporarily catching up, it answers with behind: true metadata instead of stalling.
A login code or magic link is not mail to triage, it is a token to collect: worth thirty seconds and then worth nothing. The daemon gates on the subject line, copies the token to your clipboard, sends a desktop notification when it is collected, marks it read so it never alerts you again, and moves it to Trash after about 15 minutes.
The desktop client includes a native C++ theme monitor (OmarchyTheme) that watches ~/.local/state/omarchy/current/theme/colors.toml. The instant you change your Omarchy theme (e.g. omarchy theme set "Gruvbox"), all window colors morph live with zero restart.
Never. Mailbox has no cloud relay, hosted server, or analytics. Your machine connects directly to your own configured mail, CalDAV, CardDAV, and Sieve servers over encrypted TLS.