Docs

Shuttle 0.1.0.

Install

Get the build from the download page and launch it. It starts without a window and serves MCP on the DevTools port (9222, or a free port recorded in DevToolsActivePort).

Connect a client

Claude Code

claude mcp add --transport http shuttle http://127.0.0.1:9222/mcp

Codex

codex mcp add shuttle --url http://127.0.0.1:9222/mcp

Cursor and any MCP client

Use the Streamable HTTP transport with the URL http://127.0.0.1:9222/mcp, e.g. in Cursor's ~/.cursor/mcp.json or .cursor/mcp.json:

{
  "mcpServers": {
    "shuttle": { "url": "http://127.0.0.1:9222/mcp" }
  }
}

Agents and sessions

Per-session CDP

Each session has ws://127.0.0.1:9222/devtools/session/<id>. It only sees that session's tabs and that agent's storage. Don't use the browser-wide endpoint for agent work.

Playwright

import { chromium } from 'playwright'

// cdpEndpoint comes from the open-session MCP tool
const cdpEndpoint = 'ws://127.0.0.1:9222/devtools/session/<id>'
const browser = await chromium.connectOverCDP(cdpEndpoint)
const page = browser.contexts()[0].pages()[0]
await page.goto('https://example.com')

agent-browser

agent-browser --cdp ws://127.0.0.1:9222/devtools/session/<id> open https://example.com
agent-browser --cdp ws://127.0.0.1:9222/devtools/session/<id> snapshot

MCP tool reference

ToolGroupDescription
list-agentsAgentsList agent identities.
create-agentAgentsCreate an agent: id, name, color, avatar. Gets its own storage.
update-agentAgentsRename or recolor an agent.
delete-agentAgentsDelete an agent and wipe its storage.
open-sessionSessionsOpen a session (tab group) for an agent. Returns sessionId and cdpEndpoint.
close-sessionSessionsClose a session and its tabs.
list-sessionsSessionsList open sessions.
allocate-tabTabsOpen a tab in a session. Returns targetId and cdpUrl.
release-tabTabsRelease a tab (hand it back).
navigate-tabTabsNavigate a tab to a URL.
capture-tabTabsScreenshot a tab, works in the background.
set-tab-viewportTabsSet a tab viewport size, e.g. 390x844.
snapshotPage toolsAccessibility snapshot with @eN refs.
click / dblclick / hoverPage toolsPointer actions on a ref.
fill / type / pressPage toolsKeyboard and form input.
select / check / uncheckPage toolsForm controls.
scroll / wait-forPage toolsScroll and wait for conditions.
screenshot / get-text / findPage toolsRead the page.
eval / console / errorsPage toolsRun JS, read console and page errors.
open / back / forward / reloadPage toolsNavigation.
state-save / state-loadPage toolsSave and restore page state.

Network mode: share one Shuttle

Run Shuttle on a dedicated machine and connect from others on your LAN or Tailscale. Off by default.

# On the Shuttle machine
open -a Shuttle --args --shuttle-listen=0.0.0.0     # Linux: ./shuttle --shuttle-listen=0.0.0.0
cat ~/Library/Application\ Support/Shuttle/ShuttleAccessToken   # Linux: ~/.config/shuttle/ShuttleAccessToken
# On any other machine
claude mcp add --transport http shuttle http://shuttle-box:9222/mcp \
  --header "Authorization: Bearer <token>"

Limits