Skip to main content

Personal desktop API

One desktop per authenticated user. Requires Desktops:Enabled, Kubernetes, and the personal_desktop plan entitlement (Pro and above).

MethodPathPurpose
GET/api/desktopCurrent desktop
POST/api/desktop/accept-termsFirst-use terms
POST/api/desktop/startQueue start (pod + Service)
POST/api/desktop/stopStop the pod, keep the profile
POST/api/desktop/resetWipe the Chrome profile
DELETE/api/desktopDelete desktop + volume
POST/api/desktop/consentGrant agent use (web / telegram / text)
POST/api/desktop/consent/revokeRevoke agent use
POST/api/desktop/control/takeUser takes the keyboard (stopAgent)
POST/api/desktop/control/releaseHand back to the agent
POST/api/desktop/connect-tokenShort-lived { scope: view|control }
GET/api/desktop/eventsSSE status stream
GET/api/desktop/vnc/{*path}KasmVNC proxy: HTTP files and the websockify WebSocket (token query t or cookie)

Connect tokens last about 60 seconds. Open the returned viewPath in an iframe or a separate window — it already carries the token, pins noVNC's path to the proxied WebSocket endpoint, and sets show_control_bar=1&resize=remote&enable_webp=0 so KasmVNC shows its control bar, resizes the remote screen to the viewport instead of assuming a Kasm Workspaces embed, and sticks to JPEG rects (Chrome's ImageDecoder fails on its WebP rects). While the agent is driving, a control request is downgraded to view-only, which KasmVNC enforces (the proxy signs in as its read-only user). Paths under /api/desktop/vnc/api/… (KasmVNC's owner API) answer 403 to a view token.

A Yes/No card from desktop_request_access, or a standalone yes / oui / ok on the assistant thread (including Telegram), grants the same one-shot agent use.

Running minutes are billed at Desktops:CreditsPerRunningMinute (default 2).