ping-a-human-pi
Human-in-the-loop and notifications for the pi coding agent, powered by ping-a-human. One command: npx ping-a-human-pi.
Package details
Install ping-a-human-pi from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:ping-a-human-pi- Package
ping-a-human-pi- Version
0.1.1- Published
- Jun 14, 2026
- Downloads
- not available
- Author
- uxmishka
- License
- MIT
- Types
- extension
- Size
- 28 KB
- Dependencies
- 0 dependencies · 2 peers
Pi manifest JSON
{
"extensions": [
"./extension"
]
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
ping-a-human-pi
Human-in-the-loop and notifications for the pi coding agent, powered by ping-a-human.
Pi has no built-in MCP support, so this package embeds a tiny MCP client and connects pi's hooks to ping-a-human. You get:
notify_human/ask_humanas native pi tools the model can call directly.- Notifications — a Telegram ping every time pi finishes a task.
- Approval — pi asks you for the green light before risky tool calls (e.g.
rm -rf,sudo,git push --force) and blocks them unless you say yes. /pingcommand — manually send yourself a notification:/pingor/ping your message here.pahCLI — a global terminal command, independent of pi:pah ping "build done",pah ask "deploy?".
Install
One command:
npx ping-a-human-pi
That's it. It:
- installs the pi extension into
~/.pi/agent/extensions/ping-a-human-pi/(pi auto-discovers it), - installs the
pahCLI onto your PATH, - seeds
~/.pi/agent/ping-a-human.jsonwith sensible defaults (never overwrites an existing one).
Run /reload in pi (or restart it). To remove everything: npx ping-a-human-pi uninstall.
First time with ping-a-human? Configure Telegram once: npx ping-a-human setup.
pah CLI
A standalone command (no pi required) for pinging a human from any terminal:
pah ping "build finished" # fire-and-forget notification
pah notify "deploy started" # alias for ping
pah ask "ship to prod?" # waits and prints the human's reply
pah --version # CLI version + the ping-a-human server version
pah help
It reads the same ~/.pi/agent/ping-a-human.json for the server command/args/env (defaults to npx -y ping-a-human). The installer drops it in the first writable PATH dir among ~/bin, ~/.local/bin, /usr/local/bin; if none are on PATH it creates ~/.local/bin and tells you to add it.
Alternatives:
npm i -g ping-a-human-pi # global install of the pah CLI + installer
pi install npm:ping-a-human-pi # load as a pi package
sh install.sh # from a cloned checkout
Configuration
All optional. Edit ~/.pi/agent/ping-a-human.json (see ping-a-human-pi.example.json):
| Key | Default | Meaning |
|---|---|---|
command / args |
npx -y ping-a-human |
how to launch the server |
exposeTools |
true |
register notify_human / ask_human as model-callable tools |
notify.enabled |
true |
ping you when a task finishes |
notify.template |
✅ pi finished a task in {cwd}:\n\n{summary} |
message text; {summary} {cwd} substituted |
approval.enabled |
false |
ask before risky tool calls |
approval.tools |
["bash"] |
which pi tools to gate |
approval.patterns |
dangerous-command regexes | only gate calls whose args match one; empty = gate all calls of those tools |
approval.template |
🔐 pi wants to run {tool}:\n\n{details}\n\nApprove? (reply yes/no) |
prompt; {tool} {details} substituted |
A reply matching yes/ok/approve/allow/sure/go/lgtm/... approves; anything else blocks the call (and the reason is sent back to the model).
Uninstall
rm -rf ~/.pi/agent/extensions/ping-a-human-pi
rm -f ~/.pi/agent/ping-a-human.json # optional
rm -f ~/bin/pah ~/.local/bin/pah /usr/local/bin/pah 2>/dev/null # the CLI