The iPhone and Watch apps are a paired control plane for the Mac. The Mac is the source of truth; the phone and watch read and act through the daemon over Tailscale or the secure relay.
iPhone tabs
| Tab | What it shows |
|---|
| Chat | Solo and Broadcast chat, same providers as Mac. |
| Live | Live provider status mirrored from the Mac daemon. |
| Analytics | Historical spend synced from the Mac via iCloud KV. |
| Code | Session list and the session detail workbench. |
Session detail workbench
Tap any session in the Code tab to open the workbench. Six tabs appear across the top:
| Tab | Content | Visibility |
|---|
| Chat | Thread + composer, same UX as Mac | Always |
| Plan | Step timeline + Approve & Run | Only when a plan exists |
| Diff | Live git diff HEAD | Always |
| PR | PR mirror with approval action | Always |
| Terminal | PTY stream with multi-pane strip | Only when panes are spawned |
| Files | Artifact grid + QuickLook | Only when artifacts are present |
The last-selected tab persists per session under UserDefaults key clawdmeter.ios.session.<sessionId>.tab.
Command outbox
Every write action — send, approve plan, interrupt, model swap — goes through the mobile command outbox before hitting the daemon.
- The composer clears immediately on enqueue. You don’t wait for the network.
- If the Mac is unreachable, the command queues and retries with exponential backoff: 1 s → 4 s → 15 s → 60 s → 5 min → 30 min.
- After exhausting the schedule, the command parks in the failed queue for manual triage.
- Transient
5xx and network errors retry. 4xx errors (other than 429) go terminal immediately.
- The outbox badge on the session detail nav bar shows pending and failed counts.
- Swipe a failed command to Retry or Cancel it from
iOSOutboxPane.
The outbox queue persists at ~/Library/Application Support/Clawdmeter/outbox.json and is app-scoped, so multiple windows share one queue.
Live Activities
SessionLiveActivityAttributes + LiveActivityCoordinator surface the aggregate count of active sessions — “N active sessions” — on the Dynamic Island and Lock Screen. Live Activities are per-aggregate, not per-session.
Chimes
Chimes notify you when a session needs attention or completes. Four packs are bundled:
- SF Muni
- NYC MTA
- Bell
- Fanfare
Quiet hours default to 22:00 → 07:00. When bundled .caf assets are unavailable, Continuum falls back to AudioServicesPlaySystemSound(1336). Configure chimes and quiet hours under Settings → Notifications on the iPhone.
Three widget families are available from ClawdmeteriOSWidgets:
- Lock Screen — rate-limit % for the primary provider.
- Home Screen — provider gauge.
- StandBy — large usage readout optimized for iPhone charging.
Widgets read from the shared app-group cache written by the main app. They update when the main app refreshes usage data.
Apple Watch
The Watch app receives data from the paired iPhone over WCSession (updateApplicationContext with a transferUserInfo queued-delivery fallback). It shows:
- Per-provider rate-limit rail and session %.
- Sessions that need attention (plan approval, interrupt).
- Voice-reply composer for quick responses.
- Plan Approve and Interrupt buttons on the session detail view.
Four watchOS complication families are available from ClawdmeterWatchWidgets. City names assigned to worktree sessions appear in the complication alongside the session status.
The Watch app does not ingest provider logs directly. All analytics and live data arrive from the paired iPhone, which in turn mirrors from the Mac.
- Sessions — spawn, worktrees, and city names.
- Auto-revive — session window keep-alive.
- Analytics — iCloud KV sync details and personal-team limitations.