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.
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.
| Provider | Install and sign in |
|---|---|
| Claude | Install Claude Code, then claude auth login |
| Codex | Connect with ChatGPT, or install the Codex CLI and run codex login |
| Cursor | Install the Cursor CLI, then agent login |
| Grok Build | Install the Grok Build CLI, then grok login |
| Kiro | Install the Kiro CLI, then kiro-cli login |
| OpenCode | Install OpenCode, then opencode auth login |
| Antigravity | Install and sign in with Google from provider settings |
| Pi | Needs Node.js 22.19 or newer. Run pi, then /login |
| Muse Code | Install on the server, run muse login, then enable it in Settings |
| fx | curl -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
curl -fsSL https://t3.codes/install.sh | shirm https://t3.codes/install.ps1 | iexnpx t3@latest- The binary goes in
~/.local/bin. If that folder is not on yourPATH, the installer prints the line to add for zsh, bash or fish. - On Windows,
t3works at once in the same PowerShell window. Add the folder toPATHfor new windows. - If a
t3it did not create already exists, the installer leaves it alone and stops. - Set
T3CODE_CHANNEL=nightlyfor the nightly channel, orT3CODE_VERSIONto 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.mjsOr install the desktop app
| Platform | Command |
|---|---|
| Windows | winget install T3Tools.T3Code |
| macOS | brew install --cask t3-code |
| Debian, Ubuntu | Download the .deb from GitHub Releases, then sudo apt install ./T3-Code-*.deb |
| Arch Linux | yay -S t3code-bin (nightly: yay -S t3code-nightly-bin). x86_64 only. |
| Nix | nix profile add github:NixOS/nixpkgs/nixos-unstable#t3code |
| Any Linux | AppImage for x86_64 and ARM64 from GitHub Releases. chmod +x it and run. |
- The desktop app sets up the
t3command 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
| Command | What it does |
|---|---|
t3 | Start the server and open the web app. If a server is already running, it connects to that one. |
t3 ./my-project | Start in a project. Use an explicit path for a new directory. |
t3 serve | Start the server without opening a browser |
t3 app | Open a new thread for this directory in the running desktop app |
t3 up | Set up access from your other devices |
t3 status | Show how your other devices reach this machine |
t3 pair | Make a fresh pairing link without restarting |
t3 service install | Run in the background (macOS and Linux) |
t3 update | Move to the newest release on your channel |
t3 doctor | Report database size and reclaim space |
t3 uninstall | Remove the service, the launcher and downloaded versions, after asking |
t3 --help | The 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
- On the host, run
t3 upand choose T3 Connect. On the desktop app, sign in under Settings, Sharing & access, and turn T3 Connect on. - 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 pairScan 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 --tailscaleBoth 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:readorchestration:read/:operateWatch agent work, or direct itterminal: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 clientfilesystem:read/:writeBrowse and view files, or edit themrelay:readListed in T3's docs alongside the above; runt3 pair --helpfor 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 protectreserves 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
t3executable. - WindowsNo background service. Keep the desktop app open with its local environment on, or leave
t3 serverunning 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 nightlyto switch trains,--allow-downgradeto 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 space
t3 doctorcan 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-dirfor 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.