A full production runs on the main stage. A second, complete production runs in another country — firing the same show, the same instant, locked frame-for-frame. This is how the mirror actually works, and why it's reliable over the open internet.
The core idea: don't stream the show — schedule it.
Most people imagine "remote control": push the lighting signal across the ocean and fire it the moment it lands. That fails — the public internet is fast but never perfectly steady, so the far end would stutter. We do the opposite. We send each moment's intention ahead of time, stamped with exactly when it should happen, and let the far side fire it locally, on a shared clock.
Not light. Not video frames. Not a control stream. Just small, time-stamped instructions:
{ at: 00:03:21:10 · look: "blood-red-tight" · transition: collapse 2s }
Because we send the intention rather than the raw signal, the messages are tiny, they're easy to deliver well ahead of their deadline, and the far-side rig doesn't even have to be identical — it reproduces the same look with whatever fixtures it has.
tiny messagestime-stampedrig-agnosticno DMX over the internet
The link carries scheduled intent + the master clock. That's it. The mirror does the firing itself.
The mirror runs a few seconds behind the real stage — on purpose. That buffer is what turns an unreliable connection into a flawless one:
The shaded window is the head start. Every instruction must only arrive somewhere inside it — not fast, not smooth, just before the deadline. Then both pips fire in lock-step.
00:03:21:10," which is in the mirror's near future.Because every subsystem schedules against the same clock with the same offset, they re-cohere at the mirror. A drop where the kick, the strobe, the video cut and the CO₂ all hit as one — hits as one at the mirror too, no matter which message arrived first or with what jitter. The buffer recombines them.
💡 lighting📹 video🔥 pyro💨 SFX🔊 audio accentsall on one clock
If a message is late or dropped, the mirror never freezes and never jumps. Each cue carries its own instruction for what to do if it misses the deadline:
| Policy | Behaviour if late | Used for |
|---|---|---|
| fire-late | Fire as soon as it arrives | A colour change — better late than never |
| hold | Keep the previous state | Safe default — no visible glitch |
| skip | Drop it entirely | A missed strobe stutter; forced for safety-critical cues like pyro |
On reconnect, the mirror re-syncs its clock gently — correcting drift a frame at a time so the audience never sees a jump.
The mirror has no interface to change programming in real time. It only plays what was already authored, via console output and input. There are no live buttons to fat-finger, no way to accidentally re-program a running show. All creativity happens earlier, in Author mode — a completely separate, offline tool that can never touch a live rig. You create there; you broadcast here.
The lighting mirroring is the easy 80%. The genuine engineering risk is the master-clock synchronization across countries — keeping the mirror's clock disciplined to the real one without jumps. It's a solved problem in broadcast, but it's the piece we design first, not last.
The show is authored once, as intention. Then it can be re-performed anywhere — every rig firing locally, all locked to one clock — as if the distance was never there.