Step-by-step guide to turn Brad's iPhone 16 Pro Max into the tickles fleet agent. No app install beyond Tailscale. Total time: ~15 minutes.
When you finish, the phone will POST a heartbeat to the broker every hour and show up green in the Carl console Fleet tab.
carl-ded7626-server, phoenix-air, etc. (ruffledfeathers@rfpsinc.com).100.x.x.x).http://100.125.254.10:8788/api/fleet/statusGet Battery Level — leave defaults.| Key | Value |
|---|---|
agent |
tickles |
host |
brad-iphone17 |
model |
claude-haiku-4-5 |
status |
idle |
uptime_seconds |
change type to Number, value 0 |
current_task |
(leave blank) |
battery |
tap the value cell → tap the variable suggestion Battery Level from the blue bar above the keyboard |
http://100.125.254.10:8788/api/fleet/heartbeatContent-Type
- Value: application/jsonTickles heartbeat sent and tap the
variable chip to append Contents of URL from the previous step.
(After you confirm it works, you can delete this action so it stops
pinging you every hour.){"ok":true,"agent":"tickles","received_at":1776...}bash
curl -s http://127.0.0.1:8788/api/fleet/status/tickles | python3 -m json.toolcolor should be green and last_seen should be within the last
few seconds. host should say brad-iphone17.Wait ~90 seconds past the next hour mark, then from anywhere:
curl -s http://100.125.254.10:8788/api/fleet/status/tickles \
| python3 -m json.tool
You should see:
- "color": "green"
- "host": "brad-iphone17"
- "model": "claude-haiku-4-5"
- "last_seen" timestamp within the last minute or two
If color is red and last_seen is 0, the automation hasn't fired yet
(wait), or Tailscale dropped (reopen Tailscale app), or the shortcut
errored (run it manually from Part 2.6 to see the error).
Shortcut run returns "could not connect": Tailscale is down. Open the Tailscale app, tap Connect.
"Invalid JSON" from broker:
The Dictionary action has a typo or the uptime_seconds cell is still
a Text type — change it to Number.
Automation doesn't fire while phone is locked: iOS 17+ should run it anyway. On iOS 16 or older, Personal Automations for Time of Day can be gated behind "Ask Before Running" even if you toggled it off — update iOS or upgrade to a 17+ device.
I want Tickles to also receive tasks, not just heartbeat:
Tasks come in via WhatsApp (already wired up). When Carl or Forge
needs to notify Brad, they run
clawdbot message send --channel whatsapp --target 15022952943 ...
which produces a WhatsApp push on this phone. Respond to the message
in WhatsApp; the existing Twilio webhook picks it up. No further
Shortcut work needed for the task path.
If you want Tickles to use Sonnet 4.6 instead of Haiku 4.5:
Server side (clawdbot config):
bash
python3 -c "
import json
p='/root/.clawdbot/clawdbot.json'
d=json.load(open(p))
for a in d['agents']['list']:
if a['id']=='tickles': a['model']='claude-sonnet-4-6'
json.dump(d, open(p,'w'), indent=2)
"
iPhone Shortcut: edit Tickles Heartbeat → edit the Dictionary
action → change model value from claude-haiku-4-5 to
claude-sonnet-4-6 → tap Done.
The next heartbeat will upsert the new model into broker.db.