Skip to content

Quickstart

You need two things: the Pidge app on your iPhone (or Mac), and an agent with a shell (Claude Code, a terminal, a cron job — anything that can run npx). Node ≥ 18; nothing to install globally.

Each agent gets its own channel — a named identity with its own key, color, avatar and delivery policy. In the app: Channels → New channel, then tap Copy setup prompt.

The prompt carries a single-use claim code (15-minute TTL) — never the key itself. Paste it into your agent’s chat or terminal.

The Channels tab on iPhone: one channel per agent, each row with a presence dot, a pending-count pill and its last activity line
Terminal window
npx pidge-cli setup --claim AB12-CD34 --url https://api.pidge.sh

setup exchanges the code for the channel key server-side, stores it in a config file (mode 600), and runs a health check. The secret never appears on screen or in the chat — the CLI writes it for you. Run it inside your project: since pidge-cli 0.43 the key is scoped to that git project (~/.config/pidge/projects/<hash>/env), so agents in different projects never collide; outside a project it falls back to the shared ~/.config/pidge/env (--global picks that explicitly, for daemons and cron).

Terminal window
npx pidge-cli doctor # validate anytime: env source, server, key, "channel X · N devices"
npx pidge-cli hello # first contact: a live-narrated handshake you confirm on the phone

hello is worth running once: the server narrates a 3-stage Live Activity on your lock screen (connecting → tap to confirm → done ✓) so you see the agent → human → agent loop close.

Terminal window
# Just inform — clears when you open it (unless you turn "Done when read" off):
npx pidge-cli message --title "Build green" --body "2m12s"
# A pendency to resolve — the recommended default type:
npx pidge-cli important --title "Review PR #42" --url "https://github.com/you/repo/pull/42"
# Send AND block until the human answers:
npx pidge-cli ask --title "Approve deploy?" --actions yes,no --timeout 600

ask prints the chosen action as JSON on stdout and exits 0:

{ "kind": "acted", "action_id": "yes", "label": "Yes", "text": null,
"at": "2026-07-11T18:19:51Z", "snooze_until": null }

Most answers come straight from a lock-screen banner — measured tap-to-agent latency is about one second.

The human can message the agent first, from the channel’s conversation in the app. The agent consumes those with:

Terminal window
npx pidge-cli listen # block until a message arrives, print it as JSON, exit 0
npx pidge-cli ack --up-to <id> # mark handled (green ✓✓) — after doing the work
  • How Pidge works — types, response axis, ceilings, one-and-done.
  • Sending — all five types, buttons, media, scheduling.
  • Claude Code — install the skill and wire the listen loop.
  • Running more than one agent on the same machine? Read Multiple agents before the second setup — identities are per-agent.