A browser-only WebRTC debugging toolbox. No backend, no signaling server.
| Panel | What it does |
|---|---|
| Signaling | Manual SDP offer/answer exchange with validation and line-by-line SDP annotator |
| Media | Camera, mic, and screen capture with track controls and device selection |
| ICE Servers | Add/test STUN and TURN servers; per-server connectivity test |
| ICE Candidates | Real-time candidate list (host/srflx/relay), manual remote candidate paste |
| Data Channel | In-page loopback test — no second device needed |
| Metrics | getStats() polling with canvas sparklines (bitrate, RTT, packet loss) |
| Connection Timeline | Canvas-rendered state-change timeline |
| Event Log | Filterable event log with export |
| Snapshot Export | LLM-friendly Markdown or JSON session export for AI-assisted debugging |
npm install
npm run dev # http://localhost:3000
npm run build # static export to out/
npm run test:e2e # Playwright testsCamera/microphone/screen sharing require HTTPS or
localhost.
- Tab A — set role to Caller, Start Session, then Create Offer. Copy the SDP.
- Tab B — set role to Callee, paste the offer, Set Offer, then Create Answer. Copy the answer SDP.
- Tab A — paste the answer, Set Answer.
- Watch the header status indicators turn green.
Open the Snapshot Export panel → Generate (Markdown) → copy → paste into Claude/ChatGPT.
Pushes to master auto-deploy to GitHub Pages via .github/workflows/deploy.yml.
One-time setup: Settings → Pages → Source: GitHub Actions.
Chrome 90+, Firefox 90+, Edge 90+. Safari 15+ (limited getStats() support).
MIT
