A single-screen control panel for IRL streaming that runs on the router in your backpack — with SRTLA modem bonding, encoder control, GPS, weather, chat, and a visual live-overlay designer. Bond every SIM and Wi-Fi uplink, control what is on air, and build your graphics from the same page you pull up on your phone mid-stream. No laptop, keeps working on cellular.
IRL Dashboard is currently available only by personal invitation. Each invited person receives a unique, one-time install link that expires after the dashboard package downloads successfully.
Invitations are issued directly or by request. To politely request one, email [email protected] and include your use case, who referred you, and your level of expertise with streaming technology.
This address is not for technical support, and no technical support is currently offered. Requests without the required details, including single-line emails, will be deleted.
Your invitation page provides the personalized command to run over SSH or in the LuCI terminal. The invitation is consumed only after the protected dashboard package downloads successfully.
It installs PHP, downloads the dashboard, adds a location /streaming/ block to your router's existing nginx server, and — on the Mudi 7 — installs the SRTLA bonding sender. Then open:
http://YOUR-ROUTER-IP/streaming/
It runs on the port your router already serves its admin UI on, so there is no second port to bind and nothing to conflict with. The installer backs up your nginx config before touching it and restores it automatically if the change is rejected or nginx fails to come back up.
The first visit lands on the Settings screen. Fill in what you use, press Save. Done.
No SSH and no text editor after that one install command — the whole setup works from a phone, which is where you want it mid-stream.
The private command streams the installer directly to the router. Its separate package ticket expires after ten minutes and after one successful use.
/overlay, and the router online so opkg can fetch PHP.Every part of this stack was picked for a reason, and almost all of it is optional. Here is the honest version, including what you give up by dropping each one.
srtla_rec. Leave the Restreamer settings blank and that tab disappears.None of these are required, and that is rather the point: the value is not any one of them, it is all of them on one screen. Your bitrate, your modems, your camera, your chat, your location, your weather and your publishing are normally seven separate apps on a phone you cannot look at while you are walking and talking. Here they are one page, on the router in your backpack, that keeps working on cellular with no cloud service in the middle. Turn on the parts you use and ignore the rest — every tab you leave unconfigured simply is not there.
The Bonding tab turns every modem, tethered phone and Wi-Fi uplink into one resilient stream. It's automatic: plug an uplink in and it joins the bond; unplug it, or lose service, and it drops out — no menus, no per-link fiddling. When one link stutters the others carry it, so your stream rides through dead spots that would drop a single modem.
Director Mini (SRT) → router (srtla_send, bonds all uplinks) → internet → srtla_rec → Restreamer → YouTube / Twitch / KickPhones can join the bond too. The Bonding tab supports Moblink — install the Moblink app on any spare Android phone, join it to the rig's WiFi, and it relays its cellular data into the bond as another link. Turn it on in the Bonding tab, set a pairing password, and the app should find the router automatically; the tab lists the phones currently connected. It is the cheapest way to add carrier diversity — a friend's phone on a different network becomes an extra uplink for as long as they are standing near you, with no extra hardware to buy.
The bonded stream must be put back together on a machine with a public address — the receiver. We ship it as a Docker package you run on any always-on box (home server / NAS / VPS):
srtla_rec + datarhei Restreamer, one docker compose up. Guide · docker-compose.yml · receiver.tar.gzPoint the Bonding tab's Receiver host / Receiver port at that box, add the Director Mini as an SRT Caller to the router, and press Start bonding. The tab shows every uplink, live throughput, and a timestamped connection log.
Everything is configured in the browser — the gear icon in the tab bar, or /settings.php directly.
Every setting is optional. Leave one blank and the dashboard hides that tab rather than showing you something broken. Set your router IP, press Save, then add the rest as you go.
Settings are stored as plain JSON in /etc/irl-dashboard/settings.json — deliberately outside the web root, so they can never be served over HTTP. Nothing typed into the form can become executable code. Each field carries a note on where to get that credential.
| Setting | What it turns on |
|---|---|
| Router IP | Router connection health, venue Wi-Fi repeater controls, and Network / Modem diagnostics |
| SRTLA receiver host + port | Modem bonding target (Bonding tab) |
| Director Mini IP (+ user/pass) | Magewell Director Mini tab — live Program preview, scenes, GFX, streams, screen brightness (Auto-scan finds it on your LAN) |
| Restreamer API address, user, password | Publishing destinations, their health, and live ingest statistics |
| Restreamer web UI URL | Button to open the full Restreamer configuration when advanced changes are needed |
| Premium multi-platform chat | Native timestamped Chat tab with optional viewer avatars, separate connection settings, protected browser-source chat overlay, and host-triggered Highlight overlay |
| WeatherAPI key + location | Weather readout and overlay (free key from weatherapi.com) |
| GPS sending | GPS tab, live map + track, distance/estimated-step counter, and GPS stream overlay |
| YouTube API key + channel ID | YouTube live lookup |
| X username + bearer token | X post engagement |
| DJI camera | DJI tab — pair over BLE, choose stream quality and stabilization, then send to an RTMP destination or run directly through the Mudi and bonded SRTLA with no external encoder |
| Remote producers | Router tab — copy a private Tailscale dashboard link for approved remote operators |
| Quick links / confirm-first buttons | Your buttons on the Links tab (with optional "are you sure?" for webhooks) |
Use the built-ins or design your own. GPS, maps, weather, hourly forecast, radar, lightning, clock, stopwatch, Chat, and Featured Chat are ready to use. The visual designer adds text, live router values, uploaded artwork, icons, shapes, animations, and seamless scrolling tickers on a true 16:9 stage.
Turn any browser JSON API into a live graphic. Paste a URL and the designer discovers nested repeating data and available fields. Pick what is displayed, add before/after labels with independent styling, filter and sort rows, and arrange them as a list or continuous ticker. The encoder fetches fresh data while the overlay is live; the API must allow browser requests through CORS.
One browser source can run everything. Add the optional all-in-one URL to OBS or the Director Mini once, then use the dashboard switches to show and hide individual overlays without touching the encoder. You can still send separate overlays directly to OBS or the Director Mini when you prefer independent encoder layers. The Director Mini migration replaces dashboard-managed webpage GFX with the shared source without touching native titles, logos, or other graphics.
Move designs between rigs. Export or import a complete custom overlay, including its layers and uploaded artwork. API layers also have their own smaller presets for copying a configured feed, filters, styles, labels, scrolling, and placement into another design.
Re-run the same install command. It replaces the app files and the bonding binaries, and never overwrites your settings.
Keep the operational guides with the release: documentation index · Chat operations · overlay reference · architecture and security · deployment and recovery · release history.
sed -i '/# >>> irl-dashboard >>>/,/# <<< irl-dashboard <<</d' /etc/nginx/conf.d/gl.conf
rm -rf /www/streaming /etc/irl-dashboard
rm -f /etc/sudoers.d/irl-dashboard /etc/sysctl.d/99-srtla.conf
rm -f /usr/bin/srtla_send /usr/bin/srtla-bond.sh
crontab -l 2>/dev/null | grep -v irl-dashboard | grep -v srtla-bond | grep -v /www/streaming | crontab -
/etc/init.d/nginx restart
Or restore the backup the installer made on its first run: cp /etc/nginx/conf.d/gl.conf.irl-dashboard.orig /etc/nginx/conf.d/gl.conf
settings.json holds your API keys in plain text on the router; it lives outside the
web root at mode 600, owned by the web user.
gl_modem, ubus,
dmesg, srtla-bond.sh), in /etc/sudoers.d/irl-dashboard — never a
blanket rule. That is what makes the Modem, Network and Bonding tabs work. Delete that file to revoke
it; the rest of the dashboard carries on fine.
The Modem controls are GL.iNet-specific: they use /usr/bin/gl_modem, so on other OpenWRT hardware the dashboard can still run but those controls are unavailable. The Magewell Director Mini API is beta and Magewell can change it in a firmware update.
README.md · docs · install.txt · receiver
It's free and stays free. Donations help cover hosting and build time — but to be clear, a donation is a voluntary gift, not a purchase. It buys no support, no warranty and no priority, and it's non-refundable. Only give what you're happy to give away.
Donate via Stripe