Apotheneum: Live

personal project
Artist
installation, performance
Java, LED, Hardware

Two live nights of light on the Apotheneum at Burning Man 2026, with Robot Heart and with FOSS. To make it possible I built two open-source tools, chromatik-mcp and mft-api, so I can express an idea and have it quickly implemented in collaboration with agents while I continue composing.

First frame of "The heart, from the controls to the cube"
The heart, from the controls to the cube0:30
Aug 24 → Sep 2. Aerial: Devon McLaughlin, @devonmclaughlin.

❯ I have a crazy idea. What if we could run the Robot Heart thing inside the cube? It would be just like a 3D rendering, spanning across. It's an orthographic projection looking from each side. … — Aug 24, 2:50 pm

❯ Squash and merge. It looks great. — 8:51 pm

The Apotheneum is a building-scale instrument: a 40×40×40-foot cube of LED net around a 30-foot cylinder, 26,560 light nodes, run by Chromatik. The heart is Robot Heart's sculpture, on top of their bus. The Twister is a Midi Fighter Twister, sixteen knobs.

Wednesday, September 2 — Robot Heart, at sunset

The cube lit pink in the dust, the crowd around it
The cube, the dust. Photo: C.J. Brion, @_cjbrion.
The crowd in front of the cube, lit pink, in the dust
The crowd. Photo: C.J. Brion, @_cjbrion.
Two silhouettes on the bus, the heart lit in the distance
From the bus. Photo: C.J. Brion, @_cjbrion.
Inside the cube, everything blue, the crowd holding up phones
Inside, blue. Photo: C.J. Brion, @_cjbrion.

Parra for Cuva and Orbit, then Jo.Ke. I was on the cube and the cylinder; Jasmine Sabio was on the heart.

Thursday and Friday nights, September 3–5 — FOSS

First frame of "FOSS, sunrise"
FOSS, sunrise0:28
Saturday, first light. Two clips, spliced.
First frame of "FOSS, the crowd"
FOSS, the crowd0:34
Friday night.
First frame of "FOSS, the cylinder"
FOSS, the cylinder0:13
The cylinder.
First frame of "FOSS, inside"
FOSS, inside0:18
Inside.
First frame of "FOSS, sunrise, inside"
FOSS, sunrise, inside0:10
Sunrise through the net.
First frame of "FOSS, sunrise, outside"
FOSS, sunrise, outside0:53
Sunrise, walking out.
An open case of modular synth modules and patch cables
FOSS's modular.
An upright piano opened up with synth modules built into it, a keyboard in front
More of FOSS's gear.
A handwritten setlist next to a sampler and a keyboard
The setlist.
A black modular case with white patch cables, the Expert Sleepers modules receiving the signal
My modular, where the signal from FOSS comes in: one Cat 7 cable between our two cases, a Doepfer A-180-9 Multicore at each end, into the Expert Sleepers.
The cube at dawn against an orange horizon
Saturday, first light.

Romain Collin, a few days later:

You were in it and you did it all the way until sunrise… you see the grass in the wind and the stuff — that blue is beautiful, the glacial blue against the orange, like cold and warm.

How it was built

First frame of "Ask for new knob colors; the Twister changes"
Ask for new knob colors; the Twister changes0:21
A chat asks for new knob colors; the Twister changes. From the mft-api README.
First frame of "Mapping the Twister by talking"
Mapping the Twister by talking0:21
Mapping the Midi Fighter Twister by talking.
First frame of ""move the camera to face a corner""
"move the camera to face a corner"0:28
"move the camera to face a corner"
First frame of "Tap tempo"
Tap tempo0:15
Tap tempo, on the bottom-right knob.
First frame of "Sample and hold"
Sample and hold0:17
Sample and hold.
First frame of "FOSS's recorded signals driving the visuals"
FOSS's recorded signals driving the visuals0:50
I recorded FOSS's modular signals in their studio, brought the whole recording home, and linked it to Chromatik. Their kick and snare driving the envelopes that power the visuals. August.
First frame of "FOSS feedback into a palette, through chromatik-mcp"
FOSS feedback into a palette, through chromatik-mcp1:46
Taking FOSS's feedback from the call and generating the palette with chromatik-mcp.

❯ I have a midi twister fighter. Do you have access to the API repository that we have? I want to figure out how to turn the bottom right knob. When you press it, the trigger does a tap tempo. — Aug 16, 9:04 pm

❯ check the transcript of my call with FOSS, from wispr. particular on the visual feedback mentions. extract what you can about it, cause I want to encode that feedback and incorporate it into the set — Aug 18, 9:46 pm

❯ You just delete the old swatches, and maybe we don't need three colors. Maybe we just need two. Why do we need three colors? — Aug 19

Excerpts from what came out of it three days later, a standing design file in the show repo, design/color-system.md. The quoted words are from the call:

Avoid primary vertices, not hues. Pure red, green, blue, yellow, white — "just really not very good for LEDs." The rule is distance from the vertex, not which hue: his own favorite hue is blue, and pure blue is his named example of what to avoid, while deep blue + cyan is the single frame he called "beautiful."

Depth comes from brightness, not desaturation. On LEDs, dropping saturation mixes in white and reads as washed out rather than deep. Keep field colors at saturation ≥ 85.

No white. "Underwhelming and cold… feels like a sound effect more than the actual show."

Composition = one hue-family field + one contrasting accent, the accent on fixed geometry and at a lower presence than the field. Two bright fields side by side is the explicit "terrible" failure, even when neither color is individually wrong.

Green is not accent-only. A cold, glacial teal/mint reads as a valid full field color. Saturated, grass-primary green is what's actually rejected.

Four days later the rules became code: PR #126, a base class with a primary and a secondary color role, so the patterns written after it draw from one global palette.

Aug 25, midnight

❯ Can you think of how we could design a fireball? It's like a point that moves out, and there's kind of like a sun, like an aura, like flames or little things in mini. When you move it, they're like the trail of stuff behind it … — 11:33 pm

❯ Could you make a pattern simulating a bunch of tall grass or weeds swaying in the wind? Are there common algorithms? — 11:39 pm

❯ Spin off subagents to implement this in Codex. In Codex, specify for each of them what the algorithm is. Each Codex thing runs in its own tmux session. — 11:42 pm

❯ as the agents are working Have them occasionally send you back animated gifs that they make to show progress. — 11:53 pm

The GIFs the agents attached to their own PRs, Aug 21–27, and the same patterns on the cube on September 2.

Robot Heart, cube exterior
Robot Heart · the agent's render · PR #118
First frame of "The heart on the cube, from the air"
The heart on the cube, from the air0:40
Robot Heart on the cube, September 2. Aerial: Devon McLaughlin, @devonmclaughlin.
Grass in a storm, cube exterior
Grass · the agent's render · PR #122
First frame of "Grass, in Chromatik"
Grass, in Chromatik0:49
Grass in Chromatik, on the rig, Aug 26.
First frame of "Grass, from the air"
Grass, from the air0:59
Grass on the cube, September 2. Aerial: Devon McLaughlin, @devonmclaughlin.
Waterfall, cube exterior
Waterfall · the agent's render · PR #93
First frame of "Waterfall, from the air"
Waterfall, from the air0:25
Waterfall on the cube, September 2. Aerial: Devon McLaughlin, @devonmclaughlin.
Fireball, cube exterior
Fireball · the agent's render · PR #124
Fireball with the palette hue modulated live
Fireball, hue modulated · PR #124
Jungle, cube exterior
Jungle · the agent's render · PR #130
Dunes travelling, cube exterior
Dunes · the agent's render · PR #129
Lava Lamp, cube exterior
Lava Lamp · the agent's render · PR #128
Vortex, cube exterior
Vortex · the agent's render · PR #95
Vortex, looking up from inside
Vortex, looking up from inside · PR #95
Rockfall, cube exterior
Rockfall · the agent's render · PR #94
The 64-control Twister template panel in Chromatik
64-knob Twister template · PR #114

Also #126, the primary/secondary color base class the later patterns draw from.

Aug 29–30

❯ … Maybe just try a couple patterns tonight so you don't burn too many tokens. See how it goes. I'm going to see how you did in the morning. — Aug 29, 12:36 am

❯ I want to take a step back. You've been really struggling with the mapping. Instead of you mapping the patterns, I'm just going to do it myself … — Aug 29, 5:41 pm

❯ How stupid are you? I'm so frustrated. … — Aug 30, 6:59 pm

❯ Sorry for being mean to you earlier. I'm pushing you hard. You're doing a great job. I couldn't have done this without you. You opened up a lot of possibilities for me, and I appreciate everything you've done. — Aug 30, 9:22 pm

The tools

chromatik-mcp — an MCP server inside the Chromatik lighting engine, so an agent can read, compose into, and debug a running show. MIT.

mft-api — read and write a Midi Fighter Twister's configuration from a chat. MIT.