{
  "manifest_version": "1",
  "slug": "cloud-browser",
  "title": "Cloud browser",
  "headline": "A private Chrome in the cloud, for you and your agents",
  "description": "Run Chrome or Edge on an exe.dev VM: use it in a browser tab behind exe.dev login, and drive the same browser from Playwright, Puppeteer and agents over CDP.",
  "category": "ai-agents",
  "tags": [
    "cloud browser",
    "remote browser",
    "browser in the cloud",
    "isolated browser",
    "chrome",
    "microsoft edge",
    "chromium",
    "selkies",
    "chrome devtools protocol",
    "cdp",
    "playwright",
    "puppeteer",
    "playwright mcp",
    "lightpanda",
    "headless browser"
  ],
  "url": "https://exe.dev/deploy/cloud-browser",
  "markdown_url": "https://exe-staging.dev/deploy/cloud-browser.md",
  "upstream": {
    "website": "https://docs.linuxserver.io/images/docker-chrome/",
    "source": "https://github.com/linuxserver/docker-chrome",
    "docs": "https://docs.linuxserver.io/images/docker-baseimage-selkies/",
    "license": "LinuxServer.io images GPL-3.0, Selkies MPL-2.0, Playwright MCP Apache-2.0, Lightpanda AGPL-3.0; Chrome and Edge proprietary"
  },
  "example_vm_name": "my-browser",
  "time": "5 minutes",
  "stack": [
    {
      "name": "Google Chrome",
      "detail": "in LinuxServer.io's Selkies container (or Edge or Chromium), profile on the VM's disk",
      "data": "~/browser/config"
    },
    {
      "name": "Selkies",
      "detail": "streams the browser to a tab, with sound, clipboard and file transfer",
      "port": 3000
    },
    {
      "name": "Chrome DevTools protocol (CDP)",
      "detail": "for Playwright, Puppeteer and agents, through a small nginx",
      "port": 9222
    },
    {
      "name": "Playwright MCP",
      "detail": "browser tools for Claude Code, Codex and other agents on the VM, on localhost only",
      "port": 8931
    }
  ],
  "access": [
    {
      "url": "https://my-browser.exe.xyz:3000/",
      "who": "private",
      "what": "the browser, in a tab, behind exe.dev login"
    },
    {
      "url": "https://my-browser.exe.xyz:9222/",
      "who": "private",
      "what": "CDP for scripts elsewhere, with an exe.dev token; or `ssh -L 9222:localhost:9222`"
    },
    {
      "url": "http://localhost:9222",
      "who": "private",
      "what": "CDP for scripts and agents on the VM"
    }
  ],
  "delivers": [
    "Google Chrome running all the time in a container, restarted if it closes or crashes and after a reboot",
    "The browser at `https://\u003cvm\u003e.exe.xyz:3000/`, behind exe.dev login, with sound, clipboard and file upload and download",
    "Chrome's DevTools protocol on `localhost:9222` and, behind exe.dev login, at `https://\u003cvm\u003e.exe.xyz:9222/`",
    "Playwright MCP on `localhost:8931`, registered with Claude Code, driving the same browser",
    "Logins, cookies and tabs kept in `~/browser/config` on the VM's disk"
  ],
  "deployable": true,
  "deploy": {
    "new_vm_url": "https://exe-staging.dev/new?prompt=Set%20up%20Cloud%20browser%20on%20this%20VM%20by%20following%20the%20exe.dev%20recipe%20at%20https%3A%2F%2Fexe-staging.dev%2Fdeploy%2Fcloud-browser.md%20from%20top%20to%20bottom.%0A%0AThe%20recipe%27s%20example%20VM%20name%20is%20my-browser.%20This%20VM%27s%20name%20is%20the%20output%20of%20%60hostname%60%3A%20use%20it%20wherever%20the%20recipe%20writes%20my-browser.%20Skip%20the%20step%20that%20creates%20the%20VM%3B%20you%20are%20on%20it.%0A%0AYou%20are%20done%20when%20all%20of%20these%20are%20true.%20Check%20each%20one%20yourself%3A%0A-%20Google%20Chrome%20running%20all%20the%20time%20in%20a%20container%2C%20restarted%20if%20it%20closes%20or%20crashes%20and%20after%20a%20reboot%0A-%20The%20browser%20at%20%60https%3A%2F%2F%3Cvm%3E.exe.xyz%3A3000%2F%60%2C%20behind%20exe.dev%20login%2C%20with%20sound%2C%20clipboard%20and%20file%20upload%20and%20download%0A-%20Chrome%27s%20DevTools%20protocol%20on%20%60localhost%3A9222%60%20and%2C%20behind%20exe.dev%20login%2C%20at%20%60https%3A%2F%2F%3Cvm%3E.exe.xyz%3A9222%2F%60%0A-%20Playwright%20MCP%20on%20%60localhost%3A8931%60%2C%20registered%20with%20Claude%20Code%2C%20driving%20the%20same%20browser%0A-%20Logins%2C%20cookies%20and%20tabs%20kept%20in%20%60~%2Fbrowser%2Fconfig%60%20on%20the%20VM%27s%20disk%0A%0ARun%20the%20VM-side%20command%20in%20%22Set%20up%20by%20hand%22%20%28skip%20creating%20the%20VM%29%2C%0Athen%20the%20commands%20in%20%22Let%20an%20agent%20drive%20it%22%20that%20connect%20Claude%20Code%0Ato%20Playwright%20MCP%2C%20and%20check%20them%20with%20the%20%60claude%20-p%60%20command%20there.%0AIf%20Claude%20Code%20settings%20already%20exist%2C%20add%20the%20MCP%20server%20without%0Areplacing%20them.%20Never%20make%20the%20VM%20public%20or%20point%20port%208000%20at%20port%0A3000%20or%209222%3A%20the%20browser%20has%20no%20password%20of%20its%20own.%20Finish%20with%20the%0Abrowser%27s%20URL.%0A%0AFinish%20with%20the%20URLs%20I%20should%20open.%0A",
    "terminal": "curl -fsSL https://exe-staging.dev/deploy/cloud-browser/prompt.txt | ssh exe.dev new --prompt=/dev/stdin",
    "prompt": "Set up Cloud browser on this VM by following the exe.dev recipe at https://exe-staging.dev/deploy/cloud-browser.md from top to bottom.\n\nThe recipe's example VM name is my-browser. This VM's name is the output of `hostname`: use it wherever the recipe writes my-browser. Skip the step that creates the VM; you are on it.\n\nYou are done when all of these are true. Check each one yourself:\n- Google Chrome running all the time in a container, restarted if it closes or crashes and after a reboot\n- The browser at `https://\u003cvm\u003e.exe.xyz:3000/`, behind exe.dev login, with sound, clipboard and file upload and download\n- Chrome's DevTools protocol on `localhost:9222` and, behind exe.dev login, at `https://\u003cvm\u003e.exe.xyz:9222/`\n- Playwright MCP on `localhost:8931`, registered with Claude Code, driving the same browser\n- Logins, cookies and tabs kept in `~/browser/config` on the VM's disk\n\nRun the VM-side command in \"Set up by hand\" (skip creating the VM),\nthen the commands in \"Let an agent drive it\" that connect Claude Code\nto Playwright MCP, and check them with the `claude -p` command there.\nIf Claude Code settings already exist, add the MCP server without\nreplacing them. Never make the VM public or point port 8000 at port\n3000 or 9222: the browser has no password of its own. Finish with the\nbrowser's URL.\n\nFinish with the URLs I should open.\n",
    "prompt_url": "https://exe-staging.dev/deploy/cloud-browser/prompt.txt"
  },
  "updated": "2026-10-31",
  "verified": "2026-10-31",
  "related": [
    "computer-use",
    "linux-desktop",
    "claude-code",
    "exe-mcp",
    "python-sandboxes",
    "openclaw"
  ],
  "alternatives": [
    "Browserless",
    "Browserbase",
    "Kasm Workspaces",
    "Steel"
  ],
  "files": [
    "https://exe-staging.dev/deploy/cloud-browser/setup.sh"
  ]
}
