Local-first email: your own copy of your mail, in SQLite, searchable from a shell.
A .NET 10 daemon syncs an IMAP account into a local store with FTS5 full-text search and notmuch-style Tags, sends via SMTP behind a two-phase confirmation, and serves all of it over JSON-RPC 2.0 on stdio. Native AOT.
The mu4e/aerc experience for people who live in VS Code.
Point it at the same IMAP account you already read in Outlook, Apple Mail or Thunderbird. It syncs a local copy: it does not take over your mail, it does not have to be your only client, and the server stays the source of truth — so re-syncing from scratch is always a valid recovery path. Trying it commits you to nothing.
- There is no delete. No delete, expunge, trash or purge verb in the CLI, the MCP surface or the JSON-RPC protocol. Absent, not gated.
- Sending is off by default, behind a one-time confirm token:
send-previewmints it,send-draftconsumes it. - Credentials live only in the OS keyring, or an encrypted file where there is none. Never in the database, the logs, or an RPC response.
- No telemetry and no analytics, and no network call to anything but your own mail servers — hence no badges on this page, since a shields.io image is a third-party request per view.
- Agents get plaintext bodies only, never HTML, whether they reach the core through the CLI or the MCP adapter. Mail access otherwise hands an agent all three legs of the lethal trifecta: private data, untrusted content, and a way out.
What is left is a mail client.
MailCoded/mailcoded — the engine. It builds four commands, each a client of the same daemon:
mailcoded |
the CLI, one shot per invocation |
mailcoded-tui |
a full-screen terminal client, and the reference JSON-RPC client |
mailcoded-daemon |
the JSON-RPC daemon |
mailcoded-mcp |
an MCP adapter whose tools map 1:1 to CLI verbs |
The user manual — installing, accounts, the terminal client, every verb, troubleshooting.
Pre-release, MIT, by Yu Lin (@lywedo). The core, daemon, CLI, TUI and MCP adapter build and run, but there is no tagged release and no published binary: build from source with the .NET 10 SDK. Linux x64, Windows x64 and macOS arm64 are covered in CI; macOS x64 and Linux arm64 are untested. An editor extension is in progress, in a repository not published yet.
Search covers subject and body text, not attachment contents. IMAP only in v0.1; Microsoft Graph and Gmail OAuth2 are planned for v0.2. No calendar and no contacts, and neither is planned. No PGP, S/MIME, POP3, JMAP, HTML compose, mobile or web client, and no measured performance numbers.