Observed since 20 Oct, 22:45 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
Cross-platform notification system for AI agents (Claude Code, Gemini CLI) with ntfy.sh support
Cross-platform notification system for AI coding agents with ntfy.sh push notification support.
| Agent | Config Location | Hook Event |
|---|---|---|
| Claude Code | ~/.claude/settings.json | Notification |
| Gemini CLI | ~/.gemini/settings.json | Notification |
| OpenCode | ~/.config/opencode/plugins/agent-ntfy.mjs | Event-based |
| Cursor CLI | ~/.cursor/hooks.json | stop |
| Codex CLI | ~/.codex/config.toml | notify |
pip install agent-ntfy
# 1. Initialize configuration
agent-ntfy-setup --init
# 2. Edit config to add your ntfy.sh topic (see ntfy.sh Setup below)
notepad $env:USERPROFILE\.agent-ntfy\config.json
# 3. Install hooks for your agents
agent-ntfy-setup --all
ntfy.sh is a free, open-source notification service. You can use the public server or self-host.
my-agent-notify or maravedi-dev~/.agent-ntfy/config.json:
{
"ntfy_topic": "my-agent-notify",
"ntfy_enabled": true
}
curl -s ntfy.sh/my-agent-notify/json | jqRun your own ntfy server (see ntfy.sh docs)
Add server URL to config:
{
"ntfy_topic": "my-agent-notify",
"ntfy_server": "https://ntfy.example.com",
"ntfy_enabled": true
}
{
"ntfy_topic": "my-agent-notify",
"ntfy_server": "https://ntfy.sh",
"ntfy_token": "tk_your_token_here",
"ntfy_enabled": true
}
{
"ntfy_topic": "your-unique-topic-name",
"ntfy_server": "https://ntfy.sh",
"ntfy_token": "tk_optional_access_token",
"ntfy_priority": "default",
"ntfy_tags": ["robot", "notification"],
"ntfy_enabled": true
}
| Option | Default | Description |
|---|---|---|
ntfy_topic | (required) | Unique topic identifier |
ntfy_server | https://ntfy.sh | ntfy server URL |
ntfy_token | none | Access token for private topics |
ntfy_priority | default | Priority: low, default, high, urgent |
ntfy_tags | ["robot"] | Tags shown in notifications |
ntfy_enabled | true | Enable/disable ntfy notifications |
Configuration file: ~/.agent-ntfy/config.json
{
"ntfy_topic": "your-topic-name",
"ntfy_server": "https://ntfy.sh",
"ntfy_enabled": true,
"terminal_enabled": true,
"os_native_enabled": true,
"log_level": "INFO"
}
Override any config setting:
export AGENT_NOTIFY_NTFY_TOPIC=my-topic
export AGENT_NOTIFY_NTFY_SERVER=https://ntfy.sh
export AGENT_NOTIFY_NTFY_ENABLED=true
export AGENT_NOTIFY_TERMINAL_ENABLED=true
export AGENT_NOTIFY_OS_NATIVE_ENABLED=true
# Send a notification
agent-notify --title "Claude Code" --message "Task complete!"
# Send via stdin (JSON)
echo '{"title":"Alert","message":"Error occurred"}' | agent-notify
# Disable specific channels
agent-notify --title "Silent" --message "No sound" --no-ntfy
# Test your setup
agent-notify --title "Test" --message "agent-notifier is working!"
# Initialize config (creates ~/.agent-ntfy/config.json)
agent-ntfy-setup --init
# Install all agent hooks
agent-ntfy-setup --all
# Install specific agents
agent-ntfy-setup --install-claude # Claude Code
agent-ntfy-setup --install-gemini # Gemini CLI
agent-ntfy-setup --install-opencode # OpenCode
agent-ntfy-setup --install-cursor # Cursor CLI
agent-ntfy-setup --install-codex # Codex CLI
# Check prerequisites
agent-ntfy-setup --check
# Uninstall all hooks
agent-ntfy-setup --uninstall
from agent_notifier import notify
# Simple notification
notify(title="Claude Code", message="Task complete!")
# Custom topic
notify(title="Alert", message="Error!", ntfy_topic="my-custom-topic")
# Self-hosted server
notify(title="Alert", message="Error!", ntfy_topic="my-topic", ntfy_server="https://ntfy.example.com")
Uses Notification hook in ~/.claude/settings.json.
Notifies when the agent needs user input or completes work.
Uses Notification hook in ~/.gemini/settings.json.
Notifies on tool permission requests.
Uses a local plugin at ~/.config/opencode/plugins/agent-ntfy.mjs.
Handles: session.idle, session.error, permission.asked, subagent.complete
Uses stop hook in ~/.cursor/hooks.json.
Notifies when a task completes.
Uses notify command in ~/.codex/config.toml.
Notifies on agent-turn-complete and approval-requested events.
┌─────────────────────────────────────────────────────────┐
│ AI Agent (any supported) │
└─────────────────────────┬───────────────────────────────┘
│ Hook/Event
▼
┌─────────────────────────────────────────────────────────┐
│ agent-notify │
│ (CLI entry point for all notifications) │
└──────────┬──────────────────────┬──────────────────────┘
│ │
▼ ▼
┌──────────────────┐ ┌─────────────────────────────┐
│ Terminal (OSC 9) │ │ ntfy.sh Push │
│ Supported: │ │ ┌─────────────────────┐ │
│ • Ghostty │ │ │ Your Devices │ │
│ • iTerm2 │ │ │ • Phone (app) │ │
│ • Kitty │ │ │ • Browser │ │
│ • VSCode │ │ │ • CLI (curl) │ │
│ • Windows Terminal│ │ └─────────────────────┘ │
└──────────────────┘ └─────────────────────────────┘
│
▼
┌──────────────────┐
│ OS Native │
│ • Windows: BurntToast
│ • macOS: osascript
│ • Linux: notify-send
└──────────────────┘
python-ntfy (installed automatically)Install-Module BurntToast)apt install libnotify-bin)# Check prerequisites
agent-ntfy-setup --check
# Test manually
agent-notify --title "Test" --message "Hello!"
# Enable verbose logging
agent-notify --title "Test" --message "Debug" --verbose
# Check log file
cat ~/.agent-ntfy/notifier.log
MIT
Download counts and popularity will appear here as the collector receives them.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 0.1.8 | 16 Apr 2026 | 7 |
This describes our collected data; it is not a security assessment.
Shared repository data · GitHub
Observed since 20 Oct, 22:45 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:14b9c0e58f6f15803bd8f19867482a91dcf17e9fe6f3ac06f40025313b972436