Cursor’s regular Cloud Agents are convenient. You describe a task and they handle the environment, tests, and PRs. But as soon as you need your code, secrets, or internal services to stay completely inside your own network, the standard version stops being useful.
On March 25, 2026 Cursor released Self-Hosted Cloud Agents. The planning and LLM reasoning still happen in Cursor’s cloud, but every actual command, file operation, build, test, or database call runs on your own machine or server.
I enabled it the day it dropped and have been running workers daily on a plain Ubuntu VM, a GPU box, and a small Kubernetes cluster. This is exactly how I use it.
Self-Hosted vs Regular Cloud Agents – Honest Comparison
| What matters | Regular Cloud Agents | Self-Hosted Cloud Agents |
|---|---|---|
| Where execution happens | Cursor’s servers | Your own VM, laptop, devbox, or Kubernetes |
| Code & secrets stay in your network | No | Yes |
| Access to internal services (DBs, private APIs, caches) | You have to expose them | Full native access |
| Setup time for first run | Instant | 5–10 minutes |
| Cost | Only your Cursor plan | Cursor plan + whatever you pay for the VM/K8s/GPU |
| Worker limits (April 2026) | Plan-dependent concurrent agents | 10 workers per user, 50 per team (more available on request) |
If privacy, compliance, or “I want the agent to use the exact same environment my CI uses” matters to you, go self-hosted. If you just need something quick and don’t care where it runs, regular cloud agents are still simpler.
Step-by-Step Setup (Exactly What I Did)
1. Enable Self-Hosted Agents
You need a Cursor Team plan. Go to cursor.com/dashboard → Cloud Agents section and turn on “Allow Self-Hosted Agents”. Only admins can do this.
2. Install the Worker CLI
# macOS, Linux, or WSL
curl https://cursor.com/install -fsS | bash
# Windows PowerShell
irm 'https://cursor.com/install?win32=true' | iexVerify it installed:
agent --version3. Start a Worker
cd into the root of the repository you want the agent to work on, then run:
agent worker startFor production or long-running use I prefer an API key:
agent worker start --api-key "sk-..."The worker only makes an outbound HTTPS connection on port 443. No inbound ports or firewall changes needed. It shows up immediately in your Cursor dashboard under Self-Hosted workers.
4. Run a Task
Go to cursor.com/agents, pick your repo, choose “Self-Hosted” from the environment dropdown, and describe the task the same way you normally would.
Advanced Options That Actually Get Used
Long-lived worker (daily use): just leave agent worker start running.
Ephemeral / single-use worker:
agent worker start --single-use --idle-release-timeout 600Labels for routing:
agent worker start --label env=production --label gpu=true --label size=largeKubernetes fleet: Cursor provides an official Helm chart and operator if you want to scale workers across multiple nodes.
Things That Actually Bite You
Your worker has to match whatever environment you normally use. If your dev machine has some custom alias, a specific version of Node, or a weird .env setup, the agent will hit the same walls you would.
A bunch of the newer features (screenshots, full computer use, some automations) are still missing on self-hosted workers.
You’re still paying for your Cursor plan on top of whatever you spend on VMs or Kubernetes. It adds up if you forget and leave workers running 24/7.
Git providers besides GitHub and GitLab can feel a bit clunky in the web UI right now.
When I Actually Use Self-Hosted
I use self-hosted whenever the task touches real secrets, internal services, production-like data, or specific hardware (my GPU box for heavier jobs, for example).
For quick throwaway experiments I still use regular cloud agents because they spin up faster. Most days I keep one long-lived worker on my main dev machine and another on a cheap cloud VM or GPU instance.
Resources
- Official Announcement: cursor.com/blog/self-hosted-cloud-agents
- Self-Hosted Docs: cursor.com/docs/cloud-agent/self-hosted
- Enable it in the dashboard: cursor.com/dashboard/cloud-agents
- Reddit discussions (r/cursor): people are posting real setup experiences and Kubernetes configs right now.
If you run into something weird while setting this up, drop the exact error or what you’re trying to do in the comments and I’ll tell you what worked for me.