Claude Code plugin
Every session, addressable.
session-bridge turns the Claude Code sessions scattered across your machines into one mesh. Sessions discover each other, exchange messages, and spawn new sessions — on the same host or across your tailnet.
How it works
A daemon, a channel, a mesh.
Discover
A lightweight daemon on port 8910 watches ~/.claude/sessions/ and knows every Claude Code session running on the host — PID, session ID, working directory.
Register
Each session runs a tiny MCP channel server. It picks a free port, registers its name, namespace, and labels with the daemon, and heartbeats so the mesh always reflects reality.
Message
Any session can list the mesh, message another session by name, reply to inbound messages, or broadcast to everything matching a label selector.
$ python cli.py ls NAME NAMESPACE PORT CWD librarian taskpilot 52311 ~/projects/kb builder taskpilot 52340 ~/projects/app $ python cli.py message librarian "index the new docs" delivered → librarian.taskpilot
Cross-host mesh
One namespace across your tailnet.
FQDN addressing
Sessions resolve by name, name.namespace, or the full name.namespace.host. If the host isn't local, your daemon forwards the request to the peer daemon over Tailscale — sessions never know the difference.
Peer discovery
Daemons find each other from tailscale status plus a small peers.json. Hosts without a Tailscale CLI — a phone running Termux, say — pin their IPs and join anyway.
Host capabilities
Each host advertises what it can do — sms-send, gps, lan-access. Consumers query GET /hosts to find the machine that has the radio, the GPU, or the LAN.
Spawn anywhere
POST /spawn starts a fresh Claude session on any host in the mesh — tmux-managed, registered on boot, optionally handed an initial message to work on.
In-session tools
Five MCP tools in every session.
sessionsList the mesh. Filter by namespace or label selector.
messageSend to a session by name, FQDN, or UUID.
replyAnswer an inbound message — routing back to the sender is automatic.
labelReplace the labels on a session.
broadcastSend to every session matching a selector and namespace.
Install
Two commands to a mesh.
Install the plugin, then let setup register the daemon as a reboot-persistent service.
/softwaresoftware:install session-bridge
/session-bridge:setup
Every session you start after that joins the mesh automatically. To span machines, install on each host and list it in peers.json — the daemons connect over Tailscale.