Burrowbox Docs

Live view

Three WebSocket streams let people watch a machine and take over. They're used by the dashboard and can be embedded in your own UI.

Stream Path Protocol
Desktop /api/machines/{id}/vnc RFB (VNC) over binary WebSocket — works with noVNC
Window events /api/machines/{id}/events JSON messages with window geometry
Browser /api/machines/{id}/browser Binary JPEG/PNG frames + JSON input messages

Streams are authenticated by the dashboard session. For embedding in your own app, proxy them from your backend with your API key.

#Single-app view

The events stream sends the window list whenever it changes:

{ "t": "windows", "screen": "1440x900",
  "windows": [{ "id": "0x00800003", "title": "GIMP", "class": "gimp.Gimp",
                "x": 120, "y": 80, "w": 1024, "h": 700, "focused": true }] }

Crop the desktop stream to a window's rectangle to show just that app. Send {"t": "focus", "id": "0x00800003"} to raise it, or {"t": "launch", "app": "gimp"} to open an app.

#Browser stream

Frames arrive as binary messages, each preceded by a JSON meta message:

{ "t": "meta", "url": "https://example.com/", "title": "Example", "mime": "image/jpeg",
  "tabs": [{ "index": 0, "url": "https://example.com/", "title": "Example", "active": true }] }

Input messages:

Message Effect
{"t":"click","x":100,"y":200,"button":"left","count":1} Click in page coordinates
{"t":"wheel","dx":0,"dy":400} Scroll
{"t":"text","text":"hello"} / {"t":"key","key":"Enter"} Keyboard
{"t":"nav","url":"example.com"} Navigate
{"t":"back"}, {"t":"forward"}, {"t":"reload"} History
{"t":"tab","index":1}, {"t":"newtab"}, {"t":"closetab","index":1} Tabs
{"t":"login"} Fill the login form from the vault