macOS Notification Center alerts when Hermes Agent finishes a response and waits for your input. Clicking the notification brings the terminal window back to the foreground.
| before | after |
|---|---|
| Hermes finishes in background tab | macOS notification pops up |
| You miss the response | Click → terminal activates |
| Must manually ⌘Tab back | Instant focus |
https://github.com/user-attachments/assets/placeholder
- macOS
- terminal-notifier —
brew install terminal-notifier - Hermes Agent running in CLI mode (Ghostty, Terminal.app, iTerm2, Warp, kitty, Alacritty, WezTerm, Hyper, Tabby)
hermes plugins install kon-yu/hermes-macos-notify
hermes plugins enable macos-notifyThen restart Hermes (/reset is not enough — fully quit and relaunch).
git clone https://github.com/kon-yu/hermes-macos-notify.git
cp -r hermes-macos-notify ~/.hermes/plugins/macos-notify/
hermes plugins enable macos-notifyThe plugin registers a post_llm_call hook — this fires once per turn after
Hermes finishes its tool-calling loop and produces a final text response.
| Hook | Fires when |
|---|---|
post_llm_call |
Response complete, waiting for user input |
The hook:
- Checks
platform == "cli"(skips gateway sessions — no point notifying a Telegram user's desktop) - Walks the process tree to detect the terminal emulator (Ghostty, iTerm2, …)
- Calls
terminal-notifierwith-execute "open -a <AppName>"so a click activates the terminal
Only fires in CLI mode. Gateway (Telegram, Discord, Slack, …) sessions are unaffected.
The plugin walks the parent process chain using ps -o ucomm= to find a
matching terminal emulator. Supported terminals:
| Terminal | Process name |
|---|---|
| Ghostty | ghostty |
| Terminal.app | terminal |
| iTerm2 | iterm2 |
| Warp | warp |
| kitty | kitty |
| Alacritty | alacritty |
| WezTerm | wezterm |
| Hyper | hyper |
| Tabby | tabby |
Unknown terminals still receive notifications, but clicking won't activate the window. PRs welcome to add support for other terminals.
No configuration needed. To change the notification sound, edit the
-sound argument in __init__.py (default: "default").
hermes plugins disable macos-notify
hermes plugins remove macos-notifyMIT