A todo list that lives in your MacBook's notch. Press ⌥Space, type call bank 3pm, hit return.
No date picker. No second step. No mouse.
Your todos are stored as real Apple Reminders, so they sync to your iPhone and notify you like anything else.
A todo is one line of plain text. The parser lifts the date and time out of it; whatever's left is the title.
| You type | You get |
|---|---|
call bank 3pm |
"call bank", today at 15:00 |
standup 9:30 |
"standup", today at 09:30 — tomorrow if 09:30 already passed |
rent 25 |
"rent", the 25th of this month — next month if the 25th has passed |
gym friday |
"gym", the coming Friday |
email raj |
"email raj", no date |
! deploy 5pm |
"deploy" at 17:00, urgent — sounds an alarm |
The rule that makes this unambiguous: a bare number is a day, unless it carries am/pm or a colon. So rent 25 is the 25th of the month, while standup 9:30 is half past nine. #tags are stripped from the title.
A ! anywhere in the line marks the todo urgent. It has to be detached — call mom! keeps its exclamation mark and stays an ordinary todo.
A todo marked ! sounds an alarm when it comes due, and that alarm is designed to reach you:
- Focus and Do Not Disturb don't silence it. The alarm isn't a notification — TodoNotch plays the audio itself, the way a music player does, and Focus only filters notifications.
- Neither does your volume knob. When the alarm fires, TodoNotch raises the system volume to 60% if it's below that, unmutes if muted, and puts both back exactly as they were when you stop it. If the app is force-quit mid-alarm, the next launch restores them.
The panel opens itself when the alarm rings, with Stop and Done. It gives up after 90 seconds on its own. Closing the panel also stops it.
Urgency is stored as the reminder's priority, so a ! todo shows up as !!! in Apple Reminders and syncs to your iPhone — and a !!! you set on your iPhone will ring here.
Two things worth knowing:
- A todo only rings if it has a time.
! taxes fridayis marked urgent but never makes noise, because a day with no time would mean an alarm at midnight. The row shows a bell when it will ring and a bare!when it won't. - The alarm only rings on this Mac. Apple's own "Urgent" reminders ring on your iPhone too; that flag lives in a private framework EventKit doesn't expose, so it can't be read or written by any third-party app. This is a local reimplementation, not that switch.
If you'd rather it never touched your volume, the floor lives in one place — UrgentAlarmEngine.volumeFloor.
You can try the grammar without installing anything — docs/mockup.html runs the real parser in a browser.
Requires macOS 14 or later. Universal binary — Apple Silicon and Intel.
- Download
TodoNotch-x.y.zipfrom Releases - Unzip and drag TodoNotch.app into Applications
- Open it and grant Reminders access
Releases are signed with a Developer ID certificate and notarized by Apple. There is no Terminal step and nothing to disable.
On first launch macOS asks "TodoNotch is an app downloaded from the Internet. Are you sure you want to open it?" — click Open. That's the normal one-time confirmation every downloaded app gets, and you'll never see it again. It is not the "Apple cannot check it for malicious software" warning, which offers no Open button at all and is what you'd get from an unnotarized app.
TodoNotch has no Dock icon and no menu bar item — press ⌥Space to summon it. To quit, open the panel and use Quit Todo Notch.
You're installing a binary from the internet that wants access to your Reminders. Checking it is reasonable:
spctl -a -vv /Applications/TodoNotch.app # expect: accepted, source=Notarized Developer ID
codesign -dvv /Applications/TodoNotch.app # shows the signing teamOne thing that will look odd, so it's worth stating plainly: the signing identity reads Abhishek Kumar (339J4F7A9F), which is the Apple Developer team the releases are signed under — not this repository's author. If a signer name that doesn't match the author bothers you, build from source instead. The instructions below produce the same application.
Your todos are stored as ordinary Apple Reminders. They sync through your own iCloud account and appear in the Reminders app alongside everything else you keep there.
TodoNotch has no server, sends no telemetry, and makes no network connections of any kind. Nothing about your todos reaches the author or anyone else. The app requests full Reminders access because it creates, completes, renames, and deletes reminders; that access is used for nothing else. The source is here — Sources/TodoNotch/Store/ReminderStore.swift is every line that touches your data.
The one thing TodoNotch changes outside its own window is the system output volume, and only while an urgent alarm is actually ringing. It is read, raised, and put back — never recorded, never sent anywhere. Sources/TodoNotch/Alarm/SystemVolume.swift is all of it, and it needs no entitlement or permission prompt, which is precisely why it's called out here rather than left for you to discover.
Built for the notched MacBook Pro and Air (2021 and later), where the panel grows out of the notch itself.
It runs on any Mac meeting the macOS floor, but on a display with no notch it draws a small floating bar at the top centre instead of hugging a cutout. That appearance hasn't been verified yet — it's the code path every Intel Mac takes, and nobody has looked at it. Expect rough edges, and please open an issue with a screenshot if you try it.
git clone https://github.com/IsomerX/TodoNotch.git
cd TodoNotch
./scripts/make-app.sh release
open build/TodoNotch.appRequires Xcode 16 or later. swift test runs the suite (35 tests, no network, no fixtures).
Locally built apps skip Gatekeeper entirely, so there's no signing setup to do. scripts/setup-signing.sh is optional and only useful if you're iterating on the app — it creates a stable self-signed identity so macOS doesn't drop your Reminders permission on every rebuild.
docs/design.md is the original design document, written before the code. It includes a record of two approaches that were tried and rejected, and the reasoning behind the grammar rule above.
MIT — see LICENSE.
