MiroTalk SFU: Self-Hosted WebRTC Video Conferencing on Your Own Server
🏆 Self-hosted, open-source WebRTC video conferencing platform for real-time communication and collaboration. A modern alternative to Zoom, Google Meet, Jitsi Meet, and Microsoft Teams, powered by scalable SFU architecture with Mediasoup.
At a glance
- What is it?
- MiroTalk SFU is an open-source, self-hosted video conferencing platform built on the Mediasoup SFU library, designed for teams that need full control over their data and infrastructure. It covers video up to 8K, screen sharing, recording, AI integrations, and RTMP streaming, but its AGPL-3.0 license and Mediasoup native build requirements carry operational implications worth understanding before deployment.
- Who is it for?
- MiroTalk SFU fits development teams and privacy-conscious organizations that need a fully controlled video conferencing server without cloud vendor dependencies. Organizations that deploy a modified fork to serve external users must publish their source changes under AGPL-3.0; the one-time license on CodeCanyon covers commercial use without that obligation.
- Can I use it commercially?
- Yes, with strict conditions. AGPL-3.0 is a network copyleft licence: if people use a modified version over a network, for example as a hosted service, you must offer them its source code under the same licence.
- Is it still maintained?
- Yes. The repository last received commits 6 days ago.
- What is it written in?
- Mainly JavaScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 25, 2026, and from our analysis. They are not legal advice.
Editorial analysis
SFU Architecture and What Mediasoup Provides
MiroTalk SFU is a self-hosted video conferencing platform built around Mediasoup, an open-source WebRTC SFU library. SFU stands for Selective Forwarding Unit, a server that receives media streams from each participant and forwards them selectively to others rather than mixing them into a single combined stream. Each sender transmits one stream to the SFU; the server routes individual streams to each receiver, which means clients decode multiple inbound streams but the server avoids the CPU cost of re-encoding. This architecture scales more efficiently than a peer-to-peer mesh, where every participant sends directly to every other participant, but it requires a server with sufficient bandwidth and CPU to handle stream forwarding at scale.
The project runs as a Node.js application with a native C++ Mediasoup worker process compiled from source during installation. This is why the setup requires build-essential, python3, and ffmpeg in addition to Node.js itself. The README states the project has been tested with Node.js version 22.X. The package.json names the current version as 2.4.98, though the repository has published no GitHub releases and carries no tag history.
Video, AI, and Streaming Capabilities
The README lists feature clusters that go significantly beyond basic video calling. Video can run at up to 8K resolution at 60 frames per second, with screen sharing, recording, and picture-in-picture also supported. The chat system handles Markdown and emoji, alongside a collaborative whiteboard and a rich text editor. File sharing is built in.
On the AI side, the platform integrates with OpenAI ChatGPT and DeepSeek, and includes VideoAI avatar support and speech recognition. For authentication and access control, the README documents OIDC auth, JWT credentials, room passwords, a lobby for controlling who enters, spam mitigation, and a host protection feature with its own documentation page. The integration surface includes a REST API, Slack, Discord, and Mattermost connectors, iframe and widget embedding, and built-in RTMP streaming through an nginx-rtmp docker-compose setup. The platform supports 133 languages. The README comparison table notes that no time limits are imposed on sessions, unlike the 40 to 60 minute caps on free tiers of commercial services.
This feature breadth makes MiroTalk SFU one of the more comprehensive open-source conferencing options available, but the operational surface that comes with maintaining it is correspondingly larger.
Quick Start and Docker Deployment
The README provides a six-command quick start sequence for running the platform locally:
git clone https://github.com/miroslavpejic85/mirotalksfu.git
cd mirotalksfu
cp app/src/config.template.js app/src/config.js
cp .env.template .env
npm install
npm startOpening https://localhost:3010 after the start command loads the application. The two copy steps for config.template.js and .env.template must run before starting; the server will not start without those files in place.
For Docker deployment, the prebuilt image is available as mirotalk/sfu:latest. The package.json includes this docker run command, which maps the media port range and the HTTPS interface:
docker run -d -p 40000-40100:40000-40100 -p 3010:3010 -v ./.env:/src/.env -v ./app/src/config.js:/src/app/src/config.js:ro --name mirotalksfu mirotalk/sfu:latestPorts 40000 through 40100 carry UDP media traffic. Port 3010 serves the HTTPS application. The Dockerfile sets the environment variable MEDIASOUP_SKIP_WORKER_PREBUILT_DOWNLOAD=true, which means the Mediasoup C++ worker is compiled from source during the Docker image build rather than downloaded as a prebuilt binary. This adds several minutes to build time but avoids binary compatibility issues across architectures. The base image is node:24-slim.
AGPL-3.0 and the Commercial License Path
The AGPL-3.0 license carries implications that differ from the MIT or Apache licenses common in developer tooling. Under AGPL-3.0, any organization that deploys a modified version of MiroTalk SFU to provide a network service must publish their modifications under the same license. This means a company that forks the repository and runs a branded conferencing service for external users is required to release its source changes publicly. Internal deployments where no external users access the service fall under a different reading, but the boundary is not always clear in practice.
The README comparison table under the Cost row links to a one-time fee license available on CodeCanyon. That license covers commercial and white-label use without the AGPL source-sharing requirement. The README also describes MiroTalk SFU as "white-label ready" in the comparison table, referencing full access to the source code. Organizations evaluating the platform for a product should determine which license path applies before beginning any customization work.
What MiroTalk SFU Does Not Document
The README does not state a per-room participant limit. The comparison table describes the platform as supporting unlimited concurrent rooms and characterizes the mediasoup SFU architecture as scalable, but no maximum number of participants per room is given. Operators who need a guaranteed ceiling for planning hardware must test under load conditions on their own infrastructure.
The repository has published no GitHub releases. The version string 2.4.98 appears in package.json, but there is no tag history for tracking changes between specific versions. Engineers who need to audit a change to a snippet or a configuration option have only the commit log.
The media port range 40000 to 40100 must be open for UDP traffic in any firewall or cloud security group. In environments that restrict UDP port ranges or use strict egress rules, this is a deployment constraint to plan around. The README lists an install.sh script at the repository root for automated setup on compatible Linux distributions, but the script contents are not detailed in the available documentation.
Comparing with Jitsi Meet and Maintenance Status
Jitsi Meet is the most commonly referenced open-source alternative for self-hosted WebRTC conferencing. It is Apache-licensed, which does not carry the AGPL source-sharing requirement. Jitsi uses its own Jitsi Video Bridge for media routing rather than Mediasoup, and it has a longer public history with a broader contributor base and more extensive third-party documentation and deployment guides. Teams for whom AGPL is a concern and who do not need ChatGPT or RTMP integrations may find Jitsi Meet a simpler starting point.
MiroTalk SFU distinguishes itself in the README by claiming 8K video support, built-in ChatGPT and DeepSeek integration, VideoAI avatars, and RTMP streaming with OBS as a built-in capability rather than a third-party addition. For use cases that specifically require those features in a self-hosted deployment, MiroTalk SFU covers ground that Jitsi Meet does not address out of the box.
MiroTalk SFU's last recorded push to the main branch was on 2026-09-25. The repository is not archived.
Editorial conclusion
MiroTalk SFU fits development teams and privacy-conscious organizations that need a fully controlled video conferencing server without cloud vendor dependencies. Organizations that deploy a modified fork to serve external users must publish their source changes under AGPL-3.0; the one-time license on CodeCanyon covers commercial use without that obligation. Before deploying, confirm that ports 40000 to 40100 UDP are open in the firewall and that the host has build-essential, python3, and ffmpeg available for the Mediasoup worker compilation.
Frequently asked questions
What is MiroTalk used for?
MiroTalk SFU is a self-hosted, open-source video conferencing platform for real-time communication and collaboration. The README describes use cases including video calls up to 8K, screen sharing, session recording, collaborative whiteboard sessions, and RTMP streaming for broadcasting via OBS-compatible tools.
What does SFU stand for in WebRTC?
SFU stands for Selective Forwarding Unit. In MiroTalk SFU, it refers to the Mediasoup server architecture that receives a media stream from each participant and forwards individual streams selectively to other participants, allowing the server to scale without mixing or re-encoding the media.
Is MiroTalk safe?
The README documents OIDC authentication, JWT credentials, room passwords, a lobby for controlling who enters, spam mitigation, and a host protection system with its own documentation page. Self-hosting means data stays on the deploying organization's own server rather than a third-party cloud.
How many people can join a MiroTalk call?
The README does not state a specific per-room participant limit. The comparison table describes the platform as supporting unlimited concurrent rooms and the Mediasoup SFU architecture as scalable, but no maximum participant count per room appears in the available documentation.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/miroslavpejic85-mirotalksfu)