Visual builder
Wire operators together on a canvas — sixteen starter templates, or a guided wizard from zero to a running channel.
Compiles before it saves
Every graph renders to real Liquidsoap source and runs through the actual compiler. Nothing reaches disk unless it type-checks.
Generated palette
The operator list isn't hand-maintained — it's pulled straight from Liquidsoap's own function signatures, so it never drifts from what the compiler actually supports.
Process-isolated channels
Each running channel is its own OS process. One crashing never takes another down, and a dead process drops off the list on its own.
External sources, not just local media
Loop a remote HTTPS file forever, or relay an existing HLS stream as your own output — the same graph either way.
HTTP API, no lock-in
Start, stop, and inspect channels over a plain HTTP API. Nothing about the control plane requires the Builder UI to operate it.
The Builder
A channel graph wired from a template — logo and text overlays into an FFmpeg encoder into HLS output — type-checked and running. The generated Liquidsoap source, compiled and verified, right next to the canvas that produced it.

Outputs
Ship it wherever it needs to go.
One graph, any destination — mix and match per channel.
- HLS
- Play anywhere a browser or video element can point a URL.
- SRT
- Push to a remote SRT listener or caller.
- RIST
- Reliable Internet Stream Transport, for lossy links.
- RTMP
- Feed directly into OBS or vMix.
- NDI
- Hand off uncompressed to an NDI-aware receiver on the same network.
Channel kinds
Three roots, one namespace.
They differ only in where the script comes from — once running, identical.
- authored
- A .liq file you wrote by hand, dropped into the channel directory.
- example
- Runs against a generated playlist — re-randomizes its clip selection on every start.
- built
- Rendered straight from a Builder graph. Once running, identical to the other two.
The palette