authorgravatar for julius0216@outlook.comJulius Marminge <julius0216@outlook.com> 2026-09-16 01:01:22-07:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2026-09-16 01:01:22-07:00
logccf220be205f0e509021dbc8cbda90daa638e20d
treeaa3d06d2f0e3c061a3830631d0f3734f95c52f14
parentb900fc94ebe630155783c07324c58af7e6387a03
signature Signed by PGP key B5690EEEBB952194

docs: make the standalone installer the primary way to get the CLI (#11696)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>

7 files changed, 124 insertions(+), 125 deletions(-)

README.md+10-6
...@@ -22,17 +22,21 @@ We wanted something performant, remote-ready, and truly open. If we ever go the...@@ -22,17 +22,21 @@ We wanted something performant, remote-ready, and truly open. If we ever go the
22> - OpenCode: install [OpenCode](https://opencode.ai) and run `opencode auth login`22> - OpenCode: install [OpenCode](https://opencode.ai) and run `opencode auth login`
23> - Antigravity: enable it in Settings, then use **Install Antigravity** and **Sign in with Google**. No CLI is required.23> - Antigravity: enable it in Settings, then use **Install Antigravity** and **Sign in with Google**. No CLI is required.
2424
25### Try it out (install-free)25### Command line
26
27The easiest way to test T3 Code is to run the server in your terminal (requires Node.js 22.16+, 23.11+, or 24.10+):
2826
29```bash27```bash
30npx t3@latest28curl -fsSL https://t3.codes/install.sh | sh
29```
30
31On Windows, in PowerShell:
32
33```powershell
34irm https://t3.codes/install.ps1 | iex
31```35```
3236
33This will launch T3 Code's backend on your machine as well as the local web app to control your agents.37Then run `t3` to start the server and open the local web app. `t3 service install` keeps it running in the background, `t3 update` moves to a newer release, and `t3 --help` has the full reference.
3438
35Tip: Use `npx t3@latest --help` for the full CLI reference.39To try it once without installing, run `npx t3@latest` instead.
3640
37### Desktop app41### Desktop app
3842
apps/marketing/src/pages/download.astro+13-8
...@@ -131,10 +131,13 @@ const imageProps = {...@@ -131,10 +131,13 @@ const imageProps = {
131 <svg class="platform-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 7l5 5-5 5M12 17h7"/></svg>131 <svg class="platform-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M5 7l5 5-5 5M12 17h7"/></svg>
132 <h2 class="platform-name">Terminal</h2>132 <h2 class="platform-name">Terminal</h2>
133 </div>133 </div>
134 <code class="cli-line">npx t3@nightly</code>134 <code class="cli-line cli-line--stable">curl -fsSL https://t3.codes/install.sh | sh</code>
135 <p class="cli-note">No Node.js? The preview build installs as a single download:</p>135 <code class="cli-line cli-line--stable">irm https://t3.codes/install.ps1 | iex</code>
136 <code class="cli-line">curl -fsSL https://t3.codes/install.sh | sh</code>136 <code class="cli-line cli-line--nightly">curl -fsSL https://t3.codes/install.sh | T3CODE_CHANNEL=nightly sh</code>
137 <code class="cli-line">irm https://t3.codes/install.ps1 | iex</code>137 <code class="cli-line cli-line--nightly">$env:T3CODE_CHANNEL="nightly"; irm https://t3.codes/install.ps1 | iex</code>
138 <p class="cli-note">Or try it once without installing:</p>
139 <code class="cli-line cli-line--stable">npx t3@latest</code>
140 <code class="cli-line cli-line--nightly">npx t3@nightly</code>
138 </section>141 </section>
139 </div>142 </div>
140143
...@@ -402,16 +405,18 @@ const imageProps = {...@@ -402,16 +405,18 @@ const imageProps = {
402 gap: 0.75rem;405 gap: 0.75rem;
403 }406 }
404407
405 .platform-section--cli {408 .download-page[data-channel="nightly"] .platform-section--mobile {
406 display: none;409 display: none;
407 }410 }
408411
409 .download-page[data-channel="nightly"] .platform-section--mobile {412 /* The CLI ships on both trains; only the install command differs. */
413 .cli-line--nightly,
414 .download-page[data-channel="nightly"] .cli-line--stable {
410 display: none;415 display: none;
411 }416 }
412417
413 .download-page[data-channel="nightly"] .platform-section--cli {418 .download-page[data-channel="nightly"] .cli-line--nightly {
414 display: flex;419 display: block;
415 }420 }
416421
417 .platform-header {422 .platform-header {
docs/user/background-service.md+29-54
...@@ -5,65 +5,40 @@ to keep a terminal open....@@ -5,65 +5,40 @@ to keep a terminal open.
55
6## Manage the service6## Manage the service
77
8Run these commands on the machine that will host T3 Code:8Install the `t3` CLI first ([Install T3 Code](./install.md#command-line)), then
9run these commands on the machine that will host T3 Code:
910
10| Task | Command |11| Task | Command |
11| ------------------------------- | --------------------------------- |12| ------------------------------- | ---------------------- |
12| Install and start | `npx t3@latest service install` |13| Install and start | `t3 service install` |
13| Inspect status and log location | `npx t3@latest service status` |14| Inspect status and log location | `t3 service status` |
14| Update or repair | `npx t3@latest service update` |15| Move to a newer release | `t3 update` |
15| Stop and remove from startup | `npx t3@latest service uninstall` |16| Restart | `t3 service restart` |
17| Stop and remove from startup | `t3 service uninstall` |
1618
17Uninstalling the service leaves your projects, threads, and settings intact.19Uninstalling the service leaves your projects, threads, and settings intact.
1820Running `t3 service install` again repairs a service that `t3 service status`
19Install and update use the version of the CLI you invoke. For nightly, use21reports as broken.
20`npx t3@nightly service update`; replace `nightly` with an exact version to pin22
21one. An older CLI refuses to replace a newer service unless you explicitly add23`t3 update` downloads the newest release on your channel and switches `t3`
22`--allow-downgrade`.24and the service to it. Restarting interrupts running agent turns, terminals,
2325and remote clients, so it asks first; answer no and the service keeps running
24Updating restarts the server. Finish active work first, and wait for any remote26the old version until you run `t3 service restart`. Pass `--yes` from a
25update already in progress. To match a remote client's version, follow27script. A server you started by hand is left running; stop and start it again
28to pick up the new version. Wait for any remote update already in progress
29before updating; to match a remote client's version, follow
26[Updating T3 Code](./updating.md).30[Updating T3 Code](./updating.md).
2731
28Self-contained builds install as a download from the T3 Code GitHub release32Pass an exact version (`t3 update 0.0.42`) to pin one, `--channel nightly` to
29instead of through npm, so the machine running the service does not need33switch trains, or `--allow-downgrade` to move backwards. `preview` is a
30Node.js or npm once the CLI is on it. To get the CLI onto a machine without34maintainers' test train: its builds can be broken and are never offered as
31Node, run the install script:35updates, so the installer and `t3 update` ask for confirmation before
3236installing one.
33```sh
34curl -fsSL https://t3.codes/install.sh | sh
35```
3637
37On Windows, run `irm https://t3.codes/install.ps1 | iex` in PowerShell instead.38`t3 uninstall` removes the background service, the `t3` launcher, and the
3839downloaded versions after showing you the list and asking once. Your projects,
39It places `t3` in `~/.local/bin` and reuses the same download when you later40threads, and settings under `~/.t3/userdata` are kept. Pass `--yes` from a
40run `t3 service install`. It follows the stable train by default; set41script.
41`T3CODE_CHANNEL=nightly` for nightlies, `T3CODE_VERSION` to pin an exact
42version, or `T3CODE_RELEASE_BASE_URL` to download from a mirror.
43
44`preview` is a third train that maintainers cut from unreleased branches to
45exercise the release pipeline. Those builds can be broken, receive no fixes,
46and are never offered as updates; the installer and `t3 update` only take you
47there when you ask for the channel explicitly, and warn you when they do.
48
49Once a self-contained `t3` is installed, `t3 update` moves the machine to a
50newer one without npm: it downloads the newest release on the channel the
51running `t3` came from, verifies it, and points the `t3` launcher at it. When
52a background service is installed for the same T3 home it asks before
53restarting it, since a restart interrupts running agent turns, terminals, and
54remote clients; answer no and the service keeps the old version until you run
55`t3 service update`. From a script there is no prompt, so pass `--yes` to
56restart the service. A server you started by hand is never touched; the
57command tells you it is still on the old version so you can restart it
58yourself. Pass an exact version (`t3 update 0.0.41-preview.20260912.1595`) to
59pin one, `--channel` to follow a different release train (moving onto preview from stable or nightly asks for confirmation), or
60`--allow-downgrade` to move backwards.
61
62`t3 uninstall` reverses the install script: it shows what it found (the
63background service, the `t3` launcher, every downloaded version under
64`~/.t3/runtime`), asks once, and removes them. Your projects, threads, and
65settings under `~/.t3/userdata` are kept; delete that directory yourself if
66you want them gone too. Pass `--yes` from a script.
6742
68## Platform support43## Platform support
6944
...@@ -114,7 +89,7 @@ that session open....@@ -114,7 +89,7 @@ that session open.
11489
115On macOS, check **System Settings → General → Login Items** if the service no90On macOS, check **System Settings → General → Login Items** if the service no
116longer starts at login. If agent work cannot access Desktop, Documents, or91longer starts at login. If agent work cannot access Desktop, Documents, or
117Downloads, it may need Full Disk Access for the Node executable listed in92Downloads, it may need Full Disk Access for the `t3` executable listed in
118`ProgramArguments` in93`ProgramArguments` in
119`~/Library/LaunchAgents/com.t3tools.t3code.service.plist`.94`~/Library/LaunchAgents/com.t3tools.t3code.service.plist`.
12095
docs/user/install.md+37-22
...@@ -5,28 +5,44 @@ desktop, web, or mobile app. Set up the machine where the agents will work first...@@ -5,28 +5,44 @@ desktop, web, or mobile app. Set up the machine where the agents will work first
55
6## Requirements6## Requirements
77
8`npx t3` needs Node.js only to run npm itself; the CLI it installs is a
9self-contained executable. SSH hosts and WSL backends need Node.js 22.16+
10(22.x), 23.11+ (23.x), or 24.10 and later. The native desktop app includes its
11server runtime.
12
13You need an installed, authenticated provider before starting a thread. You can8You need an installed, authenticated provider before starting a thread. You can
14launch T3 Code and configure providers afterwards.9launch T3 Code and configure providers afterwards.
1510
16## Run without installing11## Command line
1712
18```bash13```bash
19npx t3@latest14curl -fsSL https://t3.codes/install.sh | sh
15```
16
17On Windows, in PowerShell:
18
19```powershell
20irm https://t3.codes/install.ps1 | iex
20```21```
2122
22This starts the server and opens the local web app. Run23This puts `t3` in `~/.local/bin`. If your shell reports `command not found`
23`npx t3@latest --help` for command-line options.24afterwards, that directory is not on your `PATH` yet; the installer prints the
25line to add. Set `T3CODE_CHANNEL=nightly` to install the nightly train, or
26`T3CODE_VERSION` to pin an exact version.
27
28| Task | Command |
29| ------------------------------------------------ | --------------------------------------------------------- |
30| Start the server and open the web app | `t3` |
31| Start the server without a browser | `t3 serve` |
32| Keep it running in the background (macOS, Linux) | `t3 service install` ([details](./background-service.md)) |
33| Move to the newest release | `t3 update` |
34| Remove it again | `t3 uninstall` |
35
36Run `t3 --help` for the full reference.
37
38To try T3 Code once without installing it, run `npx t3@latest` instead (needs
39Node.js for `npx`).
40
41### Intel Macs
2442
25The executable is built for Apple Silicon Macs, Linux, and Windows. There is43There is no `t3` executable for Intel Macs (the desktop app is available). To
26no Intel Mac build of it, because Node cannot produce a single executable for44run a server there, build it from source with Node.js 24 and `vp`
27that platform; the Intel desktop app is unaffected. To run a standalone server45([Install vp](https://github.com/pingdotgg/t3code#install-vp)):
28on an Intel Mac, build it from source. You need Node.js 24 and `vp` (see
29[Install vp](https://github.com/pingdotgg/t3code#install-vp)):
3046
31```bash47```bash
32git clone https://github.com/pingdotgg/t3code48git clone https://github.com/pingdotgg/t3code
...@@ -34,9 +50,8 @@ cd t3code && vp i && vp run build:desktop...@@ -34,9 +50,8 @@ cd t3code && vp i && vp run build:desktop
34node apps/server/dist/bin.mjs50node apps/server/dist/bin.mjs
35```51```
3652
37A server run this way is a plain Node program: `t3 update` and the background53`t3 update` and the background service do not apply to a server run this way;
38service do not apply, so update it with `git pull` and a rebuild, and start it54update it with `git pull` and a rebuild.
39however you run other Node processes.
4055
41## Desktop app56## Desktop app
4257
...@@ -53,20 +68,20 @@ or use a package manager:...@@ -53,20 +68,20 @@ or use a package manager:
53### Windows Subsystem for Linux68### Windows Subsystem for Linux
5469
55Choose a WSL distro in **Settings → Connections** to run agents and projects70Choose a WSL distro in **Settings → Connections** to run agents and projects
56there. Install Node.js and provider CLIs inside that distro. T3 Code installs its71there. Install the provider CLIs inside that distro. T3 Code installs its own
57matching server runtime there automatically; the first launch after an app72server runtime there automatically; the first launch after an app update can
58update can take longer.73take longer.
5974
60### Open a project from a terminal75### Open a project from a terminal
6176
62With the desktop app already running on the same machine:77With the desktop app already running on the same machine:
6378
64```bash79```bash
65npx t3 app80t3 app
66```81```
6782
68This opens a new thread for the current directory, adding the project if needed.83This opens a new thread for the current directory, adding the project if needed.
69Pass a path, such as `npx t3 app ../my-project`, to open another directory. It requires84Pass a path, such as `t3 app ../my-project`, to open another directory. It requires
70the desktop app, so a standalone server or an SSH session is not enough. If the85the desktop app, so a standalone server or an SSH session is not enough. If the
71command cannot reach the app, start or update the desktop app and try again.86command cannot reach the app, start or update the desktop app and try again.
7287
docs/user/remote-access.md+15-16
...@@ -12,12 +12,12 @@ Connections**, sign in, and enable **T3 Connect** for that environment....@@ -12,12 +12,12 @@ Connections**, sign in, and enable **T3 Connect** for that environment.
12For a command-line host, run:12For a command-line host, run:
1313
14```bash14```bash
15npx t3@latest connect15t3 connect
16```16```
1717
18Follow the sign-in instructions. Setup offers a18Follow the sign-in instructions. Setup offers a
19[background service](./background-service.md); if you decline it, start the19[background service](./background-service.md); if you decline it, start the
20server with `npx t3 serve`. Saving your sign-in alone does not make the machine20server with `t3 serve`. Saving your sign-in alone does not make the machine
21reachable.21reachable.
2222
23On your other device, sign in to the same T3 Connect account and choose the23On your other device, sign in to the same T3 Connect account and choose the
...@@ -42,13 +42,13 @@ For a command-line host, replace `<private-ip>` with the host's LAN or tailnet...@@ -42,13 +42,13 @@ For a command-line host, replace `<private-ip>` with the host's LAN or tailnet
42address:42address:
4343
44```bash44```bash
45npx t3 serve --host <private-ip>45t3 serve --host <private-ip>
46```46```
4747
48If a server is already running, generate a fresh link without restarting it:48If a server is already running, generate a fresh link without restarting it:
4949
50```bash50```bash
51npx t3 pair51t3 pair
52```52```
5353
54Scan the QR code on your phone or paste the pairing URL into **Add environment**54Scan the QR code on your phone or paste the pairing URL into **Add environment**
...@@ -88,13 +88,13 @@ HTTPS** in **Settings → Connections**. Turn it off there to remove that route....@@ -88,13 +88,13 @@ HTTPS** in **Settings → Connections**. Turn it off there to remove that route.
88To start a command-line server with Tailscale HTTPS:88To start a command-line server with Tailscale HTTPS:
8989
90```bash90```bash
91npx t3 serve --tailscale-serve91t3 serve --tailscale-serve
92```92```
9393
94For an already-running server:94For an already-running server:
9595
96```bash96```bash
97npx t3 pair --tailscale97t3 pair --tailscale
98```98```
9999
100The pairing link uses an address such as `https://machine.tailnet.ts.net/`.100The pairing link uses an address such as `https://machine.tailnet.ts.net/`.
...@@ -106,7 +106,7 @@ tailscale serve --https=443 off...@@ -106,7 +106,7 @@ tailscale serve --https=443 off
106```106```
107107
108If that port is already in use, choose another with108If that port is already in use, choose another with
109`--tailscale-serve-port`. See `npx t3 pair --help` for other pairing options.109`--tailscale-serve-port`. See `t3 pair --help` for other pairing options.
110110
111### Hosted web app111### Hosted web app
112112
...@@ -125,18 +125,17 @@ In the desktop app, open **Settings → Connections → Add environment**, choos...@@ -125,18 +125,17 @@ In the desktop app, open **Settings → Connections → Add environment**, choos
125or reuses a server there and opens the port forward for you. Projects, provider125or reuses a server there and opens the port forward for you. Projects, provider
126credentials, and agent work stay on the remote machine.126credentials, and agent work stay on the remote machine.
127127
128The remote host needs a compatible [Node.js installation](./install.md#requirements)128The remote host must be Linux or an Apple Silicon Mac with `curl` or `wget`,
129and [provider setup](./install.md#providers). If launch cannot find Node or reports129`tar`, `sha256sum` or `shasum`, and [provider setup](./install.md#providers).
130an incompatible version, check it through a non-interactive SSH session:130The first launch downloads T3 Code's server to `~/.t3/runtime` on the host, so
131it takes longer than later ones.
132Provider CLIs must be on the `PATH` of a non-interactive login shell there;
133check with:
131134
132```bash135```bash
133ssh user@example.com 'sh -lc "command -v node && node --version"'136ssh user@example.com 'sh -lc "command -v claude codex"'
134```137```
135138
136Configure your version manager for non-interactive shells if this differs from
137your normal terminal. With nvm, setting a compatible default, such as
138`nvm alias default 24`, can resolve the problem.
139
140If SSH reconnecting fails after an app update, retry the launch once. Removing139If SSH reconnecting fails after an app update, retry the launch once. Removing
141the connection stops a server that T3 Code launched; a server that was already140the connection stops a server that T3 Code launched; a server that was already
142running is left alone.141running is left alone.
...@@ -149,7 +148,7 @@ For Antigravity's Google callback on a remote host, see...@@ -149,7 +148,7 @@ For Antigravity's Google callback on a remote host, see
149On the host, **Settings → Connections** lets authorized administrators create148On the host, **Settings → Connections** lets authorized administrators create
150pairing links and revoke client sessions. Revoking an unused link prevents new149pairing links and revoke client sessions. Revoking an unused link prevents new
151pairings; revoke a device's session to remove its existing access. Command-line150pairings; revoke a device's session to remove its existing access. Command-line
152management is available through `npx t3 auth --help`.151management is available through `t3 auth --help`.
153152
154A session with an open connection stays listed after its access credential153A session with an open connection stays listed after its access credential
155expires.154expires.
docs/user/updating.md+10-10
...@@ -31,21 +31,21 @@ The offered action depends on how the server runs:...@@ -31,21 +31,21 @@ The offered action depends on how the server runs:
31| **Update the desktop app** | Update the desktop app on the machine running the server, then reopen it if needed. |31| **Update the desktop app** | Update the desktop app on the machine running the server, then reopen it if needed. |
32| **Copy update command** | Stop the command-line server on its host and relaunch with the copied command, keeping your usual startup options. |32| **Copy update command** | Stop the command-line server on its host and relaunch with the copied command, keeping your usual startup options. |
3333
34For a background service, run the matching version's CLI on the host:34On the host, run:
3535
36```sh36```sh
37npx t3@<client-version> service update37t3 update <client-version>
38```38```
3939
40Replace `<client-version>` with the version shown in the notice. Using40Replace `<client-version>` with the version shown in the notice. The command
41`@latest` only resolves the mismatch if your client is on that release. An older41asks before restarting the background service; if you decline, run
42service launcher may require this local update before it supports remote updates42`t3 service restart` when you are ready. For a server you started by hand,
43and rollback.43stop it and start it again afterwards with your usual options such as `--host`
44or `--tailscale-serve`.
4445
45For a foreground server, the copied command is `npx t3@<client-version>`. Add46If you run the server with `npx` rather than an installed `t3`, there is
46`serve` if you normally run without a browser, and preserve options such as47nothing to update on the host: stop the server and relaunch it as
47`--host` or `--tailscale-serve`. See48`npx t3@<client-version>` with the same subcommand and options.
48[background services](./background-service.md) for service management.
4949
50## If an update fails50## If an update fails
5151
docs/user/welcome-wizard.md+10-9
...@@ -12,13 +12,14 @@ browser....@@ -12,13 +12,14 @@ browser.
1212
13You can add more computers before continuing:13You can add more computers before continuing:
1414
15- **T3 Connect** connects computers that are signed in to your account. Run15- **T3 Connect** connects computers that are signed in to your account.
16 `npx t3 connect` on each computer you want to add, then start T3 Code or run16 [Install the CLI](./install.md#command-line) and run `t3 connect` on each
17 `npx t3 serve` so the computer stays available.17 computer you want to add, then start T3 Code or run `t3 serve` so the
18 computer stays available.
18- **Add a computer** connects directly to a server on your network or tailnet.19- **Add a computer** connects directly to a server on your network or tailnet.
19 Start the server with `npx t3 serve`, then run `npx t3 pair --tailscale` and20 Start the server with `t3 serve`, then run `t3 pair --tailscale` and paste
20 paste the pairing link. You can also run `npx t3 serve --host <address>` and21 the pairing link. You can also run `t3 serve --host <address>` and use
21 use `npx t3 pair` when the server is already reachable on your network.22 `t3 pair` when the server is already reachable on your network.
2223
23Saved computers and computers discovered through T3 Connect are selected by24Saved computers and computers discovered through T3 Connect are selected by
24default. Uncheck any you do not want to set up; this does not disconnect them.25default. Uncheck any you do not want to set up; this does not disconnect them.
...@@ -36,9 +37,9 @@ unreadable settings with defaults....@@ -36,9 +37,9 @@ unreadable settings with defaults.
3637
37T3 Code checks each selected computer for Claude Code and Codex. If an agent is38T3 Code checks each selected computer for Claude Code and Codex. If an agent is
38not installed or signed in, select its action to open a terminal with the39not installed or signed in, select its action to open a terminal with the
39correct command ready to run. Install uses the vendor's standalone installer,40correct command ready to run. Install uses the vendor's own installer, which
40which does not need Node or npm and keeps **Update now** working in Settings.41keeps **Update now** working in Settings. Other providers can be enabled in
41Other providers can be enabled in Settings.42Settings.
4243
43The setup terminal uses the home directory and environment configured for the44The setup terminal uses the home directory and environment configured for the
44selected provider instance. Sensitive values remain redacted in Settings and45selected provider instance. Sensitive values remain redacted in Settings and