The player
A finished piece is a self-contained bundle that runs in a browser, or on the desktop and headless players built from the repository.
A bundle holds the whole graph plus the media it needs, and playing it back cooks and renders every frame live rather than replaying a recording. There are three players. Only one of them is something you can hand to someone else today.
Getting a bundle
There is no Player or Bundle target in the Export panel. The one bundle a user can produce is the project.ntbundle written inside a Full App web export, alongside the page that loads it. See Web export. It holds the graph, the subgraph definitions it uses and the media files both refer to, which is what makes it playable on a machine that has never seen the project.
What a viewer can touch
Every player reads the same list: what you have pinned in the Parameters (Pinned) panel at the moment you export. A pinned parameter contributes itself, a pinned whole node contributes the parameters its card shows, and a pin made inside a subgraph is dropped, because a player addresses nodes in the top-level graph only.
Only that selection is stored. The label, the type, the range and the contents of any dropdown are read out of the graph in the bundle every time a control is drawn, so a dropdown of cameras or attribute names offers what is true on the viewer's machine rather than a list frozen when you exported.
Web Player (browser)
The Web Player runs that bundle inside a browser using WebGPU, with no install. It cooks and renders the graph live, exposes the parameters you surfaced at export time, and resizes to the page.
The browser has to support WebGPU. Most current desktop browsers do; some mobile and older browsers do not, and the page refuses to start rather than rendering wrongly.
The Web Player has no audio output, and no native live inputs or outputs: no MIDI, OSC, DMX, camera, NDI or Syphon. It is visual and interactive only.
Desktop player
A desktop player binary exists in the repository and is run from a terminal against a bundle path. It opens a window, loads the piece, and plays continuously, with the parameters you exposed shown as a small panel of dropdowns, toggles and dials over the artwork. A --resolution sets the window and render size.
Two of its flags do nothing: --fps is logged and then ignored, since playback follows the host's refresh, and --fullscreen is never read because the window layer has no fullscreen mode.
It has no live device wiring of any kind, so MIDI, OSC, DMX, camera and gamepad do not reach it. It also has no audio: an exported bundle never carries the audio plan, so the player's audio startup never fires and every bundle is silent.
Headless (batch and servers)
A headless binary runs a bundle without a window, for batching and servers. It takes repeatable --param NAME=VALUE arguments resolved against the names you exposed, and carries run, bench, gen, thumbnail, info and validate modes. thumbnail is the one that writes an image; --output is a single-variant stub and is discarded.
What runs where
| Web Player | Desktop player | Headless | |
|---|---|---|---|
| Real-time rendering | Yes | Yes | Yes |
| Audio output | No | No | No |
| Live inputs/outputs (MIDI, OSC, DMX, camera) | No | No | No |
| Exposed parameter controls | Page | Panel | Command line |
| How you get it | A web export you can host | Build the repository | Build the repository |
For straightforward outputs, Export and the Exporting targets are simpler than driving a player.