Full Linux desktop for agent automation

Each VM runs a Linux desktop accessible via noVNC viewer URL. Proxy mouse, keyboard, and screenshot actions through the computer_use API. Pause automation and take over manually without losing session state.

1920x1080

Default viewport

All HTTP methods

Proxied

noVNC

Viewer

computer use
active app: dashboard.example.com

$viewer_url = client.computer_use.viewer_url(session_id)

https://viewer.instavm.io/sess_7f2a...

$client.computer_use.get(session_id, '/state')

{"active_window": "Firefox", "resolution": "1920x1080"}

$client.computer_use.post(session_id, "/mouse/click", ...)

ack | rtt 29ms

$

Capabilities

noVNC viewer URL

computer_use.viewer_url(session_id) returns a browser-accessible URL. Watch agents work in real time or take over manually.

Full HTTP method proxy

GET, POST, PUT, PATCH, DELETE proxied to in-VM API. Send click, type, scroll actions. Read state. Binary endpoints (screenshots) are streamed.

Browser automation built in

browser.create_session() gives you navigate(), click(), fill(), screenshot(), and extract_elements(). CSS selectors, configurable timeouts.

Pause and take over

Open the viewer URL in a browser, interact directly, then let the agent resume. Session state is preserved throughout.

SDK reference

computer-use.py
pythonViewer + actions
1from instavm import InstaVM
2
3client = InstaVM(api_key="sk_instavm_...")
4session_id = client.session_id
5
6# Get noVNC viewer URL — open in browser to watch
7viewer = client.computer_use.viewer_url(session_id)
8print(viewer["viewer_url"])
9
10# Read desktop state
11state = client.computer_use.get(session_id, "/state")
12
13# Send a click
14client.computer_use.post(
15 session_id,
16 "/mouse/click",
17 json_data={"x": 640, "y": 420, "button": "left"},
18)
19
20# Or use the browser API for web automation
21session = client.browser.create_session()
22session.navigate("https://example.com")
23session.fill("input[name='email']", "user@test.com")
24session.click("button[type='submit']")

How it works

Viewer URL, proxy actions, manual takeover

01

Get the viewer URL

computer_use.viewer_url(session_id) returns a noVNC link. Open it in any browser to watch or interact with the desktop.

02

Proxy actions through the API

computer_use.post(session_id, '/mouse/click', json_data={...}) sends input. computer_use.get(session_id, '/state') reads current state.

03

Take over when needed

Click into the viewer and operate manually. The VM does not reset. Resume API-driven automation when ready.

Get started with InstaVM

Free tier available. No credit card required. VMs provision in under 200ms.

We use cookies
We use cookies to ensure you get the best experience on our website. For more information on how we use cookies, please see our cookie policy.

By clicking Accept, you agree to our use of cookies.

Learn more