A full desktop
Debian with Xfce, Google Chrome, Chromium, a terminal and a file system of its own, in an isolated sandbox.
Start a computer for each of your users. Your agent sees the screen, clicks, types and runs commands. Your users watch it live in your app, or take over the mouse and keyboard.
Linux desktops in the cloud for AI agents, one per user, live in your app.
Debian with Xfce, Google Chrome, Chromium, a terminal and a file system of its own, in an isolated sandbox.
Pass your id for a user as userId. Their computer keeps their files, browser sign-ins and screen, and asking again starts the same one.
Get a link to the live screen for an iframe. Let users watch the agent, or use the mouse and keyboard themselves.
Screenshot, click, move, drag, scroll, type, keys and hotkeys, each one POST. Anthropic's and OpenAI's computer-use tools map straight onto them.
The exec action runs a shell command and returns its exit code and output, so an agent can skip the mouse when a command is faster.
With no mouse, keyboard or API activity, a computer stops by itself. Files stay, and nothing is charged while it is stopped.
Click Deploy on the Cloud Computer card. You get COMPUTERS_API_URL and COMPUTERS_API_KEY for your server.
POST /computers with your user's id, then show the preview link in an iframe.
Take a screenshot, send it to your model, and turn its answer into a click, keystroke or command. Repeat.
// api() is a fetch to COMPUTERS_API_URL with COMPUTERS_API_KEY, as in the docs.
// Creates and starts this user's computer, or starts the one they have.
const computer = await api("/computers", { userId: user.id, size: "basic" });
// A link to the live desktop, for an <iframe> in your app.
const { url } = await api(`/computers/${computer.id}/preview`, { viewOnly: true });
const act = (action: object) => api(`/computers/${computer.id}/actions`, action);
const shot = await act({ type: "screenshot" }); // { image, mime, cursor }
await act({ type: "click", x: 640, y: 400 });
await act({ type: "type", text: "hello world" });
const out = await act({ type: "exec", command: "ls ~" }); // { exitCode, output }Same project, same .env, same bill.
Postgres, auth, storage, Redis, email and AI models. One API key.