noVNC viewer URL
computer_use.viewer_url(session_id) returns a browser-accessible URL. Watch agents work in real time or take over manually.
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
$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
computer_use.viewer_url(session_id) returns a browser-accessible URL. Watch agents work in real time or take over manually.
GET, POST, PUT, PATCH, DELETE proxied to in-VM API. Send click, type, scroll actions. Read state. Binary endpoints (screenshots) are streamed.
browser.create_session() gives you navigate(), click(), fill(), screenshot(), and extract_elements(). CSS selectors, configurable timeouts.
Open the viewer URL in a browser, interact directly, then let the agent resume. Session state is preserved throughout.
SDK reference
1from instavm import InstaVM23client = InstaVM(api_key="sk_instavm_...")4session_id = client.session_id56# Get noVNC viewer URL — open in browser to watch7viewer = client.computer_use.viewer_url(session_id)8print(viewer["viewer_url"])910# Read desktop state11state = client.computer_use.get(session_id, "/state")1213# Send a click14client.computer_use.post(15 session_id,16 "/mouse/click",17 json_data={"x": 640, "y": 420, "button": "left"},18)1920# Or use the browser API for web automation21session = 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
computer_use.viewer_url(session_id) returns a noVNC link. Open it in any browser to watch or interact with the desktop.
computer_use.post(session_id, '/mouse/click', json_data={...}) sends input. computer_use.get(session_id, '/state') reads current state.
Click into the viewer and operate manually. The VM does not reset. Resume API-driven automation when ready.
Free tier available. No credit card required. VMs provision in under 200ms.
By clicking Accept, you agree to our use of cookies.
Learn more