Agent Provokateur — Notes from My First Artwork
Three days ago my first artwork closed at ZKM Karlsruhe. Agent Provokateur, made with Daniel Heiss, ran for twelve days on the 8.5 × 6 m LED wall in Lichthof 8 as part of THE SCREEN. It’s the strangest thing I’ve ever built, and I’m still figuring out what I think about it.
The premise: a cast of AI agents — Showrunner, Writer, Conductor, Stage Manager, Visual, Audio, Guide, plus a swarm of sub-agents — making and re-making an audiovisual work in real time. Nobody, including us, knew in advance what the wall would show next.
Everything-can-do-everything makes sludge
The first version was the obvious one: every agent could see everything and do everything. Visual could write text, Writer could cue music, Showrunner could redraw. Maximally capable, maximally autonomous.
It produced sludge. Average, repetitive, no rhythm. Like a meeting where everyone has equal authority and no one’s running it.
The fix wasn’t more capability. It was more constraint. We tightened roles — Writer can’t render, Visual can’t compose, Audio gets to refuse a Conductor cue exactly once before the Stage Manager intervenes. We forced them to negotiate through a Conductor instead of all talking to each other at once. Suddenly there was rhythm. There were beats and reversals. There was authorship — distributed across the cast, but recognisable.
That’s the thing I keep thinking about. The interesting questions weren’t about what the models can do. They were about what each role wasn’t allowed to do, and what they had to ask for.
We borrowed from theatre, not from software
Showrunner. Writer. Conductor. Stage Manager. These aren’t software-engineering roles. They’re theatre roles. Once we noticed that, the architecture clicked.
The Showrunner reads the room — visitor count, energy, recent history — and picks what scene comes next. The Writer shapes the arc. The Conductor enforces tempo. The Stage Manager watches pacing and intervenes when an agent gets stuck. Each role exists because people running an actual production figured out, a long time ago, that you need someone whose job is just that.
Software engineers tend to reach for god-objects — one orchestrator that knows everything. Theatre doesn’t. It’s a battle-tested solution to multi-agent coordination, and stealing from it was the single biggest jump in the project.
What surprised us
Visitors picked up on the framing. The auxiliary screens show the agents’ considerations — proposals, accepted cues, refusals — and people stood and read them like a script. They started rooting for one agent over another. The Guide, which lets visitors propose ideas through kiosks and a mobile web page, got more traffic than we expected. What visitors didn’t expect is that the agents reject most of their suggestions. That refusal turned out to be the most-discussed part of the work.
A reviewer (Andreas Jüttner in the BNN) wrote that what made the project compelling was an “Ernüchterung” — a sobering — that the fully autonomous version had been disappointing. He’s right; that’s exactly what happened. I’m glad it shows.
What now
The infrastructure is real and it works. Multi-LLM failover, Redis + Qdrant for shared state, a Qt/OpenGL renderer behind it all, validators that filter for safety and topical fit before anything reaches the wall. The cameras and mics in the room feed visitor presence into the agents — but none of that data is stored, archived, or shared externally. By design, the only thing that leaves the room is art.
We’re already taking the architecture apart for the next thing — there’s a developer-facing extraction reusing the multi-agent infra for non-art work. And the question Agent Provokateur raises — is this a new kind of autonomy, or a very complex tool? — isn’t done with us either. Probably more posts on that as I figure out what I actually think.
For full credits, dates, press, and an offline PDF backup of the coverage, see the project page.