A Chrome extension and a small relay. Your agent gets real Playwright on the browser you are already signed in to. Nothing is exposed to the internet.
Run it once, on any machine in your tailnet. It binds to the Tailscale IP and prints what to paste where.
$ npx tailbrowser relay
On the Chrome machine, load extension/ unpacked, click Find local relay or paste ws://mac-mini:8787, and share a tab.
From any tailnet machine. The relay is found automatically and the session stays with you.
$ npx tailbrowser -e 'await page.goto("https://example.com"); return await page.title()' "Example Domain"
Or give it to Claude Code, Cursor, or any MCP client:
{ "mcpServers": { "tailbrowser": { "command": "npx", "args": ["-y", "tailbrowser@latest", "--mcp"] } } }
Only the tabs you share from the popup. The default.
Tabs whose URL matches your patterns, attached as you browse.
Every tab, plus opening and closing tabs.
Tabs outside the scope do not exist for the agent. Asking for one returns a TB_SCOPE error. Narrow the scope and tabs detach at once.
--token when you share one.