Mycelium
For macOS · Free · Offline

Your messages are full of deadlines you never wrote down.

Mycelium reads your messages and the mailboxes you connect, finds what's time-sensitive, and shows it as a list of dates. You approve or dismiss each one. Nothing reaches your calendar on its own.

10 MB · macOS 11 Big Sur or later · Apple silicon
No installer, no account, no Homebrew — Python ships inside the app.
Mycelium's review queue: items grouped by day, each showing the
              message it came from, who sent it, and what it was read as.

The review queue. Twenty-eight items, one keystroke each.

Privacy

It reads your messages. Here is exactly what that means.

Any app that touches your Messages history owes you a straight answer about where that history goes. Mycelium's answer is that it does not go anywhere — and the specifics are below, not buried in a policy.

Nothing is uploaded

Messages are read from the database already on your Mac and stay there. There is no account, no server, and no sync. Nothing to breach and nothing to subpoena, because nothing is held anywhere else.

Mycelium has no server

Two things touch the network, both optional. A daily GET of a static version file, which sends nothing at all. And any mailbox you connect — that talks to Google directly, from your Mac. There is no middle, because there is nowhere for a middle to be.

You choose what it reads

Nothing is connected until you connect it, one account at a time, and disconnecting revokes the grant rather than just forgetting it. A short config.toml narrows the rest to the people who matter and leaves group chats out.

Nothing is written on your behalf

Approving an item records your decision and stops. Putting it on your calendar is a separate, deliberate press. An app that reads your messages should not also be deciding your week.

All of it is MIT-licensed and short enough to read in an afternoon — check the claims against the source rather than taking them on faith.

The loop

How it works

  1. It reads your messages Locally, from the Messages database on your Mac. Nothing is uploaded.
  2. It works out what is being asked A plan, a deadline, a payment, a reschedule — and whether the surrounding conversation looks like a plan actually forming.
  3. It resolves the date Against when the message was sent, not when you opened the app.
  4. You approve or dismiss One keystroke each. Every decision teaches it what to stop showing you.
  5. It becomes a task Named after the person involved, with the conversation attached.
  6. You put it on your calendar Only if you say so. Nothing is written on your behalf.
The model

How it decides

iMessage Mail Telegram Prefilter Intent Date Judge Queue Conversation Past verdicts sources is it worth reading weighs it prior context
The weighing
+0.00 kept
0.0the line it has to clear
3hconversation it reads either side
22signals weighed
0network calls to decide
01

Nothing short-circuits

Every signal gets a vote. A message with no obvious request, in a thread where two people are trading times, still gets through — under the old chain it was dropped at the first test.

02

It reads the conversation

Not the batch it happened to arrive in. A question you already answered, or a plan someone moved an hour later, is settled — and gets treated that way.

03

It says why

Every item carries its own reasoning. What it learns from your dismissals can confirm that reasoning — never overrule it on its own, and never quietly.

One permission, granted by hand

macOS keeps Messages private and — unlike Contacts or Photos — it never shows a prompt for it. There is no API that can ask. Mycelium opens the right settings page for you; you flip one switch, once.

That is also why it ships as an app rather than a script: the permission attaches to Mycelium itself, not to your terminal.

Review

Built for hands that stay on the keys

A queue you can only click through is a queue you stop opening. Approving advances the cursor before the list reflows, so you land on the next item rather than back at the top.

JK Move down and upor ↓ ↑
AApprove — it becomes a task
DDismiss — and never see it again
U Undo, including what the decision taught
RCheck for new messages
escClear the selection
Why I built this

The things I missed were never written down anywhere.

Not the big ones. An invoice due Monday, a friend asking about Thursday, a date named in passing halfway up a thread. Every one of them was stated perfectly clearly by someone — just not anywhere I would look again. Writing them down means stopping the conversation to retype what the other person already said.

Everything I found that solved this wanted the messages instead: upload the thread, connect the account, trust the server. For a calendar convenience that is an absurd trade, and I did not want to make it — so Mycelium doesn't. The history stays in the database it is already in.

The approval step is the part I care most about. Software that reads your messages and then quietly writes to your calendar has decided something for you twice over. Mycelium shows you a list and stops. What happens next is yours.

— Bryant