OSC control
Answers to the well-known part of QLab’s addresses on port 53000, so a Bitfocus Companion or Stream Deck page made for QLab can press GO here.
Public alpha · built to run a puppet show at La MaMa
Open-source show control for live theatre and events. QLab’s cue list, a sound designer’s tools, OSC to the rest of the rig, and a show you can open in a text editor.
Free and open source (AGPL-3.0). Nothing to download yet. Built for macOS, Windows and Linux; so far run only on macOS.
01The cue list
If you know QLab you know this. One GO button, a playhead, and a list of cues that run in order. Everything around the button exists so that the right thing happens when you press it, and as little as possible happens when you press it by mistake.
02Sound
A show does not run to the second. A change runs long, an actor takes the pause, and the music has to wait without sounding like it is waiting. These tools come from how DJs and Ableton users deal with that. Here they are part of the cue list.
Not yet: microphones and live ducking in the mixer. They are on the list further down.
03Network
Everything Endless Cues says to other equipment, and hears from it, is OSC over the network. You name each piece of equipment once. Cues refer to it by name, so moving to another venue is one edit.
Answers to the well-known part of QLab’s addresses on port 53000, so a Bitfocus Companion or Stream Deck page made for QLab can press GO here.
Light cues fire cues on ETC Eos-family desks. The app shows whether the desk is answering, so you find out at the check and not at the top of the show.
The cue list and a GO button in the browser of any phone or tablet on the show network. There is no app to install.
Sends what the show is doing to a patch, for a tally light, a stage manager’s display or another computer.
Where it came from

a scifi puppetry myth for a post-human future
Endless Cues was built to run a puppet show. Endless Forms, by Endless Forms Puppetry, was created by Monica Lerch and Jeshua Bratman and had its world premiere at the La MaMa Puppet Festival in New York in November 2026.
It blends tabletop puppetry, shadow play, digital projection and electronic music, and follows Syx through a series of changes as she seeks a form always just beyond reach.
Partway through the production the show moved off QLab, and this is what replaced it. In the booth it was one operator and one cue list:
04The show file
A show is a folder. In it, show.json is the whole cue list as plain, pretty-printed JSON with its keys in a fixed order, so a diff shows what changed and nothing else. Open it in a text editor. Put it in git. Send it to someone who does not have the app.
{
"format": "endless-cues-show",
"version": 1,
"title": "Demo show",
…
"lists": [
{
"name": "Main",
"cues": [
…
{
"id": "c_28493eb8",
"notes": "On “…and the sky answered.”",
"type": "group",
"number": "3",
"name": "Thunder (rain ducks under it)",
"color": "orange",
"children": [
…
{
"id": "c_6aa41695",
"type": "fade",
"name": "Rain dips",
"target": "c_09dda5b8",
"db": -10,
"duration": 0.4,
"relative": true
},
…
]
}
]
}
]
}
0.00 s GO 2 Scene 1 — the storm arrives
0.00 s ▶ Rain plays (media/rain.wav) at silence on effects, looping
0.00 s ◢ Rain → -6 dB over 2 s
0.00 s ⇄ /eos/cue/1/2/fire → Lighting desk (example)
2.00 s ▶ Bell plays (media/bell.wav) at -4 dB on effects
2.00 s GO 3 Thunder (rain ducks under it)
2.00 s ▶ Thunder plays (media/thunder.wav) at 0 dB on effects
2.00 s ◢ Rain → -16 dB over 0.4 s
6.00 s ◢ Rain → -6 dB over 2.5 s
Still sounding afterwards: Rain at -6 dB (looping); Bell at -4 dB; Thunder at 0 dB
Standing by: #4 Beat
What pressing GO does, second by second, on the real cue engine with no sound and no waiting. ec validate lists what would not work on the night, and ec diff says what changed between two shows, cue by cue.
Save writes show.json and records a version, with a note written for you if you do not type one. Compare any version with the show as it is now and read the difference cue by cue, field by field. Restore one, and if that was wrong, undo the restore.
05The assistant
Describe a change in plain language: “duck the rain under the thunder and bring it back after four seconds.” The assistant is an agent. It works on a private draft of the show, in as many steps as the job needs, and hands you one change to review.
06Where it stands
This is a public alpha. The cue engine has run a real show; the app around it is new. Here is what you can count on, and what is not there yet.
Free, under the AGPL-3.0. The repository goes public with the first build. The show file format is free for anyone to implement, so your show does not depend on this app continuing to exist.
It runs entirely offline. No account. No telemetry. The booth computer never has to see the internet, and many should not.
Built for macOS, Windows and Linux, and the tests run on all three. The app itself has so far only been run on macOS.
macOS · Windows · Linux
None of this exists today. It is listed so you can tell whether Endless Cues fits your show now, and so you can tell us what matters most.
QLab is the industry standard, and it is excellent. It is also Mac-only, and a full licence is US$1,399 (November 2026). Endless Cues is for people who need Windows or Linux, want a show file they can read, or do not have that budget.
One request
Endless Cues is free. If you use it in a production, please credit Endless Forms Puppetry: a line in your programme or on your website is plenty.
A line you can use
Show control: Endless Cues, by Endless Forms Puppetry (endlesscues.com)
This is a request, not a condition. The licence is the AGPL-3.0 and it asks for nothing of the kind. It is how a small puppet company hears that its tool was used, and how the next show finds it.
Standing by
Write to [email protected] and we will tell you when there is something to download. Tell us what you run shows on, if you like. It helps decide what gets built next.