graph LR
Client_Server_SDKs["Client/Server SDKs"]
Client_Configuration_Module["Client Configuration Module"]
Authentication_Module["Authentication Module"]
Webhook_Module["Webhook Module"]
API_Gateway_Control_Plane["API Gateway/Control Plane"]
Core_Media_Server_SFU_["Core Media Server (SFU)"]
Authentication_Module -- "is a foundational dependency for" --> Client_Server_SDKs
Client_Configuration_Module -- "is specific to client setup for" --> Client_Server_SDKs
Webhook_Module -- "is for server-side event consumption by" --> Client_Server_SDKs
Client_Server_SDKs -- "interacts with (secure connections & API calls)" --> API_Gateway_Control_Plane
API_Gateway_Control_Plane -- "sends event notifications to (via webhooks)" --> Client_Server_SDKs
Client_Server_SDKs -- "connects to" --> Core_Media_Server_SFU_
API_Gateway_Control_Plane -- "signals and manages" --> Core_Media_Server_SFU_
click Client_Server_SDKs href "https://github.com/CodeBoarding/GeneratedOnBoardings/blob/main/livekit/Client_Server_SDKs.md" "Details"
click API_Gateway_Control_Plane href "https://github.com/CodeBoarding/GeneratedOnBoardings/blob/main/livekit/API_Gateway_Control_Plane.md" "Details"
click Core_Media_Server_SFU_ href "https://github.com/CodeBoarding/GeneratedOnBoardings/blob/main/livekit/Core_Media_Server_SFU_.md" "Details"
The LiveKit project is a robust WebRTC server designed for real-time communication, enabling seamless management of rooms, participants, and media streams. Its architecture is centered around a control plane that handles API interactions and authentication, and a media server (SFU) dedicated to efficient real-time media forwarding. Client and server SDKs interact with these core components to establish connections, manage sessions, and process events, abstracting the underlying complexities of WebRTC.
Client/Server SDKs [Expand]
This component provides the necessary interfaces and abstractions for client applications (e.g., web, mobile, desktop) to connect to LiveKit rooms, manage media streams, and handle real-time events, abstracting the complexities of WebRTC. Concurrently, it offers server-side interfaces for administrative tasks, such as generating access tokens, managing rooms and participants via APIs, and processing platform webhooks.
Related Classes/Methods:
pkg/clientconfiguration/conf.gopkg/service/auth.gopkg/service/server.go
Manages client-side settings and initial connection parameters, providing a structured way for client applications to configure their interaction with the LiveKit platform.
Related Classes/Methods:
pkg/clientconfiguration/conf.go
Crucial for security, this module handles the generation and validation of access tokens (JWTs) for both client and server applications, ensuring secure and authorized access to LiveKit services.
Related Classes/Methods:
pkg/service/auth.go
Facilitates server-side applications in securely receiving and processing asynchronous event notifications (webhooks) from the LiveKit platform, enabling real-time reactions to platform events.
Related Classes/Methods:
pkg/service/server.go
API Gateway/Control Plane [Expand]
Handles API requests, manages authentication, and sends event notifications to other components. It acts as the central point for all client and server SDK interactions with the LiveKit backend for administrative and signaling purposes.
Related Classes/Methods:
cmd/server/main.gopkg/service/server.gopkg/service/twirp.gopkg/service/roomservice.gopkg/service/auth.go
Core Media Server (SFU) [Expand]
Manages real-time media streaming (publishing and subscribing to audio/video tracks). It is responsible for efficiently forwarding media streams between participants in a room without mixing them, optimizing bandwidth and processing.
Related Classes/Methods:
pkg/sfu/sfu.gopkg/rtc/room.gopkg/rtc/mediatrack.go