{
  "manifest_version": "1",
  "slug": "cursor-agent-sdk",
  "title": "Cursor Agent SDK",
  "headline": "Self-host a Cursor Agent SDK agent",
  "description": "Run a Cursor Agent SDK agent on your own exe.dev VM: a pull request security reviewer under systemd, a private playground, evals, and no public webhook.",
  "category": "ai-agents",
  "tags": [
    "cursor agent sdk",
    "cursor",
    "agent-sdk",
    "agent sdk self-hosted",
    "pr review bot",
    "code review agent",
    "security review",
    "agents as code",
    "bugbot alternative"
  ],
  "url": "https://exe.dev/deploy/cursor-agent-sdk",
  "markdown_url": "https://exe-staging.dev/deploy/cursor-agent-sdk.md",
  "upstream": {
    "website": "https://cursor.com/docs/agent-sdk",
    "source": "https://www.npmjs.com/package/@grok/agent-sdk",
    "docs": "https://cursor.com/docs/agent-sdk",
    "license": "Proprietary (Cursor)"
  },
  "example_vm_name": "my-cursor-agent",
  "time": "10 minutes",
  "stack": [
    {
      "name": "Security reviewer",
      "detail": "Cursor's security-reviewer template, a git repository you edit",
      "data": "~/security-reviewer"
    },
    {
      "name": "agent-sdk serve",
      "detail": "@grok/agent-sdk 0.4 on Node.js 24, the security-reviewer systemd service",
      "port": 3000,
      "data": "~/agent-state"
    },
    {
      "name": "Cursor",
      "detail": "Models, plus pull request events and GitHub calls through your Cursor GitHub connection"
    }
  ],
  "access": [
    {
      "url": "https://my-cursor-agent.exe.xyz:3000/playground",
      "who": "private",
      "what": "the playground, for you and anyone you share the VM with"
    },
    {
      "url": "ssh my-cursor-agent.exe.xyz",
      "who": "private",
      "what": "the agent's code, evals, and logs"
    }
  ],
  "inputs": [
    {
      "name": "GITHUB_REPOS",
      "description": "the GitHub repositories to review, as owner/name, comma-separated, all with the same owner and already connected to Cursor"
    }
  ],
  "delivers": [
    "The Agent SDK CLI 0.4 on Node.js 24, and Cursor's security-reviewer template in ~/security-reviewer, a git repository that watches GITHUB_REPOS",
    "The VM signed in to Cursor (`agent-sdk whoami` names the account), with no GitHub token on it",
    "security-reviewer.service enabled, so it comes back after a reboot, with state in ~/agent-state",
    "The playground answering at `https://\u003cvm\u003e.exe.xyz:3000/playground`, private to the VM's owner",
    "Both smoke evals passing with `agent-sdk eval`"
  ],
  "deployable": true,
  "deploy": {
    "new_vm_url": "https://exe-staging.dev/new?prompt=GITHUB_REPOS%3D%3Cfill-this-in%3E%0A%0ASet%20up%20Cursor%20Agent%20SDK%20on%20this%20VM%20by%20following%20the%20exe.dev%20recipe%20at%20https%3A%2F%2Fexe-staging.dev%2Fdeploy%2Fcursor-agent-sdk.md%20from%20top%20to%20bottom.%0A%0AThe%20values%20at%20the%20top%20of%20this%20message%20are%20mine%3A%0A-%20GITHUB_REPOS%3A%20the%20GitHub%20repositories%20to%20review%2C%20as%20owner%2Fname%2C%20comma-separated%2C%20all%20with%20the%20same%20owner%20and%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-agent.%20This%20VM%27s%20name%20is%20the%20output%20of%20%60hostname%60%3A%20use%20it%20wherever%20the%20recipe%20writes%20my-cursor-agent.%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%20Agent%20SDK%20CLI%200.4%20on%20Node.js%2024%2C%20and%20Cursor%27s%20security-reviewer%20template%20in%20~%2Fsecurity-reviewer%2C%20a%20git%20repository%20that%20watches%20GITHUB_REPOS%0A-%20The%20VM%20signed%20in%20to%20Cursor%20%28%60agent-sdk%20whoami%60%20names%20the%20account%29%2C%20with%20no%20GitHub%20token%20on%20it%0A-%20security-reviewer.service%20enabled%2C%20so%20it%20comes%20back%20after%20a%20reboot%2C%20with%20state%20in%20~%2Fagent-state%0A-%20The%20playground%20answering%20at%20%60https%3A%2F%2F%3Cvm%3E.exe.xyz%3A3000%2Fplayground%60%2C%20private%20to%20the%20VM%27s%20owner%0A-%20Both%20smoke%20evals%20passing%20with%20%60agent-sdk%20eval%60%0A%0ARun%20%22Install%20by%20hand%22%20first%2C%20skipping%20VM%20creation%3B%20the%20walkthrough%20is%20for%0Athe%20owner%20afterwards.%20Use%20GITHUB_REPOS%20exactly%20as%20given.%20For%20%22Sign%20in%20to%0ACursor%22%2C%20start%20%60agent-sdk%20login%60%20in%20a%20tmux%20session%2C%20give%20the%20owner%20the%0AURL%20it%20prints%2C%20and%20wait%20until%20%60agent-sdk%20whoami%60%20names%20an%20account%3B%20never%0Aask%20for%2C%20print%2C%20or%20copy%20an%20API%20key.%20Don%27t%20open%2C%20comment%20on%2C%20or%20review%0Apull%20requests%20yourself%2C%20and%20don%27t%20run%20%60agent-sdk%20deploy%60.%20Keep%20port%203000%0Aprivate%3A%20never%20run%20share%20set-public%20or%20share%20port.%20Finish%20with%0Ahttps%3A%2F%2F%3Cvm%3E.exe.xyz%3A3000%2Fplayground%2C%20using%20this%20VM%27s%20name%2C%20and%20point%20the%0Aowner%20to%20%22Review%20a%20pull%20request%22.%0A%0AFinish%20with%20the%20URLs%20I%20should%20open.%0A",
    "terminal": "curl -fsSL https://exe-staging.dev/deploy/cursor-agent-sdk/prompt.txt | ssh exe.dev new --prompt=/dev/stdin",
    "prompt": "GITHUB_REPOS=\u003cfill-this-in\u003e\n\nSet up Cursor Agent SDK on this VM by following the exe.dev recipe at https://exe-staging.dev/deploy/cursor-agent-sdk.md from top to bottom.\n\nThe values at the top of this message are mine:\n- GITHUB_REPOS: the GitHub repositories to review, as owner/name, comma-separated, all with the same owner and 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-agent. This VM's name is the output of `hostname`: use it wherever the recipe writes my-cursor-agent. 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 Agent SDK CLI 0.4 on Node.js 24, and Cursor's security-reviewer template in ~/security-reviewer, a git repository that watches GITHUB_REPOS\n- The VM signed in to Cursor (`agent-sdk whoami` names the account), with no GitHub token on it\n- security-reviewer.service enabled, so it comes back after a reboot, with state in ~/agent-state\n- The playground answering at `https://\u003cvm\u003e.exe.xyz:3000/playground`, private to the VM's owner\n- Both smoke evals passing with `agent-sdk eval`\n\nRun \"Install by hand\" first, skipping VM creation; the walkthrough is for\nthe owner afterwards. Use GITHUB_REPOS exactly as given. For \"Sign in to\nCursor\", start `agent-sdk login` in a tmux session, give the owner the\nURL it prints, and wait until `agent-sdk whoami` names an account; never\nask for, print, or copy an API key. Don't open, comment on, or review\npull requests yourself, and don't run `agent-sdk deploy`. Keep port 3000\nprivate: never run share set-public or share port. Finish with\nhttps://\u003cvm\u003e.exe.xyz:3000/playground, using this VM's name, and point the\nowner to \"Review a pull request\".\n\nFinish with the URLs I should open.\n",
    "prompt_url": "https://exe-staging.dev/deploy/cursor-agent-sdk/prompt.txt"
  },
  "updated": "2026-10-28",
  "related": [
    "claude-agent-sdk",
    "openai-agents-sdk",
    "claude-code",
    "agents",
    "openclaw",
    "codex"
  ],
  "alternatives": [
    "Cursor-managed hosting",
    "GitHub Actions"
  ]
}
