# SFU relay (Janus VideoRoom) — lab preview **Post-alpha product path.** Lab stack: Janus on **cast02**, signaling on app nodes, coturn on cast02. ## Layout | Path | Role | |------|------| | `public/dashboard.php` | Room list / create (auth required) | | `public/lab.php` | **M0** browser E2E — screen-share publish + subscriber viewer | | `public/assets/sfu-lab.js` | WebRTC + Janus WS trickle client | | `public/api/rooms.php` | Room CRUD | | `public/api/join.php` | JSEP join relay (publisher / subscriber) | | `ac-deploy/.../smoke_sfu.sh` | Janus + health smoke | ## Lab E2E 1. Sign in on issues console (shared `ac_crash_sess`). 2. Open `/app/androidcast_project/sfu/dashboard` → create room → note **Janus room id**. 3. Open `/app/androidcast_project/sfu/lab` → publish screen share. 4. Second tab/browser → same lab URL → enter room id + **publisher feed id** → Subscribe. ## Next (M2+) 1. Wire cast encoder → SFU publisher (screen share, not camera-only lab). 2. Education screen share on SFU path (replace P2P demo). 3. Session RBAC + stats → graphs. Android M1: `ac-mobile-android` → Developer settings → **Enable Janus SFU relay lab** → **Open SFU lab**. See [ac-docs BUILD_DEPLOY](../../ac-docs/BUILD_DEPLOY.md) and cluster `deploy-janus-sfu.sh`.