agent-notify

January 31, 2026 · View on GitHub

中文

Notifications for AI coding agents on macOS.

curl -fsSL https://raw.githubusercontent.com/cfngc4594/agent-notify/main/install.sh | bash

Features

  • Works with Claude Code, Cursor, OpenAI Codex, and CLI
  • Sound effects (system sounds)
  • macOS notifications (Notification Center)
  • Voice announcements (say command)
  • ntfy push notifications (self-hosted or ntfy.sh)

Get notified when task completes.

Platform and feature selection

macOS notification

ntfy push notification on mobile

Install

curl -fsSL https://raw.githubusercontent.com/cfngc4594/agent-notify/main/install.sh | bash

Manual download

# Apple Silicon (M1/M2/M3/M4)
curl -fsSL https://github.com/cfngc4594/agent-notify/releases/latest/download/agent-notify-arm64 -o agent-notify

# Intel Mac
curl -fsSL https://github.com/cfngc4594/agent-notify/releases/latest/download/agent-notify-x64 -o agent-notify

chmod +x agent-notify
./agent-notify

From source

bun install && bun run dev

Configuration

All platforms are automatically configured by the installer:

PlatformConfig FileHook
Claude Code~/.claude/settings.jsonStop
Cursor~/.cursor/hooks.jsonstop
OpenAI Codex~/.codex/config.tomlnotify
CLI~/.zshrc or ~/.bashrcnotify function

The installer shows a diff preview before applying changes, so you can review exactly what will be modified. Your existing configuration is preserved.

Automatic backup: Before modifying any config file, the installer creates a timestamped backup (e.g., settings.json.20250131-143022.bak) in the same directory. If something goes wrong, simply rename the .bak file to restore.

Note: Since each platform supports different hook events, only the "task completion" hook is configured for consistency across all platforms.

Using Both Claude Code and Cursor

If you use both Claude Code and Cursor, Cursor will load Claude Code's hooks by default (via "Include third-party skills" setting), which may cause duplicate notifications.

To avoid this, disable the option in Cursor:

Settings → Rules, Skills, Subagents → Include third-party skills, subagents, and other configs → OFF

Self-hosted ntfy (Optional)

If you want to use your own ntfy server instead of ntfy.sh:

docker compose up -d

Default port is 80. To use a different port, edit docker-compose.yml:

ports:
  - 8080:80  # Change 8080 to your preferred port

Then enter http://localhost:8080 as the ntfy URL during setup.

License

MIT