BlackMatrix
An ATEM fleet as one router, with failover

What it does
An ATEM doesn't have one thing you could call a router, so this treats every bus that takes one source at a time as a destination: the aux outputs, program and preview on each ME, upstream and downstream keyer fill and key, every SuperSource box plus the art fill and key, and every multiviewer window. On a Mini Extreme ISO that's 29 sources by 39 destinations, across as many switchers as you point it at.
Which sources are allowed on which destination comes off the switcher itself, not from a per-model table. Every input reports an availability mask, and the app draws the illegal cells hatched and refuses them on the server. That's what stops an aux output being routed back onto an aux bus, or ME 1's own output onto ME 1, without anybody having to maintain a compatibility chart.
The second half is protocol emulation. Each switcher also gets a Videohub Ethernet Protocol v2.3 server, so a hardware router panel, Companion's Videohub surface or Blackmagic's own software can drive the crosspoints without ever finding out there's an ATEM on the other end.
An ATEM already serves that protocol itself on TCP 9990. Read back to back, the two agree on every destination they share. Blackmagic's own server offers five outputs: Output 1, Output 2, Webcam Out, Program and Preview. This offers the other thirty-four. If five is all you need, use the switcher's own.
Between the switchers and the router there are cables, and nothing on the network knows which. Wiring is where you write them down (router outputs into switcher inputs, switcher auxes back into the router), and once it knows, a cabled input says what it's actually carrying, however many boxes upstream the picture starts. Route through then routes end to end: a router input straight onto a switcher bus, or a switcher output through the router to a screen. It plans the crosspoints, tells you everything else they'd change, and sends them upstream first, stopping at the first refusal, so a switcher never gets cut to a cable that didn't get the picture.
The third half is redundancy. A failover watch polls a machine (a TCP port, a URL, or a heartbeat it has to be sent) and fires an ordinary salvo when it stops answering. That's the whole safety argument: the failover is the same button an operator can press by hand, so you can rehearse it before the show instead of discovering it during one. It won't fire until it's seen the machine working at least once, it starts disarmed, and it won't switch back unless you tell it what back means. For rigs where the media server drives the router itself (disguise's understudy sends matrix routing on failover, PIXERA fires a control action at a matrix switcher), the Videohub emulation is the target, and there's a plain-text line protocol on TCP and UDP for anything that can send a string but can't speak Videohub.
There's a browser simulator with a device library, a mock fleet of three switchers that are different on purpose for development, desktop builds that bring their own Node runtime, a container, and native iOS and Android shells that find the server for you, though neither of those has run on a physical device yet. A real Blackmagic Videohub can join the fleet as a device, not just as a client, so one grid covers both.
Where it stands
Released at v0.4.2, another security fix in a library underneath (body-parser 2.4.0, where one malformed compressed request could crash the server) and, again, nothing you'd notice in use. v0.4.1 was the same story for proxy-addr 2.0.8. v0.4.0 added Wiring and Route through. Write down how the router and the switchers are cabled, and a cabled switcher input says what it's carrying, while a route goes end to end (a router input straight onto a switcher bus, or a switcher output through the router to a screen), planned, with everything else it would change named, and sent upstream first, stopping at the first refusal. Those have only run against the simulated fleet so far. v0.4.0 also made a claim taken on a real Videohub show up straight away. v0.3.4 made it start again: v0.3.1 to v0.3.3 stopped at launch after an Express 5 upgrade, and CI now boots the built server on every push, so a build that can't start can't ship. v0.3.3 was a launcher release: the tray app now says why a start failed (another copy already holding the port, or a server that died after starting), where before it said Running and then went to Stopped without a word. v0.3.2 made the macOS launcher one universal build instead of two per-arch ones, and v0.3.1 made quitting the tray app stop its server, closed four dependency advisories and put the simulator up at blackmatrix-demo. v0.3.0 added the five command languages, and it has now run a live event against a real ATEM, not only been checked on the bench. Before that it was checked against a real ATEM Mini Extreme ISO, which corrected the code rather than confirming it. After 80 probe tests across all sixteen windows, multiview windows 1 and 2 turned out not to be fixed to program and preview, and the switcher reports one multiview window when it has sixteen. The multiview routing is verified on hardware; the aux buses aren't. Their aux-only availability bits were read off the masks and the aux-kind source IDs, and never watched against what an aux output actually did. Its matrix was then served over the Videohub emulation as a 29x39 router. On 2026-10-04 it ran a live show with a real Smart Videohub 12G 40x40 as one of its devices, next to an ATEM 4 M/E Constellation 4K, and held up. What's never happened is a real Videohub control panel driving it. The macOS builds are signed and notarised. The Windows builds aren't signed, so SmartScreen warns once. macOS asks for local network access on first run: say yes, or it won't find any switchers.
Watch it running
Nothing loads from YouTube until you press play.Watch it there instead