terminal-notifier is a command-line tool that sends macOS User Notifications from the terminal.
The tool solves the problem of programmatically triggering native macOS notifications without requiring a graphical application. It works by shipping as an app bundle that can be invoked from the command line with options specifying the notification content. Notifications are attributed to an application identity, and the tool supports customization through options like title, subtitle, and message body. It also provides mechanisms to remove previously delivered notifications by group identifier, list active or scheduled notifications, and schedule notifications to appear at specific times using `-in` or `-at` options.
The tool suits developers who need to integrate macOS notifications into shell scripts, build systems, or automation workflows. It requires macOS 10.14 or higher. The README notes that downloaded binaries are subject to macOS quarantine protections on first run, though installations via Homebrew or building from source avoid this issue. The tool handles a common pitfall where option values beginning with certain characters like brackets or braces are misread by the underlying property list parser; since version 3.0.0 it reports when a value cannot be read rather than failing silently. Custom icons can be applied to change the application identity shown in notifications on macOS 11 and later. The tool can also be used from Ruby through a dedicated interface.
Development activity shows consistent maintenance with attention to user-facing improvements. The project maintains clear documentation of breaking changes between major versions, helping users understand upgrade paths. Error reporting was enhanced to surface previously silent failures when parsing option values. The tool's approach to handling macOS-specific constraints like quarantine protections and property list parsing demonstrates practical problem-solving for platform-specific issues.