{
  "manifest_version": "1",
  "slug": "cloudroom",
  "title": "Cloudroom",
  "headline": "Self-host the Cloudroom core",
  "description": "Run your own Cloudroom core on an exe.dev VM and connect the Cloudroom app with a URL and token: Claude Code and Codex cloud threads, no API keys.",
  "category": "ai-agents",
  "tags": [
    "cloudroom",
    "cloudroom core",
    "self-hosted",
    "cloud agents",
    "claude code",
    "codex",
    "background agents",
    "remote coding agents"
  ],
  "url": "https://exe.dev/deploy/cloudroom",
  "markdown_url": "https://exe.dev/deploy/cloudroom.md",
  "upstream": {
    "website": "https://www.cloudroom.dev",
    "source": "https://github.com/davidondrej/cloudroom",
    "docs": "https://github.com/davidondrej/cloudroom/blob/main/core/docs/setup.md",
    "license": "Apache-2.0"
  },
  "example_vm_name": "my-cloudroom",
  "time": "10 minutes",
  "stack": [
    {
      "name": "Cloudroom app",
      "detail": "on your Mac or PC; Cloud threads run on the VM"
    },
    {
      "name": "Cloudroom core 0.1.89",
      "detail": "the cloudroom systemd service, listening only on 127.0.0.1:9840",
      "data": "/var/lib/cloudroom/history, /etc/cloudroom"
    },
    {
      "name": "nginx",
      "detail": "passes /v1/ on port 8000 to the core, for the HTTPS proxy",
      "port": 8000
    },
    {
      "name": "Claude Code and Codex",
      "detail": "preinstalled; run as the cloudroom-agent account, on exe.dev's LLM integration",
      "data": "/home/cloudroom-agent, /code"
    }
  ],
  "access": [
    {
      "url": "https://my-cloudroom.exe.xyz/",
      "who": "public",
      "what": "the core's API, once you make the VM public; every request needs the core's token"
    },
    {
      "url": "http://localhost:9840/",
      "who": "private",
      "what": "the same API through an SSH tunnel, if you'd rather keep the VM private"
    }
  ],
  "delivers": [
    "Cloudroom core running as a systemd service, back after a reboot, with its token in a root-only file",
    "Claude Code and Codex agents on exe.dev's LLM integration, with no API key on the VM",
    "Agents running as their own Linux account, without sudo",
    "The API on port 8000 for exe.dev's HTTPS proxy, answering only requests that carry the token",
    "A nightly backup of the core's history, settings and the agents' files, with a tested restore"
  ],
  "deployable": true,
  "deploy": {
    "new_vm_url": "https://exe.dev/new?prompt=Set%20up%20Cloudroom%20on%20this%20VM%20by%20following%20the%20exe.dev%20recipe%20at%20https%3A%2F%2Fexe.dev%2Fdeploy%2Fcloudroom.md%20from%20top%20to%20bottom.%0A%0AThe%20recipe%27s%20example%20VM%20name%20is%20my-cloudroom.%20This%20VM%27s%20name%20is%20the%20output%20of%20%60hostname%60%3A%20use%20it%20wherever%20the%20recipe%20writes%20my-cloudroom.%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-%20Cloudroom%20core%20running%20as%20a%20systemd%20service%2C%20back%20after%20a%20reboot%2C%20with%20its%20token%20in%20a%20root-only%20file%0A-%20Claude%20Code%20and%20Codex%20agents%20on%20exe.dev%27s%20LLM%20integration%2C%20with%20no%20API%20key%20on%20the%20VM%0A-%20Agents%20running%20as%20their%20own%20Linux%20account%2C%20without%20sudo%0A-%20The%20API%20on%20port%208000%20for%20exe.dev%27s%20HTTPS%20proxy%2C%20answering%20only%20requests%20that%20carry%20the%20token%0A-%20A%20nightly%20backup%20of%20the%20core%27s%20history%2C%20settings%20and%20the%20agents%27%20files%2C%20with%20a%20tested%20restore%0A%0ARead%20the%20whole%20recipe%2C%20including%20the%20closed%20details.%20Run%20%22Install%20by%0Ahand%22%20only%2C%20skipping%20VM%20creation%20and%20SSH%3B%20don%27t%20run%20the%20restore%20or%0Aupdate%20instructions.%20Install%20exactly%20the%20pinned%20version.%0ANever%20print%2C%20log%20or%20send%20the%20core%27s%20token%2C%20and%20don%27t%20make%20the%20VM%20public%3A%0Athe%20owner%20decides%20that.%20On%20an%20existing%20VM%2C%20ask%20before%20replacing%20anything%0Aon%20port%208000.%0AVerify%20with%20the%20checks%20in%20each%20step%3A%20%2Fv1%2Fready%20through%20nginx%20says%0Aready%2C%20capabilities%20list%20claude-code%20and%20codex%2C%20the%20test%20task%20wrote%0Ahello.txt%2C%20and%20the%20backup%20timer%20is%20scheduled.%20Do%20not%20reboot.%0AFinish%20by%20telling%20the%20owner%20the%20two%20ways%20to%20connect%20the%20app%20from%0A%22Connect%20the%20app%22%2C%20and%20the%20command%20that%20prints%20the%20token.%0A%0AFinish%20with%20the%20URLs%20I%20should%20open.%0A",
    "terminal": "curl -fsSL https://exe.dev/deploy/cloudroom/prompt.txt | ssh exe.dev new --prompt=/dev/stdin",
    "prompt": "Set up Cloudroom on this VM by following the exe.dev recipe at https://exe.dev/deploy/cloudroom.md from top to bottom.\n\nThe recipe's example VM name is my-cloudroom. This VM's name is the output of `hostname`: use it wherever the recipe writes my-cloudroom. 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- Cloudroom core running as a systemd service, back after a reboot, with its token in a root-only file\n- Claude Code and Codex agents on exe.dev's LLM integration, with no API key on the VM\n- Agents running as their own Linux account, without sudo\n- The API on port 8000 for exe.dev's HTTPS proxy, answering only requests that carry the token\n- A nightly backup of the core's history, settings and the agents' files, with a tested restore\n\nRead the whole recipe, including the closed details. Run \"Install by\nhand\" only, skipping VM creation and SSH; don't run the restore or\nupdate instructions. Install exactly the pinned version.\nNever print, log or send the core's token, and don't make the VM public:\nthe owner decides that. On an existing VM, ask before replacing anything\non port 8000.\nVerify with the checks in each step: /v1/ready through nginx says\nready, capabilities list claude-code and codex, the test task wrote\nhello.txt, and the backup timer is scheduled. Do not reboot.\nFinish by telling the owner the two ways to connect the app from\n\"Connect the app\", and the command that prints the token.\n\nFinish with the URLs I should open.\n",
    "prompt_url": "https://exe.dev/deploy/cloudroom/prompt.txt"
  },
  "updated": "2026-10-31",
  "verified": "2026-10-31",
  "related": [
    "paperclip",
    "openrig",
    "orca",
    "claude-code",
    "codex",
    "openclaw"
  ]
}
