SRT Router
Field testingA broadcast-router-style crosspoint for SRT: any number of inputs and outputs, each output live-switchable to one source, added and removed at runtime from a web UI. Pure relay, no transcode. NDI transport included.
Discipline
The plumbing under a multi-room event: transport that crosses networks you don't own, and machines that boot the same way every time.
This is the least glamorous category on the site and the one that decides whether any of the rest of it works. A twelve-room event is a network problem wearing an AV badge — media has to cross it, control has to cross it, and neither is allowed to notice the other is there.
Most of that work does not come out as a download. It comes out as a topology you can copy, a board that fills a gap in the signal chain, or a job somebody does on site. Only the genuinely reusable software is listed as a project here; the links further down go to the rest.
14 projects · 6 with builds to download
The parts of the plumbing that turned out to be reusable enough to publish.
A broadcast-router-style crosspoint for SRT: any number of inputs and outputs, each output live-switchable to one source, added and removed at runtime from a web UI. Pure relay, no transcode. NDI transport included.
Injects out-of-tree kernel modules into a SquashFS initrd and writes it to bootable removable media. You supply the image and the modules — useful when an installer doesn't know about your NIC or RAID card.
Everything else in the category.
A menu-bar tray launcher shell for the local web-server apps in this fleet. Pick a network interface and port, start and stop the server, open the web UI — without each app building its own.
A firmware patch for the BirdDog PLAY that adds a Tailscale panel to the System page of the decoder's own web UI, so a unit joins a tailnet from a browser instead of over SSH. It is the other half of the PLAY Patcher: that installs Tailscale but deliberately bakes in no auth key, because a key in a file the browser hands you is a key in cleartext — which left every patched unit installed but not signed in. Settings go through Tailscale's set command rather than up, so changing one preference does not silently reset the rest, and the panel declines to offer exit-node and subnet-route switches this kernel cannot honour: there is no TUN device, so Tailscale runs in userspace networking. Reads are open; writes are gated on a live birdUI session, because an open Tailscale API would let anyone on the LAN join the box to a tailnet of their own.
A browser page that flashes a BirdDog PLAY in recovery mode over WebUSB, and can inject a firmware package into the image on the way so the unit installs it by itself on first boot. It is the counterpart to the PLAY Patcher: the Patcher builds a package for a working unit, this one is for a unit that needs putting back.
A BirdDog PLAY is an NDI decoder with no way in from outside the room it is sitting in. This builds an installable firmware package that adds one: an SSH key, Tailscale, and an NDI KVM endpoint that turns the keyboard and mouse on the PLAY's USB port into control of whatever machine it is displaying. The surprise is that it needs nothing from you but a public key — the stock updater runs a script from the uploaded archive as root with no signature check, so a valid package is an ordinary gzip'd tar and there is nothing to decrypt. That means no upload, no vendor keys, and the whole thing assembles in the browser: tar, gzip and SHA-256 are native APIs now. The installer is readable bash that refuses to run on the wrong hardware, stays off the recovery path, and cannot reach the kernel or bootloader. Confirmed on a real unit — Tailscale carries 195 Mbps over userspace networking, and the KVM agent drove a Windows machine using only the free NDI SDK.
Bitfocus Companion module for flock decoder fleets.
Bitfocus Companion module for the srt-router crosspoint.
Snapshots every repo an account owns into per-repo JSON committed to git, and renders a password-gated dashboard from it — because GitHub keeps traffic for 14 days and reports stars and downloads only as a running total.
GL.iNet's self-hosted KVM cloud, extended so the same UI reaches ordinary machines too — VNC, RDP and xpra endpoints alongside the KVM devices it already managed.
The software half of a partyline intercom rig: a server that mixes, and endpoints with up to ten keys each. Every key is its own AES67 stream carrying either a partyline bus — minus that endpoint's own voice — or a direct point-to-point path.
Dockerfiles, compose files and Unraid Community Applications templates for the self-hostable apps in this fleet — all generated from two JSON files rather than written by hand.
An optional desktop client for the Stoatworks software — plugins, tools, applications and Companion modules. Shows what you have installed and what has an update, and installs each one in whichever formats you use: FFGL for Resolume, OpenFX for Resolve, After Effects, VST3 and Audio Units for a DAW. It keeps itself up to date too. No account, and nothing sent anywhere.
A browser-based installer for LineageOS and other alternative Android systems. It speaks fastboot and ADB over WebUSB, reads the codename, firmware version and lock state off the connected handset, and generates the install procedure for that exact device — the extra partitions it needs, the stock firmware it expects, the unlock command it actually takes. The device data is generated from the LineageOS wiki's own files rather than transcribed from them, so all 733 devices the wiki documents are covered: 554 get a full procedure, and the other 179 are told plainly that no browser can flash them. Files dropped in are hashed in the page and checked against the official SHA-256 for that build before anything is written, and every automated step prints the adb and fastboot commands it stands in for — so it is still a correct, ordered, device-specific command list in a browser without WebUSB. Verified end to end on a Pixel 4a, from bootloader unlock through to a booted LineageOS.
The first is that a feed has to reach several places at once, over a network you do not control, and the destinations change during the event. Doing that with a stack of point-to-point encoders means reconfiguring endpoints live, which is exactly when you least want to. A crosspoint — any number of inputs, any number of outputs, each output switchable to any source at runtime, relayed rather than transcoded so switching costs nothing — is the mental model everyone already has from a video router, applied to stream transport.
The second is that a machine has to boot the same way every time, on hardware whose vendor image has never heard of your NIC or your RAID card. Patching an initrd by hand with unsquashfs and mksquashfs quietly produces a broken image, because a non-root round trip loses ownership and drops setuid bits and nothing tells you until it fails to boot in the truck.
Because infrastructure is mostly specific. The valuable output of a large multi-room build is the topology, the addressing plan and the decisions about what shares a VLAN with what — and those are documents, published anonymised as a reference rather than dressed up as an application nobody could run.
The other half is hardware. An inline repeater, a PoE DMX node or a stagebox is the honest answer to a physical-layer problem, and pretending otherwise by writing software around it helps nobody. Those live on the hardware page.
The whole catalogue
The full index carries every project at once, searchable and filterable by discipline, type and how finished it is — including the disciplines that don't yet have a page of their own.