Problem
Today, viewing a device's live screen in the hub UI is tied to actually controlling it (tap/swipe/type). There's no way to let a second person just watch what's happening on a device — e.g. to show a bug to a teammate, pair on a manual test, or let a reviewer
follow along — without giving them control or requiring them to reserve/release the device themselves.
Proposed feature
A "spectator" / read-only mode for a live device session:
- The person driving the device (who holds the reservation) can generate a shareable link (or the hub exposes a "view" URL per device) that opens the same live screen stream in read-only mode — no tap/swipe/type controls, no reservation required.
- Multiple spectators can open the link concurrently.
- Spectator view should reuse the existing MJPEG/WebRTC stream rather than opening a second stream from the provider, to avoid extra load on the device/provider.
- Optional: expire the link when the underlying reservation ends, or make it explicitly revocable.
Implementation questions to discuss
- New endpoint/websocket that fans out the existing stream, or a UI-only permission flag on the existing session route (same URL, minus the control panel)?
- Auth: does a spectator need a GADS account (view-only role), or is a token-based link acceptable for a self-hosted internal tool?
- Where does this fit relative to the workspace/permission model — role per workspace vs. a one-off share token?
I'd like to implement this — happy to open a PR once we agree on the approach above
(endpoint shape + auth model). Let me know which direction you'd prefer.
Problem
Today, viewing a device's live screen in the hub UI is tied to actually controlling it (tap/swipe/type). There's no way to let a second person just watch what's happening on a device — e.g. to show a bug to a teammate, pair on a manual test, or let a reviewer
follow along — without giving them control or requiring them to reserve/release the device themselves.
Proposed feature
A "spectator" / read-only mode for a live device session:
Implementation questions to discuss
I'd like to implement this — happy to open a PR once we agree on the approach above
(endpoint shape + auth model). Let me know which direction you'd prefer.