{
  "manifest_version": "1",
  "slug": "linux-desktop",
  "title": "Linux desktop",
  "headline": "A Linux desktop in your browser",
  "description": "Run a Linux desktop with Google Chrome on an exe.dev VM, open it from any browser tab, and code on it with Claude Code, Codex, and other agents.",
  "category": "dev-tools",
  "tags": [
    "linux desktop in browser",
    "cloud desktop",
    "remote desktop",
    "browser in the cloud",
    "cloud chrome",
    "ubuntu desktop",
    "xfce",
    "kasmvnc",
    "vnc",
    "claude code",
    "codex"
  ],
  "url": "https://exe.dev/deploy/linux-desktop",
  "markdown_url": "https://exe.dev/deploy/linux-desktop.md",
  "upstream": {
    "website": "https://kasm.com/kasmvnc",
    "source": "https://github.com/kasmtech/KasmVNC",
    "docs": "https://docs.kasmvnc.com/",
    "license": "KasmVNC GPL-2.0, Xfce GPL-2.0; Chrome and the coding agents under their own terms"
  },
  "example_vm_name": "my-linux-desktop",
  "time": "5 minutes",
  "stack": [
    {
      "name": "Xfce desktop",
      "detail": "Ubuntu 24.04's Xfce, on KasmVNC's X server, display :1",
      "data": "~/Desktop"
    },
    {
      "name": "KasmVNC 1.5",
      "detail": "streams the desktop to a browser tab, through exe.dev's HTTPS proxy",
      "port": 8444
    },
    {
      "name": "Google Chrome",
      "detail": "the desktop's default browser",
      "data": "~/.config/google-chrome"
    },
    {
      "name": "Coding agents",
      "detail": "Claude Code, Codex, OpenCode and Pi, through exe.dev's LLM integration",
      "data": "~/code"
    }
  ],
  "access": [
    {
      "url": "https://my-linux-desktop.exe.xyz:8444/",
      "who": "private",
      "what": "the desktop, for you and people you share the VM with"
    },
    {
      "url": "ssh my-linux-desktop.exe.xyz",
      "who": "private",
      "what": "a terminal on the same machine, and file copies with scp"
    }
  ],
  "delivers": [
    "An Xfce desktop with Google Chrome at `https://\u003cvm\u003e.exe.xyz:8444/`, behind exe.dev login, sized to your browser window",
    "The desktop running all the time, so windows stay open when you close the tab, and back on its own after a reboot",
    "Launchers on the desktop for Claude Code, Codex, OpenCode and Pi, starting in `~/code`",
    "Claude Code and Codex connected to exe.dev's LLM integration, with no API key on the VM"
  ],
  "deployable": true,
  "deploy": {
    "new_vm_url": "https://exe.dev/new?prompt=Set%20up%20Linux%20desktop%20on%20this%20VM%20by%20following%20the%20exe.dev%20recipe%20at%20https%3A%2F%2Fexe.dev%2Fdeploy%2Flinux-desktop.md%20from%20top%20to%20bottom.%0A%0AThe%20recipe%27s%20example%20VM%20name%20is%20my-linux-desktop.%20This%20VM%27s%20name%20is%20the%20output%20of%20%60hostname%60%3A%20use%20it%20wherever%20the%20recipe%20writes%20my-linux-desktop.%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%20with%20Google%20Chrome%20at%20%60https%3A%2F%2F%3Cvm%3E.exe.xyz%3A8444%2F%60%2C%20behind%20exe.dev%20login%2C%20sized%20to%20your%20browser%20window%0A-%20The%20desktop%20running%20all%20the%20time%2C%20so%20windows%20stay%20open%20when%20you%20close%20the%20tab%2C%20and%20back%20on%20its%20own%20after%20a%20reboot%0A-%20Launchers%20on%20the%20desktop%20for%20Claude%20Code%2C%20Codex%2C%20OpenCode%20and%20Pi%2C%20starting%20in%20%60~%2Fcode%60%0A-%20Claude%20Code%20and%20Codex%20connected%20to%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%0Acheck%20it%20with%20the%20commands%20at%20the%20end%20of%20that%20section.%20Don%27t%20open%0AChrome%20or%20the%20coding%20agents%20on%20the%20desktop%3A%20their%20first-run%20screens%0A%28Chrome%27s%20terms%2C%20Claude%20Code%27s%20theme%20and%20folder%20trust%29%20are%20the%20owner%27s%0Ato%20answer.%20If%20Claude%20Code%20or%20Codex%20settings%20already%20exist%2C%20leave%20them%0Aalone.%20Never%20make%20the%20VM%20public%20or%20point%20port%208000%20at%20the%20desktop%3A%20it%0Ahas%20no%20password%20of%20its%20own.%20Finish%20with%20the%20desktop%27s%20URL%2C%20using%20this%0AVM%27s%20name%2C%20and%20what%20to%20try%20first%20from%20%22Open%20your%20desktop%22.%0A%0AFinish%20with%20the%20URLs%20I%20should%20open.%0A",
    "terminal": "curl -fsSL https://exe.dev/deploy/linux-desktop/prompt.txt | ssh exe.dev new --prompt=/dev/stdin",
    "prompt": "Set up Linux desktop on this VM by following the exe.dev recipe at https://exe.dev/deploy/linux-desktop.md from top to bottom.\n\nThe recipe's example VM name is my-linux-desktop. This VM's name is the output of `hostname`: use it wherever the recipe writes my-linux-desktop. 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 with Google Chrome at `https://\u003cvm\u003e.exe.xyz:8444/`, behind exe.dev login, sized to your browser window\n- The desktop running all the time, so windows stay open when you close the tab, and back on its own after a reboot\n- Launchers on the desktop for Claude Code, Codex, OpenCode and Pi, starting in `~/code`\n- Claude Code and Codex connected to 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\ncheck it with the commands at the end of that section. Don't open\nChrome or the coding agents on the desktop: their first-run screens\n(Chrome's terms, Claude Code's theme and folder trust) are the owner's\nto answer. If Claude Code or Codex settings already exist, leave them\nalone. Never make the VM public or point port 8000 at the desktop: it\nhas no password of its own. Finish with the desktop's URL, using this\nVM's name, and what to try first from \"Open your desktop\".\n\nFinish with the URLs I should open.\n",
    "prompt_url": "https://exe.dev/deploy/linux-desktop/prompt.txt"
  },
  "updated": "2026-10-30",
  "verified": "2026-10-30",
  "related": [
    "computer-use",
    "code-server",
    "claude-code",
    "codex",
    "docker-host",
    "dev-test-prod"
  ],
  "files": [
    "https://exe.dev/deploy/linux-desktop/setup.sh"
  ]
}
