Know why the call felt bad — not just that it did.
For support leads, NOC/SRE, and technical evaluators. TomatoRTC separates QoS (what the platform does under constraint) from QoE (what the user experienced and why).
The gap
Hosted platforms hide the failure mode.
Support teams guess between Wi‑Fi, TURN, CPU, codec, and SFU overload. Self-hosted teams need the same explainability they expect from their own observability stack.
- Opaque scores "Poor network" with no path, relay, or SFU attribution.
- Support roulette No structured cause — longer MTTR and unhappy customers.
- No export Quality data trapped in vendor portals instead of your SIEM.
- Black-box SFU Cannot audit layer policy, load-shed rules, or pacing behavior.
Two layers
QoS protects media. QoE explains perception.
QoS acts before collapse; QoE names what still hurt when something went wrong.
Client QoE
Every topology gets client-side quality intelligence.
Same SDK and report shape in mesh and SFU — RTT, jitter, loss, FPS, ICE path, and redacted support export.
Live score from getStats() with excellent / good / fair / poor labels.
host-to-host vs srflx-to-relay classification in support bundles.
Redacted JSON plus kitchen-sink human-readable story for tickets.
Quality snapshots and timeline events into your SIEM.
SFU QoS
Adaptive routing when the server fans out media.
Production default: mediasoup. First-party media-plane implements the same policy contracts — hardening for large live populations.
Viewport, pin, active speaker, and device bitrate cap drive layer choice.
Deterministic pause of lowest-priority consumers when over budget.
Simulcast SSRC and SVC dependency-descriptor forwarding.
RFC 6464 audio levels drive priority and keyframe on transition.
Audio on critical zero-delay lane; bounded video queues.
TWCC / REMB / loss-fed AIMD estimator for subscription decisions.
Cause classification
Six causes — not one vague badge.
assessQoe() in @rtc-sdk/media-plane maps symptoms to actionable categories. Per-consumer qoeScore and qoePrimaryIssue surface in SFU diagnostics.
Observability
From live panel to SIEM — your retention, your boundary.
quality.snapshot, ICE, reconnect, and QoS bandwidth events.
Thresholds in effect at capture, SFU pacer and consumer quality.
Instance heartbeats, room load ranking, SFU diagnostic counters.
SFU ingest/forward bytes and TURN relay metering for capacity.
Topologies
Same protocol — different QoS owners.
Topology is selected at join (RTC_TOPOLOGY), not a separate SDK fork.
Honest status
Real, hardening, and roadmap — labeled clearly.
Detect. Classify. Act. On your infrastructure.
- 1 Run the demo
Kitchen-sink quality panel in SFU mode — live score and ICE path
- 2 Export a bundle
Redacted support JSON — review cause and candidate-pair classification
- 3 Wire your NOC
OTEL quality metrics and global monitoring into your workflow