TomatoRTC

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).

Cause classification SFU adaptation Support bundles SIEM export

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.

Layer
Role
QoS
Bandwidth estimates, layer selection, load shedding, pacing, keyframe recovery
QoE
0–100 score + primary cause: network, cpu-device, turn-relay, codec, routing, or none

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.

CallQualityAnalyzer

Live score from getStats() with excellent / good / fair / poor labels.

ICE path

host-to-host vs srflx-to-relay classification in support bundles.

Support bundle

Redacted JSON plus kitchen-sink human-readable story for tickets.

OTEL export

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.

Subscription policy

Viewport, pin, active speaker, and device bitrate cap drive layer choice.

Load shedding

Deterministic pause of lowest-priority consumers when over budget.

Layer filtering

Simulcast SSRC and SVC dependency-descriptor forwarding.

Active speaker

RFC 6464 audio levels drive priority and keyframe on transition.

Pacing

Audio on critical zero-delay lane; bounded video queues.

Bandwidth estimate

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.

Cause
Meaning
network
Packet loss, RTT, jitter on the path
cpu-device
CPU-limited encode/decode, low frame rate
turn-relay
Relay path — penalty scales with overhead
codec
Decode errors or bitrate starvation
routing
SFU drops distinct from transport loss
none
No significant degradation detected

Observability

From live panel to SIEM — your retention, your boundary.

Diagnostic timeline

quality.snapshot, ICE, reconnect, and QoS bandwidth events.

Support bundle

Thresholds in effect at capture, SFU pacer and consumer quality.

Global monitoring

Instance heartbeats, room load ranking, SFU diagnostic counters.

Usage telemetry

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.

Mode
QoS owner
QoE signals
Mesh
Browser GCC
Client score + P2P ICE path
SFU
Server subscription policy + pacer
Client score + server consumer quality
TURN relay
Short-lived creds, metered
turn-relay cause when overhead high

Honest status

Real, hardening, and roadmap — labeled clearly.

Capability
Status
Client scoring + support bundles
Shipped
mediasoup SFU (production default)
Shipped
First-party SFU QoS + QoE
Implemented — scale hardening
TWCC tuning at large population
In progress
PMG compositor scenes
Bounded slices shipped; broad deployment hardening

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