AI Tether AI Tether

Notes /

Claude was the first row. Then the dashboard grew badges.

I didn't set out to support three agents. I set out to leave the desk.

AI Tether started as a remote for Claude Code because that's what was running on this Mac. The first version had no provider field. Every session was Claude, the way every file used to be a .doc.

Then I had a Grok Build session in one folder and a Codex rollout in another, and I was alt-tabbing between three TUIs to see which one was waiting on me. That's a stupid way to spend an afternoon, and it's exactly the problem this app is supposed to kill.

So the daemon grew three roots. ~/.claude/projects, ~/.codex/sessions, ~/.grok. Same transcript items on the wire — user text, assistant text, thinking, tool use — different parsers. The client just paints a badge.

The badges aren't decoration. Claude, Codex, and Grok do not have the same remote surface, and pretending they do would be a lie you notice on day two:

  • Claude Code we can launch, resume, approve tools against, switch models, fork a terminal session into one we actually own.
  • Grok Build is first-class the same way. We spawn it in a pty the daemon owns, so /model and /effort and image attachments work from the phone.
  • Codex we drive when we launched it (app-server: prompts, approvals, interrupt, steer). A TUI you started yourself we still only find — rollouts on disk, live status, the transcript (reasoning is encrypted on their side, so you get a marker, not the thought).

One window. Three harnesses. The row that needs you floats to the top, whatever name is on the badge.