Tellie / Developers / Cookbook / Get pinged on your phone

cookbook / away from the keyboard

Pro

Get pinged on your phone when agents finish

Your notch is great, but only when you're looking at it. This bridges it to your phone: when any agent finishes a task (or hits a wall and needs you), you get a ping. Start a long job, go to the gym, and your phone taps you when it's done. An agent named Storm actually invented this, watching the Pulse Log and forwarding only the lines that matter, no SDK required.

How it works

Tellie Pro records every line that hits your notch to a local, append-only JSONL file (the Pulse Log). A tiny watcher tails it, keeps only the lines worth interrupting you for (a completion, a flash, or an attention pulse), and forwards those to your phone. Every "Thinking…" stays on the notch where it belongs.

1. Make a Telegram bot

Message @BotFather on Telegram, send /newbot, and it hands you a bot token. Then message your new bot once (anything), and grab your chat id from @userinfobot. Export both:

terminal
export TELLIE_TG_TOKEN="123456:ABC-your-bot-token"
export TELLIE_TG_CHAT="987654321"

2. The watcher

Save this as tellie-phone.sh. It polls today's Pulse Log every few seconds, forwards only the interesting lines, and rolls over at midnight on its own. Needs jq and curl (both standard).

tellie-phone.sh
#!/bin/bash
# Ping your phone when an agent finishes (or needs you).
DIR="$HOME/Library/Application Support/Tellie/PulseLog"
OFFSET=0; LAST=""

while true; do
  FILE="$DIR/$(date +%F).jsonl"
  # New day: start from the end so we don't replay history.
  [ "$FILE" != "$LAST" ] && { OFFSET=$(wc -l <"$FILE" 2>/dev/null || echo 0); LAST="$FILE"; }
  [ -f "$FILE" ] || { sleep 3; continue; }
  TOTAL=$(wc -l <"$FILE")
  if [ "$TOTAL" -gt "$OFFSET" ]; then
    tail -n +$((OFFSET+1)) "$FILE" | while IFS= read -r line; do
      # keep only: attention pulses, flashes, or completion words
      echo "$line" | jq -e 'select(.attention==true or .kind=="flash" or (.text|test("done|finished|ready|success|complete";"i")))' >/dev/null 2>&1 || continue
      MSG=$(echo "$line" | jq -r '"\(.source // "agent"): \(.text)"')
      curl -s "https://api.telegram.org/bot$TELLIE_TG_TOKEN/sendMessage" \
        --data-urlencode "chat_id=$TELLIE_TG_CHAT" --data-urlencode "text=$MSG" >/dev/null
    done
    OFFSET=$TOTAL
  fi
  sleep 3
done

Run it once to test (chmod +x tellie-phone.sh && ./tellie-phone.sh), then have an agent Tellie you "done" and check your phone.

3. Keep it running in the background

So it survives reboots and runs while you're away, load it as a LaunchAgent. Save as ~/Library/LaunchAgents/com.you.tellie-phone.plist (set the path + your token/chat), then load it:

~/Library/LaunchAgents/com.you.tellie-phone.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"><dict>
  <key>Label</key><string>com.you.tellie-phone</string>
  <key>ProgramArguments</key>
  <array><string>/bin/bash</string><string>/Users/you/tellie-phone.sh</string></array>
  <key>EnvironmentVariables</key>
  <dict>
    <key>TELLIE_TG_TOKEN</key><string>123456:ABC-your-bot-token</string>
    <key>TELLIE_TG_CHAT</key><string>987654321</string>
  </dict>
  <key>RunAtLoad</key><true/>
  <key>KeepAlive</key><true/>
</dict></plist>
terminal
launchctl load ~/Library/LaunchAgents/com.you.tellie-phone.plist

Prefer no account? Use ntfy.sh

Don't want a Telegram bot? ntfy.sh needs no account: pick a hard-to-guess topic, install the ntfy app, subscribe to it, and swap the curl line in the watcher for this. It's also self-hostable, so you can keep the whole thing on infrastructure you own.

drop-in replacement for the curl line
curl -s -d "$MSG" "https://ntfy.sh/your-secret-topic-name" >/dev/null

Good to know

See also: Mine your Pulse Log, Narrate to your notch.