Heylisten - Josh Brody Heylisten | Josh Brody
All projects
Ruby Gem

Heylisten

CLI notification scheduler for macOS.

HeyListen is a command-line tool for scheduling notifications on macOS. You tell it when you want to be reminded of something, and it reminds you. Named after Navi’s famously annoying catchphrase from Ocarina of Time, though hopefully less intrusive.

Why it exists

Calendar apps are overkill for “remind me to check on the build in 20 minutes.” Native macOS reminders require clicking through UI. Cron jobs require thinking about cron syntax. Sometimes you just want to type a sentence and have your computer yell at you later.

HeyListen handles the in-between: quick, disposable reminders that don’t need to live in a calendar or survive a reboot. You schedule them from the terminal, and they show up as native macOS notifications when they’re due.

How it works

Two ways to schedule. You can set a duration from now—heylisten in 3 hours let the dog back in—or a specific time—heylisten at 4:06pm go make dinner. Both use natural language parsing, so “tomorrow at 3pm” and “next friday at noon” work as expected.

A daemon runs in the background, checking every few seconds for notifications that are due. When one hits, it fires a native macOS notification with sound. Notifications stick around after they’re sent, so you can review what you’ve been reminded about with heylisten sent, so now you can blame yourself why you forgot.

The usual management commands exist: list pending notifications, delete ones you don’t need, snooze or reschedule if your plans change. There’s an undo command for when you accidentally delete the wrong one.

Configuration

Notifications default to macOS alerts—the ones that stay on screen until you dismiss them—with the Basso sound. You can change the sound, switch to banner-style notifications, or set a custom icon.

The daemon

Running heylisten daemon forks a background process that watches for due notifications. It writes logs to ~/.heylisten/daemon.log if you need to debug something. Stop it with heylisten stop, check if it’s running with heylisten status. The daemon needs to be running for notifications to fire; if you reboot, you’ll need to start it again.

Dependencies

Uses terminal-notifier for macOS notifications.

Stack

Ruby macOS CLI

Stay in the loop

Occasional essays on design, tools, and the craft of building things. No spam, unsubscribe anytime.

Ambient weather

The background of this site reflects the current weather and time of day in Saint Paul. The orbs shift in color and behavior based on what's happening outside my window.

Learn more about how this works