You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Let Claude threads on different machines message each other
#16230
Let Claude threads on different machines message each other
Letting Claude threads on different machines message each other would make more powerful setups possible, where fleets of agents work together (Claude Code sessions message each other). For example, I run an agent harness where fleets of agents build large systems together, across machines. Each feature has a T3 Code thread as its lead, and another thread builds the harness itself. The agents talk to each other in real time: when a feature lead hits a harness bug, it messages the harness thread, gets the fix, and carries on, without me relaying anything.
Rather than a pull request, I've written this so a coding agent can follow it as is, since you know how T3 is built and tested much better than I do.
Background
Claude Code's cross-session messaging already supports this: ListAgents finds sessions and SendMessage messages them, over a local socket on the same machine and over Remote Control across machines.
In T3 this already works on one machine; I tested it. Across machines it doesn't:
A thread on another machine can't be found. T3 never enlists a Claude thread's session in Remote Control, and both ends need it. Today the only way across is a relay through plain Claude Code sessions, which works but is slow and fragile.
The session name doesn't follow the thread. Sessions get generated names, so T3 threads in one repository look alike in ListAgents:
Follow the user's Claude Code setting Enable Remote Control for all sessions (remoteControlAtStartup). That setting only connects interactive sessions, so T3 has to start Remote Control itself.
@anthropic-ai/claude-agent-sdk 0.3.276 (T3's locked version) has an untyped Query.enableRemoteControl(enabled, name?, options?). Call it with the thread title right after query(...) in ClaudeAgentSdkQueryRunner.open (apps/server/src/orchestration-v2/Adapters/ClaudeAdapterV2.ts, around line 632).
If it can't start, for example without a claude.ai sign-in, log it and carry on. It never fails the turn.
2. The session name follows the thread title
Pass the thread title as Options.title (sdk.d.ts:2320) and as the Remote Control name.
On a thread rename (thread.metadata.update, thread.title.regeneration.complete), call the untyped Query.renameSession(title) on the live session.
Acceptance Criteria
With the setting on, a thread shows up under its title in ListAgents of a thread on another machine, and SendMessage starts a turn in it, visible in T3, with no relay.
With the setting off, nothing changes.
Renaming a thread renames its session.
No other provider changes.
Nice to Have: Reconnect Remote Control
In my experience a session can lose Remote Control mid-way, for example after its Claude account changes, and nothing reconnects it. It would be nice if T3 reconnected it, or supported /remote-control in a thread.
Outline
Raw Markdown Mode
Table of Contents is not available in raw markdown view.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Let Claude threads on different machines message each other
Letting Claude threads on different machines message each other would make more powerful setups possible, where fleets of agents work together (Claude Code sessions message each other). For example, I run an agent harness where fleets of agents build large systems together, across machines. Each feature has a T3 Code thread as its lead, and another thread builds the harness itself. The agents talk to each other in real time: when a feature lead hits a harness bug, it messages the harness thread, gets the fix, and carries on, without me relaying anything.
Rather than a pull request, I've written this so a coding agent can follow it as is, since you know how T3 is built and tested much better than I do.
Background
Claude Code's cross-session messaging already supports this:
ListAgentsfinds sessions andSendMessagemessages them, over a local socket on the same machine and over Remote Control across machines.In T3 this already works on one machine; I tested it. Across machines it doesn't:
A thread on another machine can't be found. T3 never enlists a Claude thread's session in Remote Control, and both ends need it. Today the only way across is a relay through plain Claude Code sessions, which works but is slow and fragile.
The session name doesn't follow the thread. Sessions get generated names, so T3 threads in one repository look alike in
ListAgents:Suggested Approach
1. Enlist Claude threads in Remote Control
remoteControlAtStartup). That setting only connects interactive sessions, so T3 has to start Remote Control itself.@anthropic-ai/claude-agent-sdk0.3.276 (T3's locked version) has an untypedQuery.enableRemoteControl(enabled, name?, options?). Call it with the thread title right afterquery(...)inClaudeAgentSdkQueryRunner.open(apps/server/src/orchestration-v2/Adapters/ClaudeAdapterV2.ts, around line 632).2. The session name follows the thread title
Options.title(sdk.d.ts:2320) and as the Remote Control name.thread.metadata.update,thread.title.regeneration.complete), call the untypedQuery.renameSession(title)on the live session.Acceptance Criteria
ListAgentsof a thread on another machine, andSendMessagestarts a turn in it, visible in T3, with no relay.Nice to Have: Reconnect Remote Control
In my experience a session can lose Remote Control mid-way, for example after its Claude account changes, and nothing reconnects it. It would be nice if T3 reconnected it, or supported
/remote-controlin a thread.Outline
Raw Markdown Mode
Table of Contents is not available in raw markdown view.
All reactions