{
  "manifest_version": "1",
  "slug": "computer-use",
  "title": "Computer use",
  "headline": "A desktop and browser for your AI agent",
  "description": "Give agents a Linux desktop with Chrome on an exe.dev VM: Claude computer use, Playwright MCP over CDP, and a private noVNC tab to watch or take over.",
  "category": "ai-agents",
  "tags": [
    "computer use",
    "claude computer use",
    "browser agent",
    "cua",
    "playwright mcp",
    "chrome devtools protocol",
    "novnc",
    "vnc",
    "remote desktop",
    "xfce",
    "agent sandbox"
  ],
  "url": "https://exe.dev/deploy/computer-use",
  "markdown_url": "https://exe-staging.dev/deploy/computer-use.md",
  "upstream": {
    "website": "https://platform.claude.com/docs/en/agents-and-tools/tool-use/computer-use-tool",
    "source": "https://github.com/anthropics/anthropic-sdk-python",
    "docs": "https://platform.claude.com/docs/en/agents-and-tools/tool-use/browser-use-sdk",
    "license": "noVNC MPL-2.0, TigerVNC GPL-2.0, Playwright MCP Apache-2.0; Chrome proprietary"
  },
  "example_vm_name": "my-computer-use",
  "time": "10 minutes",
  "stack": [
    {
      "name": "Xfce desktop",
      "detail": "on TigerVNC's Xvnc, display :1, VNC on localhost:5900 only",
      "port": 5900
    },
    {
      "name": "noVNC",
      "detail": "the desktop in a browser tab, through exe.dev's HTTPS proxy",
      "port": 6080
    },
    {
      "name": "Google Chrome",
      "detail": "on the desktop, DevTools protocol (CDP) on localhost:9222",
      "port": 9222,
      "data": "~/.config/agent-chrome"
    },
    {
      "name": "Playwright MCP",
      "detail": "browser tools for Claude Code and Codex, on localhost:8931",
      "port": 8931
    },
    {
      "name": "agent.py",
      "detail": "Claude's computer use tool on the desktop, through exe.dev's LLM integration",
      "data": "~/agent-runs"
    }
  ],
  "access": [
    {
      "url": "https://my-computer-use.exe.xyz:6080/",
      "who": "private",
      "what": "the desktop in your browser, to watch the agent or take over"
    },
    {
      "url": "ssh my-computer-use.exe.xyz",
      "who": "private",
      "what": "your terminal, and SSH tunnels to VNC and CDP for agents elsewhere"
    }
  ],
  "delivers": [
    "An Xfce desktop on display :1 and Google Chrome on it, restarted on failure and after a reboot",
    "The desktop at `https://\u003cvm\u003e.exe.xyz:6080/`, behind exe.dev login, with VNC and Chrome's DevTools port reachable only from the VM",
    "Playwright MCP on `localhost:8931`, registered with Claude Code and Codex, driving the desktop's Chrome",
    "`agent.py`: Claude's computer use tool on the desktop, asking before each action, with a log and a screen recording of every run",
    "Claude reachable through exe.dev's LLM integration, with no API key on the VM"
  ],
  "deployable": true,
  "deploy": {
    "new_vm_url": "https://exe-staging.dev/new?prompt=Set%20up%20Computer%20use%20on%20this%20VM%20by%20following%20the%20exe.dev%20recipe%20at%20https%3A%2F%2Fexe-staging.dev%2Fdeploy%2Fcomputer-use.md%20from%20top%20to%20bottom.%0A%0AThe%20recipe%27s%20example%20VM%20name%20is%20my-computer-use.%20This%20VM%27s%20name%20is%20the%20output%20of%20%60hostname%60%3A%20use%20it%20wherever%20the%20recipe%20writes%20my-computer-use.%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-%20An%20Xfce%20desktop%20on%20display%20%3A1%20and%20Google%20Chrome%20on%20it%2C%20restarted%20on%20failure%20and%20after%20a%20reboot%0A-%20The%20desktop%20at%20%60https%3A%2F%2F%3Cvm%3E.exe.xyz%3A6080%2F%60%2C%20behind%20exe.dev%20login%2C%20with%20VNC%20and%20Chrome%27s%20DevTools%20port%20reachable%20only%20from%20the%20VM%0A-%20Playwright%20MCP%20on%20%60localhost%3A8931%60%2C%20registered%20with%20Claude%20Code%20and%20Codex%2C%20driving%20the%20desktop%27s%20Chrome%0A-%20%60agent.py%60%3A%20Claude%27s%20computer%20use%20tool%20on%20the%20desktop%2C%20asking%20before%20each%20action%2C%20with%20a%20log%20and%20a%20screen%20recording%20of%20every%20run%0A-%20Claude%20reachable%20through%20exe.dev%27s%20LLM%20integration%2C%20with%20no%20API%20key%20on%20the%20VM%0A%0ARun%20%22Set%20up%20by%20hand%22%20from%20%22On%20the%20VM%22%20%28skip%20creating%20the%20VM%29%2C%20then%20the%0AVM-side%20commands%20in%20%22Let%20a%20coding%20agent%20drive%20the%20browser%22%20for%20Claude%0ACode%20and%20Codex%2C%20checking%20Playwright%20MCP%20with%20the%20%60claude%20-p%60%20command%0Afrom%20that%20section.%20Then%20download%20agent.py%20as%20in%20%22Run%20a%20computer-use%0Aagent%22%20and%20check%20it%20with%0A%60uv%20run%20agent.py%20%22Take%20a%20screenshot%20and%20tell%20me%20which%20windows%20are%20open.%20Don%27t%20click%20or%20type%20anything.%22%60%2C%0Awhich%20only%20takes%20screenshots%2C%20so%20it%20runs%20without%20asking.%20Don%27t%20run%0Atasks%20that%20click%20or%20type%3A%20agent.py%20asks%20a%20person%20before%20each%20of%20those.%0AIf%20Claude%20or%20Codex%20settings%20already%20exist%2C%20add%20the%20MCP%20server%20without%0Areplacing%20them.%20Never%20make%20the%20VM%20public%3A%20the%20desktop%20has%20no%20password%0Aof%20its%20own.%20Finish%20with%20the%20desktop%27s%20URL%20and%20the%20first%20task%20to%20try%0Afrom%20%22Run%20a%20computer-use%20agent%22.%0A%0AFinish%20with%20the%20URLs%20I%20should%20open.%0A",
    "terminal": "curl -fsSL https://exe-staging.dev/deploy/computer-use/prompt.txt | ssh exe.dev new --prompt=/dev/stdin",
    "prompt": "Set up Computer use on this VM by following the exe.dev recipe at https://exe-staging.dev/deploy/computer-use.md from top to bottom.\n\nThe recipe's example VM name is my-computer-use. This VM's name is the output of `hostname`: use it wherever the recipe writes my-computer-use. 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- An Xfce desktop on display :1 and Google Chrome on it, restarted on failure and after a reboot\n- The desktop at `https://\u003cvm\u003e.exe.xyz:6080/`, behind exe.dev login, with VNC and Chrome's DevTools port reachable only from the VM\n- Playwright MCP on `localhost:8931`, registered with Claude Code and Codex, driving the desktop's Chrome\n- `agent.py`: Claude's computer use tool on the desktop, asking before each action, with a log and a screen recording of every run\n- Claude reachable through exe.dev's LLM integration, with no API key on the VM\n\nRun \"Set up by hand\" from \"On the VM\" (skip creating the VM), then the\nVM-side commands in \"Let a coding agent drive the browser\" for Claude\nCode and Codex, checking Playwright MCP with the `claude -p` command\nfrom that section. Then download agent.py as in \"Run a computer-use\nagent\" and check it with\n`uv run agent.py \"Take a screenshot and tell me which windows are open. Don't click or type anything.\"`,\nwhich only takes screenshots, so it runs without asking. Don't run\ntasks that click or type: agent.py asks a person before each of those.\nIf Claude or Codex settings already exist, add the MCP server without\nreplacing them. Never make the VM public: the desktop has no password\nof its own. Finish with the desktop's URL and the first task to try\nfrom \"Run a computer-use agent\".\n\nFinish with the URLs I should open.\n",
    "prompt_url": "https://exe-staging.dev/deploy/computer-use/prompt.txt"
  },
  "updated": "2026-10-28",
  "verified": "2026-10-28",
  "related": [
    "code-interpreter",
    "claude-code",
    "codex",
    "exe-mcp",
    "python-sandboxes",
    "openclaw"
  ],
  "alternatives": [
    "E2B Desktop",
    "Daytona",
    "Browserbase",
    "Browserless"
  ],
  "files": [
    "https://exe-staging.dev/deploy/computer-use/agent.py",
    "https://exe-staging.dev/deploy/computer-use/setup.sh"
  ]
}
