{
  "manifest_version": "1",
  "slug": "cursor",
  "title": "Cursor Cloud Agents",
  "headline": "Run Cursor cloud agents on your own machine",
  "description": "Run Cursor Cloud Agents on an always-on exe.dev VM instead of a Mac mini: a My Machines worker under systemd, with your repository and no GitHub token.",
  "category": "ai-agents",
  "tags": [
    "cursor",
    "cursor cloud agents",
    "cursor self-hosted",
    "my machines",
    "self-hosted machines",
    "agent worker",
    "cursor worker",
    "background agents",
    "mac mini"
  ],
  "url": "https://exe.dev/deploy/cursor",
  "markdown_url": "https://exe-staging.dev/deploy/cursor.md",
  "upstream": {
    "website": "https://cursor.com",
    "docs": "https://cursor.com/docs/cloud-agent/self-hosted/my-machines",
    "license": "Proprietary (Cursor)"
  },
  "example_vm_name": "my-cursor",
  "time": "10 minutes",
  "stack": [
    {
      "name": "Cursor worker",
      "detail": "`agent worker` from the Cursor CLI, the cursor-worker systemd service",
      "data": "~/.local/share/cursor-agent"
    },
    {
      "name": "Your repository",
      "detail": "Cloned through the exe.dev GitHub integration, with origin left at github.com",
      "data": "~/repos"
    },
    {
      "name": "Cursor",
      "detail": "The agent loop and models, started from cursor.com/agents, the desktop app, Slack, GitHub, or Linear"
    }
  ],
  "access": [
    {
      "url": "ssh my-cursor.exe.xyz",
      "who": "private",
      "what": "a shell, the worker's log, and the checkouts the agents work in"
    }
  ],
  "inputs": [
    {
      "name": "GITHUB_REPO",
      "description": "the GitHub repository the agents work on, as owner/name, already connected to Cursor"
    }
  ],
  "delivers": [
    "The Cursor CLI in ~/.local/bin, signed in to your Cursor account (`agent about` shows your email)",
    "GITHUB_REPO cloned into ~/repos through the exe.dev GitHub integration, with origin left at github.com and no GitHub token on the VM",
    "cursor-worker.service enabled, so the worker reconnects after a crash or a reboot",
    "`Worker is now running` in the service's log, under this VM's name, with GITHUB_REPO as its repository"
  ],
  "deployable": true,
  "deploy": {
    "new_vm_url": "https://exe-staging.dev/new?prompt=GITHUB_REPO%3D%3Cfill-this-in%3E%0A%0ASet%20up%20Cursor%20Cloud%20Agents%20on%20this%20VM%20by%20following%20the%20exe.dev%20recipe%20at%20https%3A%2F%2Fexe-staging.dev%2Fdeploy%2Fcursor.md%20from%20top%20to%20bottom.%0A%0AThe%20values%20at%20the%20top%20of%20this%20message%20are%20mine%3A%0A-%20GITHUB_REPO%3A%20the%20GitHub%20repository%20the%20agents%20work%20on%2C%20as%20owner%2Fname%2C%20already%20connected%20to%20Cursor%0AAsk%20me%20for%20any%20that%20still%20say%20%3Cfill-this-in%3E%20before%20you%20need%20them.%0A%0AThe%20recipe%27s%20example%20VM%20name%20is%20my-cursor.%20This%20VM%27s%20name%20is%20the%20output%20of%20%60hostname%60%3A%20use%20it%20wherever%20the%20recipe%20writes%20my-cursor.%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-%20The%20Cursor%20CLI%20in%20~%2F.local%2Fbin%2C%20signed%20in%20to%20your%20Cursor%20account%20%28%60agent%20about%60%20shows%20your%20email%29%0A-%20GITHUB_REPO%20cloned%20into%20~%2Frepos%20through%20the%20exe.dev%20GitHub%20integration%2C%20with%20origin%20left%20at%20github.com%20and%20no%20GitHub%20token%20on%20the%20VM%0A-%20cursor-worker.service%20enabled%2C%20so%20the%20worker%20reconnects%20after%20a%20crash%20or%20a%20reboot%0A-%20%60Worker%20is%20now%20running%60%20in%20the%20service%27s%20log%2C%20under%20this%20VM%27s%20name%2C%20with%20GITHUB_REPO%20as%20its%20repository%0A%0ARun%20%22Install%20by%20hand%22%20first%2C%20skipping%20VM%20creation%3B%20the%20rest%20of%20the%20page%0Ais%20for%20the%20owner%20afterwards.%20Use%20GITHUB_REPO%20exactly%20as%20given.%20Before%0Acloning%2C%20run%20%60git%20ls-remote%20https%3A%2F%2Fgithub.int.exe.xyz%2F%3CGITHUB_REPO%3E.git%60%3B%0Aif%20it%20fails%2C%20give%20the%20owner%20the%20%60integrations%20add%20github%60%20command%20with%0Athis%20VM%27s%20name%20%28or%20%60integrations%20attach%20%3Cname%3E%20vm%3A%3Cvm%3E%60%20if%20they%20already%0Ahave%20an%20integration%20for%20it%29%20and%20wait%20until%20it%20works.%20Set%20git%27s%0Auser.name%20and%20user.email%20to%20the%20owner%27s%3B%20ask%20if%20you%20don%27t%20know%20them.%0AFor%20%22Sign%20in%20to%20Cursor%22%2C%20run%20%60NO_OPEN_BROWSER%3D1%20agent%20login%60%20in%20a%20tmux%0Asession%20named%20cursor-login%2C%20give%20the%20owner%20the%20whole%20link%20from%0A%60tmux%20capture-pane%20-p%20-J%20-t%20cursor-login%60%2C%20and%20wait%20until%20%60agent%20about%60%0Ashows%20their%20email%3B%20if%20the%20link%20stops%20working%2C%20start%20it%20again.%20Never%20ask%0Afor%2C%20print%2C%20or%20copy%20an%20API%20key.%20Don%27t%20start%20Cloud%20Agents%2C%20push%20to%20the%0Arepository%2C%20or%20turn%20on%20the%20live%20workspace%20or%20computer%20use%20unless%20the%0Aowner%20asks.%20Finish%20by%20telling%20the%20owner%20to%20pick%20this%20VM%27s%20name%20under%20My%0AMachines%20at%20https%3A%2F%2Fcursor.com%2Fagents.%0A%0AFinish%20with%20the%20URLs%20I%20should%20open.%0A",
    "terminal": "curl -fsSL https://exe-staging.dev/deploy/cursor/prompt.txt | ssh exe.dev new --prompt=/dev/stdin",
    "prompt": "GITHUB_REPO=\u003cfill-this-in\u003e\n\nSet up Cursor Cloud Agents on this VM by following the exe.dev recipe at https://exe-staging.dev/deploy/cursor.md from top to bottom.\n\nThe values at the top of this message are mine:\n- GITHUB_REPO: the GitHub repository the agents work on, as owner/name, already connected to Cursor\nAsk me for any that still say \u003cfill-this-in\u003e before you need them.\n\nThe recipe's example VM name is my-cursor. This VM's name is the output of `hostname`: use it wherever the recipe writes my-cursor. 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- The Cursor CLI in ~/.local/bin, signed in to your Cursor account (`agent about` shows your email)\n- GITHUB_REPO cloned into ~/repos through the exe.dev GitHub integration, with origin left at github.com and no GitHub token on the VM\n- cursor-worker.service enabled, so the worker reconnects after a crash or a reboot\n- `Worker is now running` in the service's log, under this VM's name, with GITHUB_REPO as its repository\n\nRun \"Install by hand\" first, skipping VM creation; the rest of the page\nis for the owner afterwards. Use GITHUB_REPO exactly as given. Before\ncloning, run `git ls-remote https://github.int.exe.xyz/\u003cGITHUB_REPO\u003e.git`;\nif it fails, give the owner the `integrations add github` command with\nthis VM's name (or `integrations attach \u003cname\u003e vm:\u003cvm\u003e` if they already\nhave an integration for it) and wait until it works. Set git's\nuser.name and user.email to the owner's; ask if you don't know them.\nFor \"Sign in to Cursor\", run `NO_OPEN_BROWSER=1 agent login` in a tmux\nsession named cursor-login, give the owner the whole link from\n`tmux capture-pane -p -J -t cursor-login`, and wait until `agent about`\nshows their email; if the link stops working, start it again. Never ask\nfor, print, or copy an API key. Don't start Cloud Agents, push to the\nrepository, or turn on the live workspace or computer use unless the\nowner asks. Finish by telling the owner to pick this VM's name under My\nMachines at https://cursor.com/agents.\n\nFinish with the URLs I should open.\n",
    "prompt_url": "https://exe-staging.dev/deploy/cursor/prompt.txt"
  },
  "updated": "2026-10-30",
  "related": [
    "cursor-agent-sdk",
    "claude-code",
    "codex",
    "github-actions-runner",
    "agents",
    "openclaw"
  ],
  "alternatives": [
    "a Mac mini",
    "Cursor-hosted Cloud Agents"
  ]
}
