Bunryu

Bunryu (分流, "branching flow"): self-hosted restreaming server. RTMP, SRT and bonded SRT inputs forwarded to many RTMP/SRT destinations, with watchdogs and translation audio mixing.

50TypeScriptMIT licenseUpdated 2026-10-18
bondingbunryudaisyuidockerffmpeglive-streaminglivestreammultistreamingnodejsobsrestreamingrtmpself-hostedsrssrtsrt-bondingtypescriptyoutube-live
On this page
  1. Features
  2. Quick start
  3. Documentation
  4. License

Bunryu (分流, "branching flow"): one live stream, many destinations.

CI License: MIT Website

Self-hosted restreaming server for long live events. Take inputs over RTMP, SRT and bonded SRT, and forward each one to many RTMP/RTMPS/SRT destinations (YouTube, Facebook, Twitch, CDNs) from one Linux server. Watchdogs restart a failed output without affecting the others.

Built on official SRS for ingest, goryu for bonded SRT ingress, and FFmpeg for outputs, with a Node.js + TypeScript control plane, web dashboard and REST API.

Install Try with Docker Documentation

Bunryu dashboard: a pipeline with live preview and seven running outputs

Features

  • Ingest over RTMP, SRT and bonded SRT, with stream-key authorization and passphrase-protected SRT.
  • Forward each input to many RTMP, RTMPS or SRT destinations: up to 50 inputs and 500 outputs per server. Copy-mode (passthrough) outputs cost almost no CPU.
  • Transcode a few outputs to 720p, 1080p or a rotated vertical feed for Shorts/Reels, and select audio tracks per output, including multi-track SRT outputs. Outputs that need the same encode share one FFmpeg, so ten 720p outputs cost one encode, not ten.
  • Mix translation audio (beta) from an interpreter's pipeline over the source, with speech detection, ducking, delay and restore timing. If the translator drops, the output continues with source audio.
  • Recover automatically: stall, socket and memory watchdogs with bounded restarts. One failing destination never affects the others.
  • Keep post-incident evidence: per-output Error History with FFmpeg stderr tails, grouped timestamp warnings, and rotated structured diagnostics.
  • Watch everything in a live dashboard: HLS preview, ffprobe media details, bitrates, host and per-process CPU/RAM/network charts, and copy-ready publish URLs.
  • Restart safely: SRS accepts publishes only once the control plane is ready, and all configuration persists in SQLite.

Overview page with host charts and per-process resources

Quick start

Try it with Docker:

git clone https://github.com/live-miracles/bunryu
cd bunryu
docker compose up -d
docker compose logs bunryu | grep "dashboard password"

Open http://localhost:8080, log in with the printed password, create a pipeline and publish to the URL the dashboard shows.

Install on a server (Debian/Ubuntu, x86_64, systemd), the recommended setup for production:

sudo git clone https://github.com/live-miracles/bunryu /opt/bunryu
sudo bash /opt/bunryu/scripts/server-install.sh

The installer prints the dashboard password. See Native install for firewall ports, updates and the SRT passphrase, and Remote access for reaching the dashboard securely.

Documentation

License

MIT. SRS, goryu and FFmpeg are separate projects under their own licenses.