Setup
Start with notifications. Add live sessions later.
The simple path is one Python file, one API key, and one test push. No hooks, no uv, no jq. When you want live Claude/Copilot tool timelines, use the optional session watcher after notifications work.
- 1
Drop notify.py into ~/bin
One file. Plain Python 3 standard library. Re-run any time to upgrade in place.
bashcurl -fsSL https://notifier.aicrew.in/notify.py -o ~/bin/notify.py && chmod +x ~/bin/notify.pyMake sure
~/binis on yourPATH. If it isn't yet, addexport PATH="$HOME/bin:$PATH"to your shell rc file.View raw notify.py → · curl-free?
wget https://notifier.aicrew.in/notify.py -O ~/bin/notify.py - 2
Create an account API key
Sign in once on the web, name your key, copy the secret (shown only once).
Open app to create a keyAlready signed in? You'll land directly on the API keys panel. Free tier ships with 100 notifications — plenty to wire every harness.
- 3
Save the key in .env.local
notify.py reads from .env.local in the current repo first, then ~/.config/agent-notifier/config.json. Keep secrets out of shell history.
.env.local# ./.env.local (any project directory) AGENT_NOTIFIER_API_KEY=an_key_REPLACE_WITH_YOUR_KEY AGENT_NOTIFIER_PROJECT=my-repoOr store globally:
~/bin/notify.py --save-config --api-key an_key_… --project my-repo. Per-project.env.localwins when present. - 4
Tell your agent to use notify.py
Optional for notification-only use. Paste the block into the listed file once when you want your agent to send proof of work for milestones.
Paste into
~/.claude/CLAUDE.md. Append to your global instructions so Claude uses the CLI in every project.~/.claude/CLAUDE.md## Agent Notifier — keep the human updated (notify.py) Use `~/bin/notify.py` to push real-time updates to the human. Send at task start, major milestones, blockers, and completion. Always include proof: - File or media artifact: `~/bin/notify.py "Tests passing" --file-path ./logs/proof.png` - Link out: `~/bin/notify.py "PR ready" --url https://github.com/... --url-title "Open PR"` - Progress for long runs: `~/bin/notify.py "Migrating database" --type progress --progress 0.5` - Need a decision: `~/bin/notify.py "Conflict in main" --priority 1 --buttons "Abort" "Manual fix"` The CLI reads `AGENT_NOTIFIER_API_KEY` + `AGENT_NOTIFIER_PROJECT` from `./.env.local` (preferred) or `~/.config/agent-notifier/config.json`. Never echo the API key. Never send a "task complete" message without attaching the produced artifact. (Configured for Claude. Run `~/bin/notify.py --help` for the full flag list.)
Verify install
Run this from any directory after Step 3. Your iPhone should light up within a second.
~/bin/notify.py "Hello from $(hostname)" --file-path /etc/hostnameDidn't arrive? Check that the iOS app is installed and signed in, and that your API key is on the active list in the web app.
Advanced — session watcher hooks (PreToolUse, PostToolUse, approvals)
↓
Advanced — session watcher hooks (PreToolUse, PostToolUse, approvals)
The CLI above is enough for most agents. If you want live agent session timelines (PreToolUse approvals, PostToolUse summaries, polling for tap-to-approve responses) you can also install the session watcher. This requires curl, bash, jq, and uv.
curl -fsSL https://notifier.aicrew.in/install.sh | bashPrefer a guided page? Open Session watcher setup.
Set AGENT_NOTIFIER_API_KEY in your environment before running. The installer writes .github/hooks/hooks.json and .claude/settings.json for the current repo, never commits the key, and appends a project-local CLAUDE.md reminder.