Skip to main content
You can connect as many agents as you like. They share one companion, one extension and one set of shared tabs, while each keeps its own tabs and recordings.

One companion, many clients

The first companion process to start owns port 9223. Every companion started afterwards, by any other client, finds the port taken and becomes a relay: a thin stdio server that forwards tools/list and tools/call to the owner over the HTTP endpoint. From the client’s point of view nothing changes; from the extension’s point of view there is still exactly one connection. Claude Code, OpenCode and Codex reaching one extension: the first companion owns port 9223 and the others relay to it over HTTP Claude Code, OpenCode and Codex reaching one extension: the first companion owns port 9223 and the others relay to it over HTTP The relay passes the downstream client’s name through, so the owner still knows which agent is calling. Stopping the owner ends the relays too; the next client to start becomes the new owner.
If the port is taken by something that is not a companion, the relay’s handshake fails and the process exits with a message asking you to stop the other process or use --port. It never guesses a different port on its own, because the extension is configured for one specific port.

What is per agent

When two agents both leave tabId empty, each gets its own most recently opened tab. If neither owns a tab and several tabs are shared, the tool asks for an explicit tabId rather than guessing.

Verifying

shows exactly one bun process listening. pgrep -fl browspark-mcp shows one owner plus one relay per additional stdio client. The dashboard’s Activity page (when the log is on) lists which agent issued each command.