T3 Code

Coordinating agents across harnesses and machines

The hard part of running several agents is keeping track of them.

What T3 Code is

A control surface for the coding agents you already have.

The T3 Code desktop app: project postplan, thread “Add Expiring Draft Share Links”. The sidebar lists threads grouped by state, the conversation shows 4 subagents working on one request, and the right panel shows the branch, changes and a Lineage list with 4 running.
  1. Projects and threads, grouped by state
  2. One request, four delegates running
  3. Branch, changes and lineage
t3.codes · the desktop app

What T3 Code is

What T3 Code is

What it adds to the agent you already use

Claude Code, Codex and Cursor keep doing the work. T3 Code sits around them.

Your agent in a terminal or an editor
With T3 Code
A window per agent. You go round and check each one.
One inbox for every threadWorking threads fold away. A question or a finished run brings one back, and your phone buzzes.
slide 4
You tidy up after the PR lands.
Threads that close themselvesThe PR is linked from the branch. When it merges, the thread settles.
slide 4
One harness per session. A second opinion means copy and paste.
Delegation across harnessesA thread hands work to Codex, Claude Code or Cursor and gets the findings back.
slides 5, 6
SSH in and run the agent over there.
Any of your machines, from any devicePick the machine when you start a thread. Desktop, web or phone. Machines can call each other.
slides 7–9, 11
Files, previews and devices stay wherever the agent ran.
The work follows the threadAttachments land on the right machine; results open here. Projects clone across machines.
slide 10
Automation means a shell script and cron.
An interface for your other toolsMCP for outside agents, scheduled tasks, webhooks from GitHub.
slide 12

An inbox for work that needs you

Send a task, forget it, and let it come back when it needs you.

Local capture of the T3 Code desktop app: the sidebar with three projects and their threads marked Working, Done or an age, a harness icon per thread, Snoozed 5 with alarm times, and Settled 318.
Local capture · the inbox
Local capture of the T3 Code desktop app: a reply reading Both PRs are merged, in order, with the modern-tkprof and mtkprof-desktop pull request links and the line about local checkouts of both repositories.
Local capture · two PRs merged
Local capture of the T3 Code desktop app: the right panel for the machine David’s MacBook Pro (2) with Open in VS Code, a project script, branch main, PR #18, Show 8 more and Commit.
Local capture · linked PRs
Local capture of the T3 Code desktop app: the end of a settled thread, a reply confirming both repositories are pushed, then Settled 15m ago and Un-settle.
Local capture · settled after the PRs merged

An inbox for work that needs you

Local capture of the T3 Code desktop app: the sidebar with three projects and their threads marked Working, Done or an age, a harness icon per thread, Snoozed 5 with alarm times, and Settled 318.
Local capture · the inbox
Local capture of the T3 Code desktop app: a reply reading Both PRs are merged, in order, with the modern-tkprof and mtkprof-desktop pull request links and the line about local checkouts of both repositories.
Local capture · two PRs merged
Local capture of the T3 Code desktop app: the right panel for the machine David’s MacBook Pro (2) with Open in VS Code, a project script, branch main, PR #18, Show 8 more and Commit.
Local capture · linked PRs
Local capture of the T3 Code desktop app: the end of a settled thread, a reply confirming both repositories are pushed, then Settled 15m ago and Un-settle.
Local capture · settled after the PRs merged

Delegation across harnesses

One thread does the work and asks two other harnesses to check it.

Local capture of the T3 Code desktop app: a thread row for a running Claude subagent, Audit deck claims against T3 docs, running for 2m 51s, above a 2 subagents row with Codex and Cursor icons, 1 working and 1 done.
Local capture · a thread with Codex, Cursor and Claude delegates
Local capture of the T3 Code desktop app: the thread Tracefile Summary and LLM Prompt in mtkprof-desktop, with the right panel showing PR #18, Show 8 more, Commit, Changes and Previous agents 10.
Local capture · a thread's PRs and previous agents

Delegation across harnesses

Local capture of the T3 Code desktop app: a thread row for a running Claude subagent, Audit deck claims against T3 docs, running for 2m 51s, above a 2 subagents row with Codex and Cursor icons, 1 working and 1 done.
Local capture · a thread with Codex, Cursor and Claude delegates
Local capture of the T3 Code desktop app: the thread Tracefile Summary and LLM Prompt in mtkprof-desktop, with the right panel showing PR #18, Show 8 more, Commit, Changes and Previous agents 10.
Local capture · a thread's PRs and previous agents

Threads can coordinate across projects

Start simple: a thread in one repo can read a thread in another.

1Attach a thread
2Threads talk to each other
Local capture of the T3 Code desktop app: a settled thread in modern tkprof, Align HTML and Desktop Reports. The reply lists two merged PRs in two repositories, modern-tkprof #9 and mtkprof-desktop #23. The right panel shows #23 and the footer reads Settled 15m ago, Un-settle.
Local capture · one thread, two repos, two merged PRs

Threads can coordinate across projects

Local capture of the T3 Code desktop app: a settled thread in modern tkprof, Align HTML and Desktop Reports. The reply lists two merged PRs in two repositories, modern-tkprof #9 and mtkprof-desktop #23. The right panel shows #23 and the footer reads Settled 15m ago, Un-settle.
Local capture · one thread, two repos, two merged PRs

T3 Code is a server you can connect to

The desktop app is only one of its clients.

Your laptop can be the controller

Pick the machine. The repository, the tools and the agent stay there.

How the machines reach each other

Every machine runs a server. Three ways to connect them.

Files and projects move between machines

What the agent made over there is one click away here.

Local capture of the T3 Code desktop app: a file the agent produced opened beside the thread, with the address bar showing an asset served by the environment and the deck cover rendered inside the app.
Local capture · a file the agent produced, opened beside the thread

Files and projects move between machines

Local capture of the T3 Code desktop app: a file the agent produced opened beside the thread, with the address bar showing an asset served by the environment and the deck cover rendered inside the app.
Local capture · a file the agent produced, opened beside the thread

Ask the Linux box for what this Mac cannot do

One request from this Mac to linuxbox.

Other tools can drive the workspace

Each machine's server speaks MCP and takes schedules and webhooks.

  • Other agents read and start threads over MCP
  • Scheduled tasks run a prompt on a timer
  • Webhooks start a task from a GitHub event
  • A thread they start never gets more than the access you granted
1GitHub opens a PR, T3 Code reviews itSettings → Scheduled tasks → On webhook
NameReview new pull requests
ScheduleOn webhook
URLhttps://linuxbox.t3connect.dev/hooks/7f3a9c… Rotate
Only whenheaders.x-github-event is pull_requestbody.action is opened
PromptReview this PR: {{body.pull_request.html_url}}. Comment only on risky changes; link each remark to a file and line.
Run onlinuxbox · shop-client  ·  new thread per run  ·  Supervised
SecurityRequire signature (x-hub-signature-256)
From the docs: project-settings.md, “Webhook automations”. Public URL via T3 Connect.
2Claude Code in a terminal starts a T3 threaddocs/user/outside-agents.md
$ claude mcp add --transport http t3 https://linuxbox.t3connect.dev/mcp
$ claude mcp login t3 # approve once in T3 Code, pick Supervised
$ claude
> Start a thread in shop-client on linuxbox: run the e2e suite against staging and report failures. Wait for it and summarise.
● t3 · t3_thread_launch ✓ thread “E2E against staging” started
● t3 · t3_thread_wait ✓ finished in 6m 40s · 2 failures
● Two tests fail on the new cursor param: checkout.spec.ts:41 and orders.spec.ts:88. The thread has the traces.
meanwhile, in the inbox
SCshop-clientDone · 2 failuresE2E against stagingfrom Claude Code (terminal) · Supervised · linuxbox
Also without a sign-in, on the host: t3 thread start . "…" and t3 thread send <id> "…" --wait

Other tools can drive the workspace

1GitHub opens a PR, T3 Code reviews itSettings → Scheduled tasks → On webhook
NameReview new pull requests
ScheduleOn webhook
URLhttps://linuxbox.t3connect.dev/hooks/7f3a9c… Rotate
Only whenheaders.x-github-event is pull_requestbody.action is opened
PromptReview this PR: {{body.pull_request.html_url}}. Comment only on risky changes; link each remark to a file and line.
Run onlinuxbox · shop-client  ·  new thread per run  ·  Supervised
SecurityRequire signature (x-hub-signature-256)
From the docs: project-settings.md, “Webhook automations”. Public URL via T3 Connect.
2Claude Code in a terminal starts a T3 threaddocs/user/outside-agents.md
$ claude mcp add --transport http t3 https://linuxbox.t3connect.dev/mcp
$ claude mcp login t3 # approve once in T3 Code, pick Supervised
$ claude
> Start a thread in shop-client on linuxbox: run the e2e suite against staging and report failures. Wait for it and summarise.
● t3 · t3_thread_launch ✓ thread “E2E against staging” started
● t3 · t3_thread_wait ✓ finished in 6m 40s · 2 failures
● Two tests fail on the new cursor param: checkout.spec.ts:41 and orders.spec.ts:88. The thread has the traces.
meanwhile, in the inbox
SCshop-clientDone · 2 failuresE2E against stagingfrom Claude Code (terminal) · Supervised · linuxbox
Also without a sign-in, on the host: t3 thread start . "…" and t3 thread send <id> "…" --wait

Rapid fire: context and interaction

  1. 01

    Switch harness mid-thread

    context handoff, in the model picker

  2. 02

    HTML answers in chat

    charts, tables, mockups; interactive

  3. 03

    Attachments are files

    real paths on the agent's machine, up to 100 per message

  4. 04

    Window snapshots

    with accessibility data, desktop only

  5. 05

    One prompt, several models

    a thread and a worktree each

  6. 06

    /goal

    keeps working across turns until done

Rapid fire: running the workspace

  1. 01

    Update every machine

    providers, servers, app

  2. 02

    Add a project to a machine

    clone plus chosen .env files

  3. 03

    Review and merge PRs

    sorted by readiness

  4. 04

    Watch a PR

    wakes on checks and reviews

  5. 05

    Usage and limits

    resume at reset

  6. 06

    T3 triage

    your agent reads the logs

What to take home

  1. One inbox

    Threads fold away while they work and come back when they need you. A merged PR closes its thread.

  2. Any machine

    Every box runs a T3 Code server. Pick one when you start a thread, from desktop, web or phone. Machines can call each other.

  3. Any harness

    Claude Code, Codex, Cursor and the rest, with your own logins. A thread can delegate to another harness and get findings back.

Try it this week
1Install on your laptop and on one other box, then run t3 up over there
2Send one real task to the other box. Ask the thread to have a second harness review the diff
3Open the PR, close the laptop. Check the inbox tomorrow.

Did you coordinate less?

curl -fsSL https://t3.codes/install.sh | sh · github.com/pingdotgg/t3code · MIT · free · bring your own subscriptions