claudhopper

T3 Code, the long version

T3 Code is an open-source control plane for coding agents, from the people behind T3 Chat. One window runs Claude Code next to Codex, Cursor and the rest, each thread on its own git branch, and you can steer the whole thing from your phone. Everything below comes from T3's own docs.

One screen for every agent. Finally, somewhere to lose track of them all at once.

Facts checkedNov 11at the source

What you are getting

  • One interface, many agents. Claude Code, Codex, Cursor, Grok Build, Kiro, OpenCode, Antigravity, Pi, Muse Code and fx.
  • Your subscriptions, not theirs. T3 Code drives the CLIs you already signed in to. It does not resell tokens.
  • A branch per thread. Each agent thread writes to its own git branch, and one button commits, pushes and opens the pull request.
  • Everywhere. A desktop app, a web app, and mobile apps that connect to a server on another machine.
  • MIT licensed. Fork it, change it, host it yourself.

Clodhopper move: Treating it as finished software. T3's own README says the project is very early and to expect bugs. Believe them. They wrote it.

Step zero: sign in to a provider

T3 Code is the cockpit, not the engine. You can open it first and set up providers after, but nothing runs until one is installed and signed in on the machine running the server.

ProviderInstall and sign in
ClaudeInstall Claude Code, then claude auth login
CodexConnect with ChatGPT, or install the Codex CLI and run codex login
CursorInstall the Cursor CLI, then agent login
Grok BuildInstall the Grok Build CLI, then grok login
KiroInstall the Kiro CLI, then kiro-cli login
OpenCodeInstall OpenCode, then opencode auth login
AntigravityInstall and sign in with Google from provider settings
PiNeeds Node.js 22.19 or newer. Run pi, then /login
Muse CodeInstall on the server, run muse login, then enable it in Settings
fxcurl -fsSL https://fx.sh/setup.sh | bash, then fx login

Provider CLIs have to be on the server's PATH. If T3 Code cannot find one, set its Binary path in Settings, Providers. You can add a second instance of a provider for a second account, each with its own environment variables.

Install the t3 command

macOS and Linux
curl -fsSL https://t3.codes/install.sh | sh
Windows PowerShell
irm https://t3.codes/install.ps1 | iex
Try it once without installing (needs Node.js)
npx t3@latest
  • The binary goes in ~/.local/bin. If that folder is not on your PATH, the installer prints the line to add for zsh, bash or fish.
  • On Windows, t3 works at once in the same PowerShell window. Add the folder to PATH for new windows.
  • If a t3 it did not create already exists, the installer leaves it alone and stops.
  • Set T3CODE_CHANNEL=nightly for the nightly channel, or T3CODE_VERSION to pin a version.

Intel Macs

There is no t3 executable for Intel Macs. The desktop app works. To run a server you build from source, and t3 update and the background service do not apply:

git clone https://github.com/pingdotgg/t3code
cd t3code && vp i && vp run build:desktop
node apps/server/dist/bin.mjs

Or install the desktop app

PlatformCommand
Windowswinget install T3Tools.T3Code
macOSbrew install --cask t3-code
Debian, UbuntuDownload the .deb from GitHub Releases, then sudo apt install ./T3-Code-*.deb
Arch Linuxyay -S t3code-bin (nightly: yay -S t3code-nightly-bin). x86_64 only.
Nixnix profile add github:NixOS/nixpkgs/nixos-unstable#t3code
Any LinuxAppImage for x86_64 and ARM64 from GitHub Releases. chmod +x it and run.
  • The desktop app sets up the t3 command on first launch. Reinstall it from Settings, About.
  • WSL: pick a distro in Settings, Sharing & access, and install your provider CLIs inside that distro. T3 Code installs its server runtime there itself.
  • .deb: the app updates itself and asks for your password each time. No prompt means the update failed, so install the new .deb by hand.
  • Nix: needs Nix 2.30 or later with flakes. Update through Nix, never through the in-app updater or t3 update.

The commands you will actually use

CommandWhat it does
t3Start the server and open the web app. If a server is already running, it connects to that one.
t3 ./my-projectStart in a project. Use an explicit path for a new directory.
t3 serveStart the server without opening a browser
t3 appOpen a new thread for this directory in the running desktop app
t3 upSet up access from your other devices
t3 statusShow how your other devices reach this machine
t3 pairMake a fresh pairing link without restarting
t3 service installRun in the background (macOS and Linux)
t3 updateMove to the newest release on your channel
t3 doctorReport database size and reclaim space
t3 uninstallRemove the service, the launcher and downloaded versions, after asking
t3 --helpThe full reference

Driving it from your phone or another machine

The mobile app does not run agents. It connects to a server on a real computer. There are two ways to make that connection.

T3 Connect: no router fiddling

  1. On the host, run t3 up and choose T3 Connect. On the desktop app, sign in under Settings, Sharing & access, and turn T3 Connect on.
  2. On the other device, sign in to the same T3 Connect account and pick the machine.

Signing in over SSH prints a link and a short code. Open the link on any device, check the code matches, and approve. Each account can link 3 machines. Phones and browsers do not count. T3 Chat Pro raises that to 10, and Premier to 100.

Direct pairing: your own network

t3 up --lan
t3 pair

Scan the QR code or paste the pairing URL under Add environment on the other device. This accepts connections from your local network and tailnet, and T3's docs are blunt about it: the pairing code is the only protection. Use a fresh one-time link for each device.

Tailscale HTTPS

t3 serve --tailscale-serve
t3 pair --tailscale

Both devices on the same tailnet. Pairing URLs look like https://machine.tailnet.ts.net/. If port 443 is taken, use --tailscale-serve-port.

SSH, managed for you

In the desktop app: Settings, Environments, Add environment, SSH, then a host such as user@example.com. T3 Code starts or reuses a server there and sets up the port forward. The remote host must be Linux or an Apple Silicon Mac. Check your provider CLIs are visible to a non-interactive shell first:

ssh user@example.com 'sh -lc "command -v claude codex"'

The mobile app itself

Store links and QR codes live in Settings, About, Mobile app. T3's install page points to the App Store and Google Play, and also describes an invite-only TestFlight for iPhone and iPad and beta APKs for Android on GitHub. Use whatever that settings page hands you.

Clodhopper move: Posting a screenshot with your pairing URL in it. T3's docs say to treat pairing URLs and codes as passwords. So does the heron.

Who is allowed to do what

By default, a pairing gets every permission, including terminals and managing access itself. Narrow it with scopes, one --scope per permission:

t3 pair --scope orchestration:read --scope relay:read
  • orchestration:read / :operateWatch agent work, or direct it
  • terminal:operateUse terminals on the host. Leave this out for a look-but-don't-touch client.
  • source-control:writeGit and pull request actions from the client
  • filesystem:read / :writeBrowse and view files, or edit them
  • relay:readListed in T3's docs alongside the above; run t3 pair --help for the full set

Changing permissions means making a new pairing link. Reconnecting alone changes nothing. Revoke links and sessions in Settings, Sharing & access, or from a headless host:

t3 auth session list
t3 auth session revoke <id>

Claudhopper move: Give the phone on your couch read access and keep the terminal scope for the machine at your desk.

Keeping it running

t3 service install
t3 service status
t3 service restart
t3 service uninstall
  • LinuxNeeds systemd user services. Setup turns on lingering so the service starts at boot and survives logout. If it dies when your SSH session closes, run sudo loginctl enable-linger "$(id -un)". t3 service protect reserves memory so agents cannot starve the server.
  • macOSStarts at login and stops at logout. For unattended access the Mac has to stay logged in and awake. If agents cannot reach Desktop, Documents or Downloads, grant Full Disk Access to the t3 executable.
  • WindowsNo background service. Keep the desktop app open with its local environment on, or leave t3 serve running in a terminal. Minimize the app. Do not close its last window.

Your projects, threads and settings live under ~/.t3/userdata and survive an uninstall. Custom environment variables go in ~/.t3/service.env as plain KEY=VALUE lines; restart the service after editing, and chmod 600 the file if it holds credentials.

Updating without tears

  • The update button at the bottom of the sidebar updates every connected machine in one go: outdated providers first, then servers, then the desktop app.
  • From a terminal: t3 update. Add a version to pin one, --channel nightly to switch trains, --allow-downgrade to go backwards.
  • Switch Stable and Nightly in Settings, About, Update track.
  • App and server must speak the same protocol version. If they do not, the connection is refused and a notice names the side to update.
  • Updates interrupt running agents and terminal commands. Saved threads, settings and files remain, and “Continue threads after restarts” is on by default.

Clodhopper move: Running t3 update in the middle of a four-hour agent run because the button was shiny.

Things you find out later

  • Built-in browserTabs belong to the environment, so agents keep using them while no device is connected. The first tab downloads headless Chrome, about 120 MB. On a minimal Linux host, run sudo t3 browser setup. Chrome's sandbox cannot run as root, so run the server as a normal user.
  • Linked environmentsA beta that lets agents on one machine start and manage work on another. Both sides must enable it in Settings, Labs. Links last 30 days. The pairing code is sent to whatever address you type, so only type addresses you trust.
  • Outside agentsAgents T3 Code did not start, including a plain Claude Code session, can use the environment through its MCP server.
  • Auto balanceWith two or more machines, new drafts can pick a machine for you. Off by default.
  • Reclaiming spacet3 doctor can shrink the database. It takes the service offline, stops running agents, and needs free space of about twice the data in use.
  • One home, one serverOnly one server can use a T3 home directory at a time. Use --base-dir for an independent second one.

Sources: t3.codes and T3 Code's own documentation at github.com/pingdotgg/t3code (install, remote access, background service and updating guides), read on November 11, 2026. T3 Code is not made by Anthropic or by us, it is early software, and it changes fast. When this page and their docs disagree, their docs win. See also the other third-party apps.

Advertisement