Start sharing a machine

remotedev up --broker {this broker's URL}

Prints one share link. Open it in any browser for the screen, terminal, files, clipboard and management tabs. The slug in the link is the only credential — keep the link private.

HTTP endpoints (per share link)

Everything below hangs off /s/<slug>.

endpointwhat it does
GET /statusliveness: online, ended, name, width, height, os, viewers, host_version
GET /shotone fresh JPEG frame (screenshot on demand, no-store)
GET /thumblast cached frame (cheap preview)
GET /streamMJPEG stream of pushed frames
POST /inputqueue one input event; acks {ok, queued, t, fx, fy}
POST /rpcrun any host command (see below); JSON {"cmd": ..., ...args}
GET /activityrecent command names + outcomes
GET|POST /port/<n>HTTP tunnel to localhost:<n> on the host
POST /sendtomachine-to-machine file copy
POST /endend the session

Input events

POST /s/<slug>/input
{"type":"click","fx":0.5,"fy":0.5,"button":"left"}

Types: move, click, mouse_down, mouse_up, scroll, text, key, clipboard. Coordinates are fractional (fx, fy in 0–1), so they survive resolution changes.

RPC commands

POST /s/<slug>/rpc
{"cmd":"state"}

Observability

cmdreturns
statefocused window {id, title}, screen size, platform, backend, control owner
infoplatform, hostname, screen size, version
screenshotPNG/JPEG as base64, optional region, scale, quality, if_hash
list_windows / monitors / capabilitieswindows, displays, what this backend can do
cursor_positioncurrent pointer x, y

Browser (CDP bridge)

Works against a browser started with --remote-debugging-port=9222 (override the base with a "cdp" field or REMOTEDEV_CDP).

cmdwhat it does
pageactive tab {url, title, ready_state} — confirms a navigation actually landed
dominteractive elements with CSS selectors + on-screen boxes
dom_click{"selector": "#save"} — scrollIntoView + click, returns the element's center
dom_eval{"js": "..."} — evaluate and return a JSON value
cdp{"method": "Page.navigate", "params": ...} — raw DevTools passthrough

Control

cmdwhat it does
execrun a shell command, capture output
launch / open_urlstart an app / open a link in the default browser
type / key / click / move / scrollraw input by pixel coordinates
click_text / click_imageOCR / template-match a target, then click it
keepawake{"on": true} — inhibit screensaver and display power-off for the session
wake_display / wolwake a blanked display / send Wake-on-LAN to a sibling machine
clipboard_get / clipboard_settext (and image) clipboard both ways

Files, processes & more

cmdwhat it does
ls / read_file / write_file / mkdirs / rm / mvfilesystem, chunked transfers for big files
ps / kill_proc / proc_outputprocess list, kill, captured output
sched_add / sched_delete / sched_pauserecurring commands on the host
record_start / record_stopscreen recording on the host
self_updateupdate the host package and restart on the same link

Everything is curl-able

# what is on screen right now?
curl -s $BASE/s/$SLUG/shot -o now.jpg

# what has focus?
curl -s -X POST $BASE/s/$SLUG/rpc -d '{"cmd":"state"}'

# click a button by selector instead of pixels
curl -s -X POST $BASE/s/$SLUG/rpc \
  -d '{"cmd":"dom_click","selector":"button.submit"}'