Email and calendar, open source and on your own computer.
satchel.email is a fully featured mail, calendar and contacts app for Gmail, Outlook, Fastmail and any IMAP server. Your mail syncs straight to your computer, search is instant, and every line of code is open. There's no AI built in. If you want help, point your own agent at the plain files it keeps, or connect it over MCP, and it can propose replies and events for you to approve.
Free and open source. No account with us, no server in the middle.
Everything you expect from your mail app.
One app for your mail, your calendars and the people you write to. Fast, quiet, and built for the keyboard.
Gmail, Microsoft 365 and Outlook, Fastmail and other JMAP servers, and any IMAP/SMTP server.
Full-text search on your own disk, with from:, has:attachment and friends. No round trip to a server.
Day, week, month and agenda. Recurring events, alerts, and RSVP to an invitation from the email itself.
From the people you write to. One person, many addresses, synced with CardDAV, Google and Outlook.
Shortcuts for everything, and a command palette (⌘ K) that finds the rest.
Remote images and trackers blocked until you ask. HTML mail is sanitized and shown in a sandbox. Undo send.
Bring your own AI.
There's no AI inside satchel.email, and it never sends your mail to an AI service. It keeps your mail, calendars and contacts in a folder of plain files, and serves the same over MCP. Point Claude Code, or any agent you already use, at either one. It reads, and writes down what it would do. Nothing is sent, moved or scheduled until you approve it in the app.
~/Satchel or satchel mcpplain Markdown, or MCP toolsIt reads a folder, not your password.
satchel.email writes your mail, calendars and contacts to ~/Satchel as plain Markdown. That's the AI folder, and it's on from the start. Point Claude Code, or any agent that can read files, at it. It reads INDEX.md, opens the threads it needs, and drops a proposal into proposals/inbox.
Prefer MCP? satchel mcp serves the same reads and proposals as tools. Connect an agent over MCP.
You choose which accounts and how much history the folder holds. What's in the folder is all your agent sees.
> reply to Bob about moving our call Read mail/work/INDEX.md Read mail/work/threads/2026-10/can-we-move-our-call-7f3a/thread.md Read calendar/AGENDA.md Write proposals/inbox/reply-bob.md --- action: reply thread: 7f3a9c why: Bob offered Monday 10 or Tuesday 2; Monday is free agent: Claude --- Monday at 10 works for me. Talk then! Proposed. It's waiting in AI Proposals.
What an agent can never do
- Send, delete or move anything on its own. Agents can read and propose. That's the whole list.
- Delete anything permanently, even with your approval.
- Change your settings, create server-side rules, or touch its own permissions.
- See past its scope. Each agent gets the accounts and history you give it, and every proposal goes in a log.
Reject a proposal with a note and the agent can read why. Edit one before you approve it and your version is what goes out.
Local first, and open source.
Your mail syncs straight from your provider into a SQLite database on your computer. There's no satchel.email server in the middle, so there's nothing of yours for us to read, sell or lose. Passwords and tokens live in your system keychain.
The app is AGPL-3.0. The libraries it's built on are MIT or Apache-2.0, so you can use them in anything:
satchel-mimeMIME parsing and building, HTML sanitizing, tracker strippingsatchel-icaliCalendar, recurrence expansion, invitations, vCardsatchel-apithe command and event schema every client speaks
Why I built this
I wanted an AI to help with my email. Every way to do that asked for the keys: hand over the account, let a service read everything, and hope it doesn't send the wrong thing to the wrong person.
So I built the client I wanted. My mail stays on my machine. My agent reads a folder and writes proposals, and I approve them the way I'd review a pull request. Most days that's a few clicks over coffee instead of an hour of inbox.
It's open source because a program that holds your mail should be one you can read.
David
David Figatner, who built satchel.email
Get satchel.email
The code is open and builds today, but there are no downloads yet. The first release is waiting on:
- Google’s review of Gmail access. Reading and sending Gmail uses a scope Google restricts, so satchel.email needs Google’s verification and an independent security assessment before anyone outside a small group of testers can sign in with Google.
- Signed installers for Mac (Apple notarization) and Windows, so they open without security warnings.
- Microsoft’s publisher verification, so Outlook and Microsoft 365 sign-in doesn’t say “unverified”.
Until then you can build it from source. Fastmail, iCloud and any IMAP or JMAP server work fully, and Gmail works under Other (IMAP/SMTP) with a Google app password. Watch the repository to hear when the first release is out.
Also on Linux: a .deb package. Just the satchel command line, for servers and agents: every release. Or build it from source.
Then point your agent at ~/Satchel, or connect it over MCP.
- Fastmail, iCloud and any IMAP or JMAP server: everything, including calendars and contacts.
- Gmail: Google is still reviewing satchel.email's access to Gmail, so signing in with Google is open only to a small group of early testers for now. Until then, you can add Gmail under Other (IMAP/SMTP) with a Google app password. That gives you mail; Google Calendar and Contacts arrive with Google's approval.
- Microsoft 365 and Outlook: signing in works, but Microsoft labels the app "unverified" until its review is done, and some workplaces need an admin to approve it first.