The loop
From a first brief to a landed branch.
The phone drives the session. The Mac owns the worktree, agent process, files, commands, and git history from start to finish.
Set up once
Pair the two devices.
Install Tailscale on both devices, launch the Mac host, sign in to an agent CLI, and scan the pairing code.
pair your phone with your Mac
→ attach a local git repo
→ create an isolated workspace (agent chat, or straight to a terminal)
→ direct one or more agents
→ review files, diffs, commits, and running processes
→ verify with tests, a terminal, or the live app in your browser
→ commit, push, open a PR — or merge locally
→ close the workspace by merging or explicitly discarding it01 / Direct
Start with a branch, not a chat bubble.
Create chat-first, terminal-first, or from a GitHub issue. Choose the base ref and branch name, then pick Claude Code, Codex, or Grok with its model, reasoning effort, and Plan or Work mode.
- Your first message waits for setup, then sends verbatim
- Attach images, PDFs, and text files
- Mention files, pin context, stop, or steer


02 / Review
Read what changed, from the real worktree.
Your Mac renders syntax-highlighted diffs in the active palette. Review the combined diff, one file, the whole file, or every commit with its full message and scoped diff.
- Fork-point and last-commit anchors
- Markdown preview and source modes
- Select a span, add a note, Ask agent
- Stale-safe single-file revert

03 / Verify
Run the checks and the running app.
Use project command buttons, an ad-hoc command, or a real PTY. Every process has an outcome, exit code, replayable ANSI output, and an optional allocated port.
- Completed, stopped by you, and crashed are distinct
- TTY-gated tools work in the interactive terminal
- Open the dev server in the phone browser over your tailnet


04 / Land
Decide what reaches the base branch.
Update from base, edit an agent-drafted commit message, push, and see ahead or behind state. With a GitHub remote and gh signed in on the Mac, draft and open a pull request from the same workspace.
Merge & Close lands the branch. Discard & Close removes it after confirmation. A close-time conflict keeps the worktree intact for the desk; PRCHD does not put a merge editor on a phone.



When the app closes
The phone disconnects. The work does not.
- Reattach and replayThe Mac’s event log fills every gap from your cursor
- Reconcile messagesOptimistic sends deduplicate against authoritative state
- Recover after restartInterrupted turns settle instead of staying “working”
- Route from pushGeneric notifications take you back to live Mac state
See the complete capability map.
The loop is the center. Features covers the edges, limits, and dependencies.