Phone B — Coach panel

Join training session

Enter the 6-digit code from Phone A. The backend issues a LiveKit token automatically — no copy/paste. Start the camera session on iPhone first, then join here.

Session

Session ID
Role
coach
LiveKit room
squash-dev
Advanced — dev token fallback

TEMP bypass for milestone debugging without the backend. Prefer the pairing code flow above.

Remote video

Connect to the room to receive video from Phone A.

Live drill metrics

court diagram

Metrics update from LiveKit telemetry (~10 Hz position, event-driven drill state). Arrival stats accumulate for the current browser session only.

Drill state
Current target
Current zone
Confidence
Latest arrival
Best arrival
Average arrival
Completed trials
0

Player position

Video mapping unavailable — showing the separate 2D court diagram below.

Connect to the room to receive telemetry from Phone A.

Drill controls

Commands publish on topic coach.command. Phone A updates its local drill engine and sends drill.state.changed telemetry back.

Command sync
idle
Commands sent
0
Remote phase
Remote target
Elapsed (s)
State updated

Connection status

State
idle
Room
Local identity
Remote participants
0