Note
This is a community fork of T3 Code that adds a first-class provider driver for pi, the local coding agent by the Earendil Works team. With this fork you can control pi sessions from T3 Code's web, mobile, and desktop apps, alongside the providers upstream T3 Code already supports (Codex, Claude Code, Cursor, Grok Build, and OpenCode).
The pi provider is implemented as a built-in driver (PiDriver), so it shows up in the provider
picker and Settings like any other provider. See docs/user/providers-pi.md
for setup.
T3 Code is an "agent harness control surface". It enables control of the agents on your machine with a best-in-class mobile app (iOS, Android), web app and Electron-based desktop app.
Works with your subscriptions on Claude Code, Codex, Cursor, Grok Build, OpenCode, and Pi. If they're set up on your computer, T3 Code can control them.
This fork is experimental. Known quirks:
- Slow first launch on Linux — the desktop app can take a while to load initially. Give it a minute before assuming it is stuck.
- DevTools may open on launch — the desktop app sometimes starts with the F12 developer-tools panel open. Just close it and use the app normally.
- Extension notifications are suppressed — display-only pi extension notifications (for example
@hk_net/pi-timestamp'sSent HH:MM:SS/Done at HH:MM:SS · …lines) do not appear in the T3 Code work log, because the UI renders message timestamps natively. They still show in the pi terminal UI.
Nothing. We built T3 Code because we wanted the best possible development experience with agents. We were inspired by existing solutions like the Codex desktop app, Conductor, Claude Desktop and Cursor Glass, but none met our bar.
We wanted something performant, remote-ready, and truly open. If we ever go the wrong direction, we want you to have everything you need to fork and build the editor that you want.
Warning
T3 Code currently supports Codex, Claude, Cursor, Grok Build, OpenCode and Pi. Install and authenticate at least one provider before use:
- Codex: install Codex CLI and run
codex login - Claude: install Claude Code and run
claude auth login - Cursor: install Cursor CLI and run
agent login - Grok Build: install Grok Build CLI and run
grok login - OpenCode: install OpenCode and run
opencode auth login - Pi: install the pi coding agent (
npm install -g @earendil-works/pi-coding-agent) and make surepiis on yourPATH
The easiest way to test T3 Code is to run the server in your terminal (requires Node.js 22.16+, 23.11+, or 24.10+):
npx t3@latestThis will launch T3 Code's backend on your machine as well as the local web app to control your agents.
Tip: Use npx t3@latest --help for the full CLI reference.
Install the latest version of the desktop app from GitHub Releases, or from your favorite package registry:
winget install T3Tools.T3Codebrew install --cask t3-codeyay -S t3code-binWe are very very early in this project. Expect bugs.
We are (mostly) not accepting contributions yet. Small fixes may be considered. Big features will not be.
Full docs live in docs/. There's no docs site yet.
- Install and first run
- Permission modes
- Keyboard shortcuts
- Customize a project icon
- Remote access from a phone or another machine
- Keeping app and server in sync
- Source control integrations
- Multiple accounts: Codex · Claude
- Pi provider: providers-pi.md
- Linux: run T3 Code as a background service
Building from source? Start at docs/internals/overview.md.
T3 Code uses Vite+ so you'll need to install the global vp command-line tool.
curl -fsSL https://vite.plus | bashirm https://vite.plus/ps1 | iexCheckout their getting started guide for more information: https://viteplus.dev/guide/
vp iRead CONTRIBUTING.md before opening an issue or PR.
Need support? Join the Discord.
This fork's history is rooted at a self-contained snapshot of upstream
T3 Code (at c9063f03), so the repository has no
dependency on the upstream git history. To pull newer upstream changes:
git remote add upstream https://github.com/pingdotgg/t3code # once
git fetch upstream
git rebase --onto upstream/main <fork-base-commit> publish # fork base = first commit of this repo
# resolve conflicts, then:
git push origin publish:main