Why
We've moved devbox-server to Claude sessions as the way to drive work in an environment. The Cursor self-hosted worker is now dead weight:
- It autostarts per environment but mostly just sits there / disconnects.
- When its process isn't alive,
status.js marks the whole environment degraded (the yellow dot) — even though WordPress and Claude sessions work perfectly. That's confusing: a fully usable box shows yellow because of an unused worker.
So: rip out the Cursor worker functionality from the server, and with it the worker-liveness component of env status (no more yellow-because-worker-dead).
What to remove (server only)
server/src/worker.js — delete (Cursor worker start / liveness / health).
server/src/fleet.js — delete (Cursor fleet-API enrichment; only exists for the worker).
server/src/manager.js — drop worker autostart in the create pipeline, the worker start in start(), worker supervision in the reconcile loop, and the worker-health gathering in _gather().
server/src/status.js — remove the worker-liveness branch. After this, core-up ⇒ running. (Keep degraded only if we still want it for partial core services up — see open questions.)
server/src/config.js — remove cursorWorkerAutostart, workerDir, workerManagementAddr, workerIdleReleaseTimeout, fleetApiUrl. Decide on cursorApiKey (see below).
server/src/routes.js / status publicView — drop the worker and fleet fields from env responses.
server/ui/app.js — remove any worker/fleet display.
- Docs:
server/README.md, server/.env.example, server/AGENT_USAGE.md — strip Cursor-worker config + mentions.
Open questions for the implementer
CURSOR_API_KEY: it's currently a required server env var, but the worker is its only consumer. Once the worker is gone, make it optional / remove it from the required-vars check.
degraded status: keep it to mean "some but not all core services up" (genuine partial failure), or collapse to just running/stopped/failed? Leaning: keep degraded for the partial-core case, just remove the worker cause.
Out of scope
The scaffolder's Cursor support is separate and stays: cursor-agent baked into the workspace image and the npm run cursor launcher (a human can still run Cursor interactively in a devbox). This issue is only about the server's worker orchestration.
Not starting on this now — filing for later.
Why
We've moved devbox-server to Claude sessions as the way to drive work in an environment. The Cursor self-hosted worker is now dead weight:
status.jsmarks the whole environmentdegraded(the yellow dot) — even though WordPress and Claude sessions work perfectly. That's confusing: a fully usable box shows yellow because of an unused worker.So: rip out the Cursor worker functionality from the server, and with it the worker-liveness component of env status (no more yellow-because-worker-dead).
What to remove (server only)
server/src/worker.js— delete (Cursor worker start / liveness / health).server/src/fleet.js— delete (Cursor fleet-API enrichment; only exists for the worker).server/src/manager.js— drop worker autostart in the create pipeline, the worker start instart(), worker supervision in the reconcile loop, and the worker-health gathering in_gather().server/src/status.js— remove the worker-liveness branch. After this, core-up ⇒running. (Keepdegradedonly if we still want it for partial core services up — see open questions.)server/src/config.js— removecursorWorkerAutostart,workerDir,workerManagementAddr,workerIdleReleaseTimeout,fleetApiUrl. Decide oncursorApiKey(see below).server/src/routes.js/ statuspublicView— drop theworkerandfleetfields from env responses.server/ui/app.js— remove any worker/fleet display.server/README.md,server/.env.example,server/AGENT_USAGE.md— strip Cursor-worker config + mentions.Open questions for the implementer
CURSOR_API_KEY: it's currently a required server env var, but the worker is its only consumer. Once the worker is gone, make it optional / remove it from the required-vars check.degradedstatus: keep it to mean "some but not all core services up" (genuine partial failure), or collapse to justrunning/stopped/failed? Leaning: keepdegradedfor the partial-core case, just remove the worker cause.Out of scope
The scaffolder's Cursor support is separate and stays:
cursor-agentbaked into the workspace image and thenpm run cursorlauncher (a human can still run Cursor interactively in a devbox). This issue is only about the server's worker orchestration.Not starting on this now — filing for later.