Real-time voice & video on infrastructure you control. Migrate an existing Agora Flutter app with a one-line import change — same classes, same callbacks, same error codes.
// the entire client migration: - import 'package:agora_rtc_engine/agora_rtc_engine.dart'; + import 'package:voxa_rtc_engine/voxa_rtc_engine.dart'; // plus one line at startup: VoxaRtc.serverUrl = 'https://gate.yourdomain.com';
Everything your Agora app already does — minus the per-minute bill.
1:1 clone of the agora_rtc_engine public API — factories, enums, widgets, numeric error codes, callback ordering.
Parity isn't a claim: callback sequences are recorded from the real Agora service and diffed against VoxaRTC in CI.
Runs on your servers. Your data, your regions, your costs — roughly 10–30× cheaper than per-minute pricing at scale.
AccessToken2 verified as-is; drop-in server token builders for Node & Go keep buildTokenWithUid() byte-compatible.
Participant-minute metering per project, kick/close-channel admin actions, and a web console.
LiveKit SFU under the hood: simulcast, auto-reconnect, screen share, congestion control.
Three moving parts, one docker-compose.
Gateway + LiveKit + Redis on any VPS. TLS via your nginx or bundled Caddy. docker compose up -d
Get an App ID + certificate from the console — the same concepts your Agora code already uses.
Change one line in the app, one line in the token server. Ship. joinChannel() just works.
Start free on your own hardware. Managed plans when you don't want the ops.
Early-access pricing — subject to change. Overage billed per additional 1,000 participant-minutes.