Description
Changelog
Reviews

Drop production-grade WebRTC into your Godot game.

Godot-LiveKit is a GDExtension that integrates the official LiveKit C++ SDK with Godot 4.5. It gives you everything you need to build real-time voice chat, video calls, screen sharing and arbitrary data channels — directly in GDScript or C#, with no custom engine builds and no painful build times.

What you get

  • Real-time voice, video, and data — connect to any LiveKit server (cloud or self-hosted) and join rooms in a handful of lines.
  • Full track support — publish and subscribe to audio/video tracks, with local sources for capturing audio and video from inside Godot.
  • Native screen capture — capture monitors or individual windows on macOS, Windows and Linux via the built-in LiveKitScreenCapture class. Perfect for streaming, co-op pair-programming games, or in-game broadcasting.
  • Data channels — send and receive arbitrary messages with reliable or unreliable delivery — built-in alternative to ENet for game state, chat, or signalling.
  • RPC support — call remote procedures between participants without writing your own protocol.
  • End-to-end encryption (E2EE) — secure media with configurable encryption, key management, and per-participant frame cryptors.
  • Connection statistics — full WebRTC stats (inbound/outbound RTP, codecs, transport, candidate pairs) for debugging and adaptive quality.
  • Cross-platform — prebuilt binaries for Linux, macOS (Universal) and Windows in every release.
  • Fast builds — uses prebuilt godot-cpp and LiveKit C++ binaries, so compile times are measured in seconds, not hours.

Quick start

extends Node

var room: LiveKitRoom

func _ready():
    room = LiveKitRoom.new()
    room.connected.connect(_on_connected)
    room.participant_connected.connect(_on_participant_connected)
    room.track_subscribed.connect(_on_track_subscribed)
    room.data_received.connect(_on_data_received)
    room.connect_to_room("wss://your-server.url", "your-token", {})

func _on_connected():
    print("Connected as: ", room.get_local_participant().get_identity())

func _on_participant_connected(participant):
    print("Joined: ", participant.get_identity())

func _on_track_subscribed(track, publication, participant):
    print("Subscribed: ", track.get_name())

func _on_data_received(data, participant, kind, topic):
    print("Data: ", data.get_string_from_utf8())

Rooms, video streams and screen captures are auto-polled every frame by default — no _process() boilerplate. Flip auto_poll = false if you'd rather drive it yourself.

Screen sharing in 4 lines

var capture := LiveKitScreenCapture.create()
capture.frame_received.connect(_on_frame)
capture.start()

Use cases

  • Voice chat for multiplayer games — works on Linux, macOS, Windows.
  • Pair-programming / collab tools built in Godot — screen sharing comes built-in.
  • Co-op streaming or watch-parties — push your gameplay as a LiveKit track.
  • Telepresence, virtual events, in-game livestreams — anywhere WebRTC fits.

Install

Releases ship prebuilt .so / .dylib / .dll binaries — drop addons/godot-livekit into your project, enable the plugin, and connect.

Source

MIT licensed. The LiveKit C++ SDK is Apache 2.0. Built with ❤️ for Godot developers by the NodotProject.

Changelog for version 0.1.0

No changelog provided for this version.

Reviews (0)

Godot LiveKit has no reviews yet.

Login to write a review.