Skip to content

Headless Mode

Headless mode lets you run Laika without a GUI window, outputting exclusively via NDI® and DeckLink while accepting control through the Web API. No monitor, desktop environment, or GPU required.

Not every Laika instance needs a screen attached. In many deployments, Laika runs as a background service on infrastructure that has no display at all:

  • Rack-mounted servers in the machine room generating multiviewer outputs for wall monitors
  • Cloud instances producing NDI® monitoring feeds for remote production
  • Raspberry Pi units tucked behind displays as dedicated multiviewer endpoints
  • Distributed monitoring where dozens of Laika instances run unattended across a facility

Headless mode strips away the GUI overhead and lets Laika focus entirely on source processing and output — controlled remotely via the Web API.

fetch-laika --headless

Laika starts without creating a window. It discovers NDI® sources, applies your saved configuration (layouts, pads, source assignments, captions), and begins outputting via NDI® and any configured DeckLink devices.

Combine with full resolution output:

fetch-laika --headless --fullres

The --fullres flag ensures all sources are processed at their native resolution rather than the default optimised resolution. Use this when output quality is critical — for example, when the NDI® output feeds a recording system or broadcast chain.

Every Laika feature continues to operate without the GUI:

  • Source discovery — NDI® sources are discovered and connected automatically
  • Layouts — saved layouts apply to the NDI® output composition
  • Pads — switch between saved pad configurations via the Web API
  • Routing — the NDI® Router creates and manages virtual outputs
  • Captions — expression-based captions render on the output stream
  • PTZ control — camera control commands are sent via the Web API
  • Tally — tally state is tracked and reflected in output overlays
  • Audio monitoring — audio meters and routing function normally

All control happens through the Web API. Open a browser or send HTTP requests to:

http://<laika-ip>:1928

From there you can switch pads, change source assignments, update captions, control PTZ cameras, manage routes, and adjust any setting — everything you would normally do through the GUI.

See the Web Control API page for full endpoint documentation.

In headless mode, Laika outputs periodic status information to the console:

  • Current pad and layout
  • Number of discovered sources
  • NDI® output status
  • Any warnings or errors

This gives you basic visibility when SSH’d into a headless machine or reviewing service logs.

Press Ctrl+C in the terminal for a clean shutdown. Laika will:

  1. Stop all NDI® outputs gracefully (receivers see a clean disconnect, not a timeout)
  2. Release DeckLink devices
  3. Save any pending configuration changes
  4. Exit cleanly

Headless mode has reduced system requirements compared to GUI mode:

  • No GPU required — rendering targets NDI® output directly, no OpenGL/Vulkan needed
  • No display server — runs without X11, Wayland, or a connected monitor
  • Lower memory footprint — no window compositor or GUI framework overhead
  • Can Be Ran as a service — can be managed via systemd, launchd, or any process supervisor

Headless rack server: Install Laika on a 1U server in the machine room. Configure layouts and pads once via the Web API. The server generates NDI® multiviewer outputs that feed wall monitors, recording systems, and confidence displays throughout the facility — all without a keyboard, mouse, or monitor attached.

Cloud multiview: Run Laika on a cloud VM receiving NDI® sources via NDI® Bridge or NDI® Remote. Remote production teams access the multiviewer output through NDI® receivers at their location. Control is handled entirely through the Web API.

Distributed monitoring: Deploy multiple headless Laika instances across a campus — one per building, floor, or studio. Each instance handles local source monitoring and outputs to nearby displays. Control all instances remotely via their Web APIs using curl, scripts, or Bitfocus Companion.