Dallas Crilley
Work
Internal tools In progress

Tether

Run your dev ops from your phone.

A macOS daemon, CLI, and Apple Watch app for running dev ops from your phone: see what is blocked, approve an agent checkpoint, and resume the right session without a remote-desktop stream.

language
Swift 6 (SPM), SwiftUI
daemon
Hummingbird HTTP, loopback-bound, 16 route modules
surfaces
CLI (13 commands), iOS + watchOS apps
safety
3-tier action model, one-time approval tokens
history
186 commits in ~3 weeks
repo
Private

The problem

Coding agents block on decisions, and the only way to unblock them from a phone is to fight a pixel-streamed remote desktop on a six-inch screen. Tether speaks actions and state instead of pixels, so a decision takes a tap, not a tunnel.

How it is built

  1. Loopback by default, a secret required to leave it

    The daemon aborts at startup if it is bound to a non-loopback interface without a shared bearer token. Remote operators tunnel via SSH or Tailscale, so the API is never accidentally exposed on a network.

  2. Bounded, tiered, receipted actions

    Actions declared in the project manifest carry a tier: observe (concurrent), modify, or ship (serialized). Every execution writes a receipt to SQLite and failures auto-raise an alert. Remote responses require a device token plus a one-time action token to prevent replay.

  3. Agent stalls become Watch approvals

    An observer polls agent panes, normalizes spinner lines before hashing, reads Claude Code session logs for an "awaiting reply" signal, and creates an approval that pushes to the watch via ES256-signed APNs, then injects the operator decision back into the pane.

By the numbers

16 daemon API route modules
13 CLI commands
186 commits in 19 days

Where this honestly stands

In progress. The daemon, CLI, approval control plane, and iOS / watch companions are built and integration-tested, and the Watch Approval MVP P0 gate cleared. Phone Mode, voice-to-task, and Live Activities are roadmap-only.

Want the parts that are not in a public repo? I will walk you through the architecture and the decisions on a call.