DESKSPAWN
A Linux desktop your AI agent can use.
Deskspawn hands an agent its own desktop over an HTTP API. The agent takes screenshots to see it and sends clicks and keystrokes to work it.
What it is
Three pieces.
A desktop, a fleet service that keeps a warm pool and hands desktops out, and Python and JavaScript clients.
Each desktop is a Docker container running XFCE, driven by screenshot, click, type, key, scroll and bash.
Where it stands
A prototype, and proud of it.
A prototype. Everything runs on Docker on one Windows PC. No paying customer has ever touched it.
Illustration: every star stands for a desktop. Drag to turn it.
Software without an API still has a screen.
Deskspawn gives the agent the same screen, mouse and keyboard a person would use. It sees by taking a screenshot and acts with clicks and keystrokes.
Every call is an ordinary HTTP request, so any language that can send one can drive a desktop.
- screenshot
- click
- type
- key
- scroll
- bash
Measured on one Windows PC
Every number here is a prototype number: Docker on one Windows PC, not a production figure. Each row says how it was measured.
| Step | Measured | How |
|---|---|---|
| Hand out a warm desktop | 26 ms median, 29 ms p95 | 25 soak runs, one every 300 s, about two hours |
| Resume a paused desktop | 0.080 s | One desktop, HTTP round trip through the fleet API |
| Pause a desktop | 0.097 s | One desktop, HTTP round trip through the fleet API |
| Stop a desktop, home kept | 642–994 ms | Through the fleet API, client wall clock |
| Start it again | 1,102–1,264 ms | Through the fleet API, client wall clock |
| Refill a warm pool of 3 | 1.5–2.0 s was 4.5 s | Three runs per pool size, before and after a fix |
| Forget a desktop whose container vanished | 8.53–12.74 s | Three cases, three runs each |
| Desktop | Measured | How |
|---|---|---|
| Idle | 147 MiB | 200 desktops at once, measured 2026-09-11 |
| Busy, 8 Firefox tabs | 614–655 MiB | 1, 2, 4, 6 and 8 desktops, screenshot and scroll every 5 s for 180 s |
- 58 of 58
An AI agent passed 58 of 58 tasks across those 25 runs.
- 10 of 10
An AI agent completed 10 of 10 tasks on the fleet, one at a time and three at once.
- 5 of 5
Stopped and started again, a desktop kept its home: 3 files including 50 MiB of random data matched byte for byte in 5 of 5 cycles.
- 12 h 40 min
Paused with Firefox open, a desktop was woken after 12 hours 40 minutes with the same window and a valid screenshot.
Nothing past 8 busy desktops at once was tried. These are prototype numbers, not production figures.
What is built, and what is not
What works today?
- Three pieces: a desktop, a fleet service that keeps a warm pool and hands desktops out, and Python and JavaScript clients.
- The fleet keeps a warm pool of desktops, hands them out, takes them back and pauses idle ones.
- A stopped desktop keeps its home disk. Cloning a stopped desktop with new secrets is built, but not yet on the running fleet.
- Every desktop has its own bearer token, and the only path to its controls is through the fleet.
What is not built yet?
- Containers are the isolation boundary today, not a hypervisor. Good enough for demos, not for two unrelated tenants on one host.
- Accounts, billing, quotas and metering are not started.
- Cloud deployment is not started. The product runs on one local machine.
Can I use it?
Not yet. There is no public service and no paying customer. If you want to talk about it, get in touch with BOISE AI.
Keep going
- How it works
From a request, to a warm desktop, to sleep, in one scroll.
- Security
The walls around each desktop, and the limits that are still open.
- Developers
A real SDK sample, the calls it makes, and the verbs a desktop answers.
- Roadmap
What is done, what is next, and four things that must be true before anyone pays.