
SiloLink — an MCP server that lets you drive Claude Code sessions on other machines from a chat thread (MIT)
I kept hitting the same wall running coding agents across a few machines — a
WSL box, a laptop, a VM. Each Claude Code session was its own island. I could
not see what any of them were doing without SSHing in, and none of them shared
any context with each other.
So I built SiloLink. It is a small local daemon that does two things:
- runs an MCP server on localhost:3579 that Claude Code connects to
- holds a WebSocket back to a server, so messages flow both directions
The result is that each remote Claude Code session is bound to a conversation
thread. You send a message to the thread and a session spawns on that machine
(tmux), picks up the message, and replies into the thread. You can drive it from
a web UI, Slack, Discord, or SMS. Session dies, remote_load_context restores
the prior history on restart.
Things that turned out to matter more than expected:
- Worktree isolation — each session gets its own git worktree and branch, so
- two agents on the same repo do not fight
- File claim tracking — advisory soft-locks with cross-session conflict
- notifications, because they still find ways to fight
- Provider abstraction — the launcher interface has Claude, Gemini, and
- Codex adapters, so the transport is not Claude-specific
Source: https://github.com/portablemind-ai/silolink (MIT)
Install: npm install -g @dsiloed/silo-link
Disclosure: the server side it talks to is Portablemind (https://app.portablemind.ai),
my commercial platform — that is where the conversations, files, and shared agent
memory live. The daemon
itself is MIT and the MCP interface is documented, so it is usable as a reference
for anyone building a similar bridge.
Happy to answer anything about the MCP-server-plus-WebSocket shape — deciding
what belongs in MCP tools vs. the socket was the least obvious part of the design.