LabHub

Blog

WebRTC & Real-Time Communications 2026 Deep Dive — LiveKit, Daily, Agora, Twilio, Pion, Mediasoup, Jitsi, Janus, AWS IVS, Cloudflare Calls

한국어English日本語

Prologue — The Death of Programmable Video and the New Order

On 2024-12-05, Twilio officially shut down Programmable Video. The product that had been the de facto WebRTC PaaS for half a decade stopped accepting new sign-ups in March 2024, and exactly nine months later the existing workloads were cut as well. Thousands of apps that had been putting off the migration scrambled across LiveKit, Daily, Agora, Vonage, Dolby.io and Zoom Video SDK looking for a new home.

Who filled that void is, in itself, the 2026 map of real-time communications.

This article maps that landscape end to end. From the one-line RTCPeerConnection example, through a 9-platform comparison matrix, AI voice agent integration, and the local market situation in Korea and Japan.


1 · What WebRTC Actually Does — Three Legs

WebRTC is not magic. It is a standard that stands on three legs.

[Browser A]                                     [Browser B]
   |                                                 |
   |  (1) Signaling — agree on how to meet            |
   |     (NOT part of the WebRTC spec — WebSocket etc)|
   +---->  Signaling Server (you operate this) <----+
   |                                                 |
   |  (2) ICE — gather candidates on where to connect |
   +---->  STUN (learn your public IP and port)       |
   |     TURN (relay when NAT traversal fails)        |
   |                                                 |
   |  (3) Media — actually stream A/V or data         |
   +-----------------DTLS-SRTP encrypted------------ +
                (P2P or through SFU/MCU)

Memorize the responsibility of each leg and tool selection gets easier.

Take any leg away and the call does not happen. What a PaaS sells you is the labor of binding those three legs into a working bundle.


2 · RTCPeerConnection — The Core API on One Page

The surface the browser exposes is surprisingly small. Three objects are at the center.

The smallest two-party example (signaling is pseudocode):

// common setup on both sides
const pc = new RTCPeerConnection({
  iceServers: [
    { urls: 'stun:stun.l.google.com:19302' },
    { urls: 'turn:turn.example.com:3478', username: 'u', credential: 'p' },
  ],
})

pc.onicecandidate = (e) => e.candidate && signaling.send('ice', e.candidate)
pc.ontrack = (e) => (remoteVideo.srcObject = e.streams[0])

const stream = await navigator.mediaDevices.getUserMedia({ video: true, audio: true })
stream.getTracks().forEach((t) => pc.addTrack(t, stream))

// caller
const offer = await pc.createOffer()
await pc.setLocalDescription(offer)
signaling.send('sdp', offer)

// callee
signaling.on('sdp', async (sdp) => {
  await pc.setRemoteDescription(sdp)
  const answer = await pc.createAnswer()
  await pc.setLocalDescription(answer)
  signaling.send('sdp', answer)
})

About 40 lines and a 1:1 call lights up. The trouble starts here. The moment you scale to 3, 30 or 300 participants, the cost of maintaining a P2P mesh explodes. That is why the next chapter is necessary.


3 · Topology — Mesh vs MCU vs SFU

There are three topologies, and in 2026 production almost every group call uses an SFU.

Mesh (full N:N graph)
   A <----> B
   ^  \  / ^
   |   \/  |
   |   /\  |
   v  /  \ v
   D <----> C
   Up and downlink: O(N) per peer, total O(N^2)
   Pros: zero server cost, end-to-end encryption is natural
   Cons: client CPU and bandwidth explode beyond 4-5 peers

MCU (Multipoint Conferencing Unit — server decodes, mixes, re-encodes)
   A -+
   B -+- [MCU: decode -> composite -> re-encode] -> one video -> everyone
   C -+
   D -+
   Pros: only one stream of client bandwidth, legacy device compatible
   Cons: very expensive server CPU, end-to-end encryption impossible

SFU (Selective Forwarding Unit — server only routes)
   A -> [SFU] -> B, C, D
   B -> [SFU] -> A, C, D
   ...
   Pros: lightweight server CPU, easy to scale, per-recipient quality with simulcast/SVC
   Cons: client downlink is O(N), end-to-end encryption needs Insertable Streams

In 2026, MCU rarely shows up in newly built group-call systems. SFU is the standard, and audience modes over 100 viewers typically combine SFU with HLS/LL-HLS or WHEP fan-out. LiveKit, Mediasoup, Janus, Jitsi Videobridge, Agora, Daily and Cloudflare Calls are all SFUs.


4 · WebRTC NV — Where Does the Standard Stand

WebRTC 1.0 became a W3C Recommendation on 2021-01, and every new feature since has been bundled under "WebRTC NV (Next Version)", progressed through the W3C WebRTC Working Group and IETF RTCWEB. At the 2026 mark, the items that matter in practice are:

The point is that what was "experimental" through 2024 became commodity standard by 2026.


5 · Codecs — Opus Is God, Video Is Politics

Audio has effectively no choice. The mandatory codec in the WebRTC standard is Opus. From 8kHz speech to 48kHz music, variable bitrate, low latency. Voice AI agents use Opus as-is.

Video is politics.

Recommended default in 2026: Opus only for audio, simulcast with VP9 plus H.264 for video, AV1 as an opt-in. Screen sharing benefits from VP9 or AV1 for text clarity.


6 · ICE, STUN, TURN — Where Things Break Most Often

In WebRTC operations the single most frequent failure point is ICE candidate gathering. Behind corporate firewalls, carrier-grade NATs and half-deployed IPv6 networks, STUN alone is often not enough.

The open-source standard is coturn. PaaS vendors run their own global TURN, bundle a quota for free and bill the excess, or charge separately. Cloudflare TURN (launched 2023) acted as a price disruptor and dragged other PaaS TURN prices down with it.


7 · Nine Platforms in One Line

A one-line summary of the candidate set in 2026:

The next chapters look at each platform in detail.


8 · LiveKit — The Standard Transport for OpenAI Realtime API

LiveKit is an open-source project started in 2021. When OpenAI Realtime API chose LiveKit Agents as its first official SDK in 2024, it cemented LiveKit's position as the de facto standard.

Three layers move together as one bundle.

The core API revolves around Room.

import { Room, RoomEvent } from 'livekit-client'

const room = new Room({ adaptiveStream: true, dynacast: true })
room
  .on(RoomEvent.TrackSubscribed, (track, pub, participant) => {
    if (track.kind === 'video') document.body.appendChild(track.attach())
  })
  .on(RoomEvent.ParticipantConnected, (p) => console.log('joined', p.identity))

await room.connect('wss://your.livekit.cloud', token)
await room.localParticipant.enableCameraAndMicrophone()

adaptiveStream asks the SFU for a different simulcast layer based on the recipient's render size, and dynacast auto-pauses tracks no one is watching. Both directly cut cloud bandwidth bills.


9 · Daily.co, Daily Bots and Pipecat — Smoothest Stack for AI Voice

Daily has been selling managed WebRTC since 2016. In 2024 it bundled Daily Bots and the open-source Pipecat framework to claim the "easiest place to build AI calls" position.

The canonical one-liner:

import DailyIframe from '@daily-co/daily-js'
const call = DailyIframe.createFrame({ url: 'https://yourdomain.daily.co/room' })
call.join()

createFrame creates an iframe and embeds Daily's UI wholesale. When UI customization is required you drop down to createCallObject mode and control every track yourself.

Pricing is per-minute, with Free 10,000 minutes/month and a Scale plan from 600 USD/month plus usage. Unlike most PaaS vendors, the meter is participants and minutes rather than bandwidth, which makes forecasting easier.


10 · Agora — Effectively the Only Choice for Global Plus China

Agora is a 2014 Shanghai/Silicon Valley company that runs its own global network called SD-RTN (Software-Defined Real-Time Network) under SoftBank. The 4.x SDK advertises a global average first-frame time of 76ms and sub-100ms global e2e latency under 5G.

Anyone with workloads inside China seriously considers Agora at this point. Other PaaS vendors struggle to operate reliably on the mainland and lack experience with regulatory items like ICP. Agora has the most.

The API is a Channel model.

import AgoraRTC from 'agora-rtc-sdk-ng'

const client = AgoraRTC.createClient({ mode: 'rtc', codec: 'vp9' })
await client.join(appId, channel, token, uid)

const [mic, cam] = await Promise.all([
  AgoraRTC.createMicrophoneAudioTrack(),
  AgoraRTC.createCameraVideoTrack({ encoderConfig: '1080p_1' }),
])
await client.publish([mic, cam])

Pricing is per-minute and per-quality. 1080p video runs about 0.0099 USD/minute, HD at 0.00399. Global and China routing is billed separately. The matrix is more complex than other PaaS vendors but the volume discount is generous.


11 · The Twilio Video Shutdown and Migration Paths

On 2024-03-04 Twilio closed new sign-ups for Programmable Video. On 2024-12-05, EOL. The product that was the de facto WebRTC PaaS for five years died — Twilio Voice/Messaging survived, but Video did not.

The official migration guide pointed at Zoom Video SDK. Zoom produced migration packages and code-conversion tools. In reality the market dispersed further.

2025 was the year of migration, and market data through 2026 shows traffic split across those five destinations.


12 · Pion — A WebRTC Stack Written in Go

Pion is a Go-based WebRTC library Sean DuBois started in 2018. Not a managed service — a "way to write WebRTC directly in Go". The first place a team that has decided to implement WebRTC themselves looks.

Notes.

In the Rust camp there is WebRTC-rs (started 2023, deliberately ported with an API close to Pion's), and in C++ there is Google's libwebrtc reference. Anyone building a managed SFU from scratch reasonably picks Pion, WebRTC-rs or libwebrtc.


13 · Mediasoup 3 — The Essence of the Router/Worker Model

Mediasoup is a Node.js + C++ SFU library started by José Luis Millán (formerly SIP.js). Not managed — a library. Teams that intend to build their own SFU reach for it most often.

Representative users include Atlassian, Versatica, Whereby and parts of LiveKit. The pattern is: teams without resources to build a managed product build their own SFU on top of Mediasoup and host business rooms on top of that.


14 · Jitsi Meet — The Self-Hosting Standard

Jitsi started at BlueJimp, was acquired by Atlassian in 2015 and moved to 8x8 in 2018. It is the most frequently chosen bundle for self-hosted meetings.

The canonical self-host is the docker-jitsi-meet bundle. Spins up in one command on a single VM. Most often seen in government, healthcare and education where security demands are high.


15 · Janus Gateway — The Essence of the Modular Gateway

Janus is a C-based WebRTC gateway from the Italian company Meetecho. The structure swaps SFU, MCU, SIP gateway, recording, streaming and NoSIP modes by loading plugins. While Jitsi specializes in meetings, Janus is closer to a "generic gateway that attaches WebRTC to anything".

Key plugins.

Discord voice channels in the 2017-2020 era, early Slack Huddle, and parts of Microsoft Teams reportedly used Janus or a fork. Maximum flexibility, in exchange for operational complexity.


16 · AWS IVS Real-Time and Cloudflare Calls

The two newest axes in managed SFU came from cloud providers.

AWS IVS (Interactive Video Service) is Twitch infrastructure rebranded as an AWS product. It launched as a live-streaming-only service in 2020 and added IVS Real-Time on 2023-08 with multi-host (stage) capabilities.

Pricing for Stage is 0.0149 USD/minute/participant. Channel breaks down into viewing-time and encoding-time.

Cloudflare Calls (Realtime SFU) launched in beta on 2023-11 and went GA on 2024-09. The single-line price was a shock.

That price pressure pulled down every other PaaS price sheet. Cloudflare also runs WebRTC WHIP/WHEP gateways on top of Calls.


17 · OpenAI Realtime API, Claude Voice, Cartesia and ElevenLabs — The Transport for AI Voice

In October 2024 OpenAI shipped the Realtime API. The core change was that GPT-4o now hears and speaks audio directly, rather than through a text bridge. Before this, voice agents were a three-model serial pipeline (STT, LLM, TTS); Realtime collapsed those three stages into a single GPT-4o.

LiveKit was decisive here. OpenAI built its official SDK on LiveKit Agents, and as a result LiveKit became the de facto standard transport. Direct WebSocket connections are possible, but for production almost everyone runs LiveKit Agents on top of an SFU.

Competitors that appeared around the same time.

With WebRTC P95 e2e latency under 200ms, the 2026 baseline goal for AI voice is total user-perceived latency (end of human turn to start of agent response) under 500ms. The combination that made that goal reachable is exactly the WebRTC standard plus modern AI models.


18 · WHIP and WHEP — Live Streaming Moves onto WebRTC

For years live streaming meant the RTMP-push and HLS-pull pair. Encoders like OBS pushed to a media server over RTMP and viewers pulled with HLS. Latency was typically 6 to 30 seconds.

IETF started standardizing WHIP (WebRTC-HTTP Ingest Protocol) and WHEP (WebRTC-HTTP Egress Protocol) in 2022 to replace that pair. The key is simplicity.

That single POST unified ingest and egress on top of the same WebRTC stack. Latency drops to the 1-3 second range.

State of support in 2026.

RTMP is not dead, but the standards crowd's consensus is that by 2030 new systems will almost all be on WHIP/WHEP.


19 · The Korean and Japanese RTC Markets

Korea and Japan are markets where strong local vendors exist on top of the global PaaS.

Korea — NHN TalkN, NCP Real-Time Comms, KakaoTalk Voice

Japan — Skyway (NTT Communications), Yahoo!Japan, NTT-X

Japan's Skyway is solid enough that global PaaS share is lower than in Korea. Korea has seen faster penetration by global PaaS — Zoom, Google Meet, Agora and LiveKit in particular.


20 · Decision Matrix — Where to Use What

Recommended choices by scenario, May 2026.

This matrix is not a universal answer. Pricing, the team's language stack, operations staffing, data governance and government certifications are all variables. It is, however, enough to narrow the candidate set.


21 · Operations Traps — Where Things Actually Break

Whether managed or self-hosted, the operational failure points look similar.

The standard operations runbook is to always keep four graphs visible: P95 latency, connect failure rate, TURN usage and per-device encoder fallback rate.


22 · Security — DTLS-SRTP, E2EE, Workflow

The default security of WebRTC is strong. All media is encrypted with DTLS-SRTP and the keys are not in the SDP. The standard itself has no "encryption off" toggle.

The catch is the SFU. Routing media requires unwrapping DTLS-SRTP once, which means the SFU operator can see plaintext media. For genuine end-to-end encryption you encrypt once more before the SFU using Insertable Streams / RTCRtpScriptTransform.

Turning E2EE on disables server-side recording, server-side captions and SFU transcoding all at once. That trade-off needs to be designed in from the start.

Other items to mind.


23 · The Future — WebTransport, QUIC, Cloud Gaming Adjacent

Other standards are growing next to WebRTC, solving similar problems differently.

WebRTC is not going away. The recognition that WebRTC is heavy for certain workloads has hardened over five years, and WebTransport and MoQ have grown alongside it. By around 2030 the likely lineup is calls on WebRTC, live and games and messaging on WebTransport and MoQ.


24 · Closing — One-Line Recommendation

If a team starting fresh in 2026 asked for a one-line recommendation:

The standards are stable. The tools are varied enough. What is left is to pick the bundle that fits the workload and keep the P95 and ops graphs on screen.


References

Comments

No comments yet.

Sign in to leave a comment