Standby console mirroring · macOS

The standby that's
already caught up.

Rack Mirror keeps a secondary Allen & Heath dLive MixRack tracking your primary live — every fader, mute and scene recall, replayed the moment it happens — verifies the standby is actually ready, and arms an automatic failover. A console going down shouldn't take the show down with it.

See how it mirrors Coming soon
Continuous mirroring, not just on failover· Developer ID signed· Allen & Heath dLive · Shure wireless
Mirroring live
Synced
B confirms every value A holds.
Why it exists

Most rooms run one console. That's the whole plan.

A dLive MixRack going down mid-show is rare — until the night it isn't. When it happens, the difference between a five-second handoff and a dead room is whether a standby was already caught up.

The problem

One rack, no net

A single point of failure sitting under the desk for the whole show, with nothing behind it unless someone built a backup by hand — and kept it current, every scene, every night.

The usual fix

A backup nobody trusts

A second console configured once at load-in, then never touched again. By the third scene change it's already wrong — which means it's worse than no backup, because it looks ready.

What Rack Mirror does

A standby that's honest about its state

The secondary tracks the primary continuously, and Rack Mirror only ever calls it ready when it actually is — never a guess, never stale.

What actually mirrors

Eleven parameter families, live, byte-exact.

Every family below replays on the secondary the instant it changes on the primary — not just the three most obvious ones. Turn any family off in the sync-selection page and it stops being pushed and stops counting toward drift.

Levels & routing
Faders
Every channel, DCA, and main level
Mutes
Channel, DCA, and main mutes
Sends
Aux / FX / matrix send levels
DCA assigns
Which DCA each channel feeds
Main assigns
Channel-to-main routing
Processing
HPF
On/off and frequency
PEQ
Type, frequency, width, gain
Preamp
Gain, pad, and 48V phantom
Labels
Channel names
Name strings, relabeled on takeover
Channel colours
Strip colour, matched on B
Show
Scene recall
The same scene, recalled on B

Byte-exact, not re-tapered

Levels, frequencies, gains and widths mirror as the raw wire byte the primary sent, not converted through a taper and back — which can shift a value by ±1. What B shows is what A sent, exactly.

Any family, on or off

Every family is on by default. Turn one off in the sync-selection page — say, leave PEQ untouched on the standby — and it stops being pushed and stops counting toward drift, on its own.

How it works

A writes to B continuously — whether or not failover is armed.

Mirroring isn't gated on arming. The moment both consoles are connected, every live move on the primary — across all eleven mirrored families — replays onto the secondary. Arming only decides whether a lost primary hands off automatically; it was never what turned mirroring on.

Synced

B has confirmed the exact value A holds. This key is caught up, full stop.

Pending

A write just went out to B. Inside the echo window, on its way — not drift.

Unknown

A has a value B has never reported. Not drift — B just hasn't offered it up yet.

Drift

Both values are known, and they disagree. Someone touched B, or a write went missing.

One direction, always

Rack Mirror only ever writes primary → secondary. A change made on the standby is never pushed back to A — it surfaces as drift, and the operator resolves it with a deliberate Sync.

A moved fader isn't drift

Calling an unconfirmed value "drift" would drop the mode out of ready the instant A touches anything B hasn't independently mentioned — which, on a live desk, is almost everything. So it doesn't.

Readiness

Four stages. The app never guesses which one you're in.

Readiness climbs one rung at a time — and drops the instant it should, not a beat later.

01

Not connected

One or both consoles aren't linked yet.

→
02

Not ready

Linked — but a key has drifted, or a link is down.

→
03

Ready

In sync, mirroring live. Failover isn't armed yet.

→
04

Armed

In sync, mirroring live, and a lost primary hands off on its own.

Auto-disarm on drift

If B changes while armed, Rack Mirror treats it as a safety event: disarms automatically and raises a red banner. A standby that's just been touched isn't one you hand a show to blind.

A hold before it fires

Failover doesn't trigger the instant the primary drops — it waits out a configurable hold first, long enough to ride through a brief network blip, before running the macros below.

Connecting

Priming a fresh link doesn't blast the standby.

What happens the moment a console comes online, before mirroring has anything to replay.

Baseline sweep, recorded not replayed

On connect, Rack Mirror sweeps every strip's fader and mute from both desks. The primary's snapshot is recorded, not pushed — so reconnecting after a restart surfaces any real A/B differences as ordinary drift for a deliberate Sync, instead of blasting A's whole state onto B the instant the link comes up.

MIDI channel verify

Each rack carries a configured base MIDI channel. Rack Mirror reads the desk's actual channel back off live CC/PC traffic and flags a mismatch — catching a misconfigured channel before it silently breaks the mirror, even when the saved setting is wrong.

Failover

The desk mirrors itself. Macros handle everything around it.

Rack Mirror already carries eleven live parameter families onto the standby in real time — so failover macros exist for what doesn't mirror on its own: the wireless receivers and IEM transmitters sitting outside the console.

Mute / unmute
Audio channel
Audio gain
Per channel, dB
Frequency
Retune a channel
Channel name
Relabel on takeover
Flash (identify)
Find the pack fast
RF output
Slot on / muted
RF power
Per-slot mode
Relay (iTach)
Contact closure
Recall scene
On the leader rack
Channel mute
dLive input
Channel fader
dLive input
Gated by hardware
See below

Filtered to what's actually plugged in

Available commands are gated per receiver model — ULX-D, Axient Digital, SLX-D — against what each one can actually do, not a generic list. An iTach IP2CC relay adds contact-closure triggers for gear outside the audio network entirely.

Honest about the gaps

The PSM 1000 isn't modelled yet, and Rack Mirror says so plainly in the macro editor — it never silently drops a command or pretends an unsupported device took the action.

Built right

The parts that don't show up in a demo.

The things that only matter the one night they matter.

Developer ID signed

macOS ties Local Network permission to the app's code signature. An ad-hoc build's hash changes every rebuild and the grant silently stops applying — Rack Mirror ships signed so it sticks.

Nothing fabricated

An unsupported device command reports as unsupported. A mirror value nobody's confirmed reads as unknown — never a guess dressed up as a fact.

Extracted, not rewritten

Split off the LiveLogix rule engine's mirror core on 2026-08-15 into its own standalone app — same engine, same MIDI layer, its own repo, its own release from here.

26 tests and counting

Engine state transitions, macro planning, channel mapping — covered before any of it meets a real console.

Sources: Allen & Heath dLive over MIDI-over-TCP· Shure ULX-D, Axient Digital, SLX-D· iTach IP2CC relays· Part of the LiveLogix family

Now watching the desk you can't afford to lose.

Rack Mirror is a real, working app — built, tested, and running against real hardware. It just isn't public yet.

Coming soon All LiveLogix apps