aboutsummaryrefslogtreecommitdiff
path: root/claude-templates/bin
diff options
context:
space:
mode:
Diffstat (limited to 'claude-templates/bin')
-rwxr-xr-xclaude-templates/bin/agent-page48
1 files changed, 48 insertions, 0 deletions
diff --git a/claude-templates/bin/agent-page b/claude-templates/bin/agent-page
new file mode 100755
index 0000000..11a5264
--- /dev/null
+++ b/claude-templates/bin/agent-page
@@ -0,0 +1,48 @@
+#!/bin/bash
+# agent-page — page Craig's phone over Signal, from any machine or agent runtime.
+#
+# Usage: agent-page <message...>
+#
+# The pager identity (+15045173983) is registered in velox's signal-cli, so
+# velox sends directly and every other machine ssh-relays the send over the
+# tailnet. The recipient is Craig's Signal account UUID — his phone number
+# reads as unregistered in Signal's directory, so never page the number.
+# Verified end to end 2026-07-13 (phone push confirmed).
+#
+# This is the AWAY channel. At his desk, use the desktop channel instead:
+# notify info "Title" "Message" --persist
+# See protocols.org "Paging Craig" for choosing between them.
+#
+# Known caveats (tracked on the rulesets Signal-pager task): velox must be
+# up and reachable on the tailnet, and the signal-cli account wants a
+# periodic `receive` (staleness warnings appear otherwise).
+#
+# Source: ~/code/rulesets/claude-templates/bin/agent-page
+# Install: make -C ~/code/rulesets install
+
+PAGER_ACCOUNT="+15045173983"
+CRAIG_UUID="b1b5601e-6126-47f8-afaa-0a59f5188fde"
+VELOX_HOST="velox.tailf3bb8c.ts.net"
+
+if [ $# -eq 0 ]; then
+ echo "usage: agent-page <message...>" >&2
+ exit 2
+fi
+
+msg="$*"
+
+if [ "$(uname -n)" = "velox" ]; then
+ signal-cli -a "$PAGER_ACCOUNT" send -m "$msg" "$CRAIG_UUID"
+ rc=$?
+else
+ # printf %q hardens the message for the remote shell.
+ ssh -o BatchMode=yes -o ConnectTimeout=10 -o StrictHostKeyChecking=accept-new \
+ "$VELOX_HOST" \
+ "signal-cli -a $PAGER_ACCOUNT send -m $(printf '%q' "$msg") $CRAIG_UUID"
+ rc=$?
+fi
+
+if [ "$rc" -ne 0 ]; then
+ echo "agent-page: phone page failed (velox down or unreachable?) — fall back to the desktop channel: notify info 'Page' '<message>' --persist" >&2
+fi
+exit "$rc"