MiroTalk BRO is a self-hosted, open-source platform for real-time live video, audio, and screen broadcasting to all connected viewers using WebRTC. Handles unlimited rooms with no time limits, each with one broadcaster and many viewers.
Try Live Demo Β· Documentation Β· Discord Β· Sponsor
β‘ Quick start
If BROADCASTING=sfu, ensure you have all the requirements installed.
Requirements install example for Ubuntu 24.04 LTS
apt-get update
apt-get install -y build-essential
apt-get install -y python3 python3-pipStart in 5 commands:
git clone https://github.com/miroslavpejic85/mirotalkbro.git
cd mirotalkbro
cp .env.template .env
npm install
npm startOpen http://localhost:3016 - done!
π³ Docker
Prerequisites: Install Docker Engine and Docker Compose - Image available on Docker Hub
git clone https://github.com/miroslavpejic85/mirotalkbro.git
cd mirotalkbro
cp .env.template .env
cp docker-compose.template.yml docker-compose.yml
docker-compose pull # optional: pull official image
docker-compose up # add -d to run in backgroundOpen http://localhost:3016 - done!
Note: Edit
.envanddocker-compose.ymlto customize your setup.
Camera backgrounds
In broadcaster Settings > Background, choose Off, Blur, or Image. Image backgrounds accept local PNG, JPEG, and WebP files up to 10 MB; images are not uploaded to the server.
Effects are processed in the broadcaster's browser and appear in the preview, P2P/SFU broadcasts, and recordings. Screen sharing bypasses effects and restores the selected background when returning to the camera. RTMP sources do not support browser camera effects.
Effects require WebGL2 and canvas stream capture. Blur also requires canvas filter support. The pinned MediaPipe runtime and WASM files (version 0.10.21) are lazy-loaded from jsDelivr, and the selfie model (version 1) is loaded from Google Storage on first use. Those hosts must be reachable and allowed by any custom CSP. Browsers can cache the assets normally. Initialization or processing failures show a warning and fall back to the camera without effects.
While effects are active, output is capped at 1280 x 720 and 15 FPS to limit processing cost. Off retains camera resolution and up to 60 FPS. Performance varies by device; keep the broadcaster tab visible to avoid browser throttling of canvas rendering.
π‘ RTMP upstream source
RTMP ingest lets a hardware encoder (Blackmagic ATEM, OSEE, OBS) act as the broadcaster. It requires SFU mode, FFmpeg, and MediaMTX.
Configure .env:
BROADCASTING=sfu
RTMP_ENABLED=true
RTMP_PUBLISH_TOKEN=my-secret-token
RTMP_SOURCE_URL=rtmp://127.0.0.1:1936
FFMPEG_PATH=ffmpeg
MEDIASOUP_ANNOUNCED_IP=127.0.0.1127.0.0.1 is only valid when viewers run on the same host. For remote access or Docker behind NAT, set
MEDIASOUP_ANNOUNCED_IP to the public IP address or hostname that viewers can reach and expose the configured
mediasoup UDP/TCP port range.
With Docker, add the optional MediaMTX overlay (P2P deployments can skip it):
docker compose -f docker-compose.yml -f docker-compose-mediamtx.yml up -dWithout Docker, install the external tools (brew install ffmpeg mediamtx on macOS) and start MediaMTX and MiroTalk in separate terminals:
mediamtx mediamtx.ymlnpm install
npm startIn OBS, choose Custom streaming service and use:
Server: rtmp://localhost:1936/live
Stream key: ROOM_ID?token=my-secret-token
Then open http://localhost:3016/viewer?id=ROOM_ID&name=Viewer.
See the RTMP upstream guide for hardware encoder settings, remote deployments, security, and tuning.
βοΈ Recommended Hosting Providers
| Provider | Description | Link |
|---|---|---|
![]() |
High-performance cloud servers and dedicated root servers with top-tier reliability. Powers our live demo. | Explore Hetzner |
![]() |
Enterprise-grade performance at unbeatable prices. Scalable and reliable. | Explore Netcup |
![]() |
Fast, reliable hosting with 24/7 support and great performance. | Check out Hostinger |
![]() |
Top-tier German hosting, dedicated servers, VPS, and web hosting at unbeatable prices. | Explore Contabo |
To set up your own instance of MiroTalk BRO on a dedicated cloud server, please refer to our comprehensive self-hosting documentation.
π€ Contributing
Contributions are welcome and greatly appreciated! Whether it's bug fixes, features, or documentation - every contribution helps.
- Fork the repository
- Create your feature branch
- Submit a pull request
Have questions? Join our Discord community!
π License
MiroTalk BRO is free and open-source under the terms of AGPLv3 (GNU Affero General Public License v3.0). Please respect the license conditions, In particular modifications need to be free as well and made available to the public. Get a quick overview of the license at Choose an open source license.
To obtain a MiroTalk BRO license with terms different from the AGPLv3, you can conveniently make your purchase on CodeCanyon. This allows you to tailor the licensing conditions to better suit your specific requirements.
β€οΈ Support the project
Do you find MiroTalk BRO indispensable for your needs? Join us in supporting this transformative project by becoming a backer or sponsor. By doing so, not only will your logo prominently feature here, but you'll also drive the growth and sustainability of MiroTalk BRO. Your support is vital in ensuring that this valuable platform continues to thrive and remain accessible for all. Make an impact β back MiroTalk BRO today and be part of this exciting journey!
π Explore the full MiroTalk suite (SFU, P2P, BRO, C2C, WEB, CME, ADM) β MiroTalk Overview
Built with β€οΈ by Miroslav and the open-source community






