Skip to content
OS-level control

Drive the whole desktop.

CDP drives the page. Real automation also needs the things outside the DOM — native file dialogs, <select> popups, browser chrome, other windows. Every headful session gets its own X display, so input can travel through the operating system, not just the render surface.

Two layers of input

The page, or the whole machine.

Both layers ship in the same session. Reach for CDP for speed inside the DOM; flip useOs on when the target lives outside it.

Page control (CDP)

Input.dispatchMouseEvent reaches the page's render surface only. It never moves the real cursor, and it can't touch a native dropdown, a file picker, or the address bar. Fast, and enough for most in-DOM work.

OS control (useOs)

Pass useOs: true and input routes through xdotool on the session's Xvfb — real display-server events that reach native dialogs, <select> popups, browser chrome, and any other window in the VM.

Endpoints

The full OS-control surface.

Anchor-compatible OS-control routes under /v1/sessions/{sessionId}/…. Each returns the exact wire shape — bare {status}, with the clipboard and copy quirks preserved.

MethodPathWhat it does
POST /mouse/down · /mouse/up Separate press and release — for press-and-hold and custom gestures.
POST /drag-and-drop {startX,startY,endX,endY} — a real drag gesture across the surface.
POST /keyboard/shortcut {keys[],holdTime} — key combos (Ctrl+C) with real modifiers.
GET/POST /clipboard Read and write the clipboard; GET returns {data:{text}}.
POST /copy · /paste Copy the selection (bare {text} quirk preserved) and paste text in.
POST /uploads Multipart file into the session; optionally attached to a file input.
POST /scroll {deltaY,steps,useOs} — scroll amounts (not pixels), optional smoothing.
useOs

Reach beyond the page.

A useOs action drives the operating system — the pointer actually moves on the session's display, verifiable and able to click things the DOM can't see. Headful sessions get their own Xvfb display and x11vnc server automatically; headless sessions keep the fast, pure-CDP path.

POST /v1/sessions/<id>/scroll
{ "x": 321, "y": 222, "deltaY": 1, "useOs": true }

# the OS pointer really moved — verifiable on the display:
$ xdotool getmouselocation
X=321 Y=222
Extensions

Beyond the Anchor contract.

These aren't in Anchor's REST spec — they're MCP-only there. We expose them as clearly-labeled REST extensions and as MCP tools, so any agent gets them.

hover

Move the pointer over an element by selector or coordinates.

select_option

Set a <select> value by option value or visible label.

wait_for

Block until a selector appears or text is present on the page.

tab list / new / select / close

Full multi-tab management over the browser target.

Live desktop

noVNC — a human at the wheel.

“Open the live-desktop URL and you get the whole browser desktop — chrome and all — as a real, bidirectional framebuffer a person can drive live.”

Own displayEvery headful session runs an x11vnc server on its own X display, provisioned automatically.
BidirectionalA real VNC framebuffer streams the full browser desktop — you both watch and drive it.
Human-in-the-loopHand a running session to a person mid-flow, then hand it back to the agent.
Headless stays fastNo VNC overhead when you don't need it — headless sessions keep the pure-CDP path.
Get started

Give your agents real OS control

Open-source, self-hostable, and Anchor-compatible. Drive the page or the whole desktop.