Dashboard¶
The operator's console: fleet cards with live joints, camera tiles, run a policy, record, replay, one E-STOP.
python3 -m pip install "strands-robots[sim,dashboard]"
STRANDS_DASH_DEV_AUTH=1 strands-robots dashboard --dashboard-port 8080 # localhost, no passkey
Open http://127.0.0.1:8080, type so101, pick sim, tick confirm, press connect: a
card with six joints appears. Without STRANDS_DASH_DEV_AUTH=1 the first visit enrolls a
WebAuthn passkey and the first key enrolled wins.
| route | does |
|---|---|
GET /api/fleet |
local robots and mesh peers, with is_connected and joints |
POST /api/robot/{name}/connect .../move .../disconnect |
through the same Robot facade as everything else |
GET /api/robot/{name}/observe |
one observation |
POST /api/run /api/record /api/replay |
jobs; GET /api/jobs, POST /api/jobs/{id}/stop |
POST /api/estop /api/resume |
the fleet e-stop; resume needs STRANDS_MESH_OVERRIDE_CODE |
GET /api/safety |
latched, by whom, why |
WS /ws |
camera tiles and joint state |
Every write carries confirm: true or answers 428. move is dry_run: true unless told
otherwise. While the e-stop is latched every move and run is refused ESTOP_LATCHED.
Reads never touch hardware.