satchel.email › Open source
A program that holds your mail should be one you can read.
satchel.email is open source, top to bottom. Your mail lives in a database on your own computer, and every line that touches it is on GitHub.
Local first
Mail, calendars and contacts sync straight from your provider into SQLite on your computer, with full-text search built in. Gmail and Microsoft sign in through your browser and hand the app a token, and every password and token is kept in your system keychain.
There's no satchel.email server in the middle: no account with us, no copy of your mail, nothing to breach. Changes you make are saved locally first and queued for the server, so the app works offline and never waits on the network to show you something.
A hosted version may come later, for people who want it. The desktop app will stay local first.
How it's built
Sync, storage, search, the outbound queue and proposals, shared by every way in.
The app, the CLI and MCP all send the same commands. Agents get a smaller set, checked in one place.
The interface has no framework: small, fast to load, and easy to read.
iCalendar, vCard and HTML-to-text are our own code. Libraries only where they pay: MIME, recurrence rules, TLS, IMAP, SMTP, HTTP and HTML sanitizing.
A local mail server with seeded accounts runs the integration tests, with no Docker.
Every significant choice has a short record of what was decided and why. There are 58 of them.
Run it yourself with satchel serve for the web UI, satchel mcp for agents, or satchel call to send any command from a script.
Licenses
| Part | License |
|---|---|
| The app: core, sync, MCP, CLI, desktop and web UI | AGPL-3.0 |
satchel-mime, satchel-ical, satchel-api | MIT or Apache-2.0 |
| The satchel.email name and logo | Trademark policy |
The app is AGPL so that anyone who runs a changed copy as a service has to share their changes too. The libraries are permissive so you can use them in anything, open or closed.
Libraries you can use today
satchel-mimeParse and build MIME messages. Sanitize HTML mail, strip trackers, turn HTML into readable text, quote replies, and spot deceptive links and failed authentication.
satchel-icalParse and write iCalendar, expand recurrence rules with their exceptions, handle invitations and replies (iTIP), alarms, and vCard.
satchel-apiThe command and event schema every satchel.email client speaks, for building your own front end or tools.
Contributing
satchel.email is maintained by one person, so the process is small. Bug reports and ideas are welcome as GitHub issues. For anything bigger than a small fix, open an issue first so we can agree on the approach. Your first pull request asks you to sign a short contributor agreement: you keep the copyright in your work.
Found a security problem? Please don't open a public issue. Use Report a vulnerability on the repository's Security tab, or email hello@satchel.email (details).