A distributed real-time lighting control system for the Sindalah island development, NEOM. One Surface Pro tablet running a Unity frontend orchestrates 13 networked TouchDesigner machines (plus a master node) over MQTT, driving 42 LED-illuminated towers across the island. Designed, built, and deployed on-site as solo software engineer in three weeks.
Sindalah is the first completed island of the NEOM development on the Red Sea coast of Saudi Arabia. Across the island, 42 architectural towers, glowing marble monoliths, illuminated entrance pillars, sculpted obelisks, are lit by programmable LED arrays. Each tower is wired to one of 13 building-level Asus PCs distributed across the site, all interconnected over LAN to a master coordinator and a single tablet that runs the show.
I designed the software stack end to end: the Unity-based operator interface on the Surface Pro, the TouchDesigner control runtimes on every building PC, the MQTT pub/sub layer that ties them together, the DMX output that drives the actual fixtures, and the on-site network configuration that made it all reliable in production.

Three layers: a single operator surface, a distributed control fleet, and the physical lighting hardware.
Operator Distributed runtimes Physical
┌──────────────────────────────────────────────────────────────────────────┐
│ Surface Pro │
│ Unity tablet MQTT Master PC LAN │
│ control panel pub/sub (coordinator) broadcast │
└──────────────│────────────│──────────────│───────────────────────────────────────────────────────────────────────────────────────────┐
│ │ │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
Building PC 1 Building PC 2 … Building PC 13 │
TouchDesigner TouchDesigner TouchDesigner │
MQTT subscribe MQTT subscribe MQTT subscribe │
DMX output DMX output DMX output │
│ │ │ │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
42 LED towers, grouped by building, addressed by fixture ID
(marble pillars, obelisks, stair washes, facade strips)The Unity tablet does not talk to the lights directly. It publishes intent ("Building 13, scene A, tempo 0.7") to MQTT. The relevant TouchDesigner instance subscribes to its building topic, translates the intent into per-fixture DMX values, and streams them out over the lighting protocol. The master PC handles fleet-wide synchronisation and any cross-building scenes that need to play in unison.
This is the same architectural shape as the agent ecosystem behind Soup and the channel-adapter pattern behind Relay: one orchestration brain, many specialised runtimes, message bus in the middle. NEOM is the version where the runtimes are physically distributed across an island and the output is real light.
Each building PC runs an identically-structured TouchDesigner project, parameterised by its building ID. The project subscribes to its MQTT topic ("Building13"), receives commands, runs them through a switching layer, looks up the correct DMX channel ranges for that building's specific fixtures, and outputs to the lighting controllers.

The reason each building is its own project instead of one giant fleet project: failure isolation. If a building loses network or a PC reboots, the rest of the island keeps running. The master PC notices the missing subscriber and the operator sees that one building dropped, but Buildings 1 through 12 carry on without interruption.

The physical scale matters because it shaped every engineering decision:
I was on-site at Sindalah for the three-week deployment, coordinating with the lighting team and commissioning every building one by one. The construction-phase photos give a sense of what the towers actually look like, glowing through translucent marble, washing illuminated stair treads, internally lit obelisks acting as architectural landmarks.


