2
Runtime Host Configuration
Aiden edited this page 2026-05-08 19:03:26 +10:00

Runtime Host Configuration

Runtime settings live in:

config/runtime-host.json

The default configuration is:

{
  "shaderLibrary": "shaders",
  "serverPort": 8080,
  "oscPort": 9000,
  "inputVideoFormat": "1080p",
  "inputFrameRate": "59.94",
  "outputVideoFormat": "1080p",
  "outputFrameRate": "59.94",
  "autoReload": true,
  "maxTemporalHistoryFrames": 12,
  "enableExternalKeying": true
}

Settings

Setting What It Does
shaderLibrary Folder containing shader packages. Usually shaders.
serverPort Preferred local HTTP control server port. The browser UI, REST API, Swagger docs, and WebSocket use this server.
oscPort Local UDP port for OSC parameter control. Use 0 to disable OSC.
inputVideoFormat Video capture format, such as 1080p or 720p.
inputFrameRate Video capture frame rate, such as 59.94, 50, or 25.
outputVideoFormat Video output/playout format.
outputFrameRate Video output/playout frame rate.
autoReload When true, shader manifests, shader source, and declared texture changes are reloaded automatically.
maxTemporalHistoryFrames Upper limit for temporal history buffers. Individual shaders can request fewer frames.
enableExternalKeying Requests external keying when the DeckLink device and keyer path support it.

Video Modes

The shader stack renders at the input resolution. The final rendered frame is then scaled once into the configured output mode.

Common examples include:

720p / 50
720p / 59.94
1080i / 50
1080i / 59.94
1080p / 25
1080p / 50
1080p / 59.94
2160p / 59.94

Actual availability depends on the active video I/O backend, installed card, driver, and signal path. The current production backend is DeckLink.

Legacy Keys

Older configs may use:

{
  "videoFormat": "1080p",
  "frameRate": "59.94"
}

Those keys are still accepted. They apply to both input and output unless the newer explicit input/output keys are present.

Practical Advice

  • Keep autoReload on while developing shaders.
  • Keep maxTemporalHistoryFrames modest during live work; temporal history consumes texture memory.
  • Set oscPort to 0 if you do not need OSC and want fewer moving parts.
  • Use matching input and output modes when possible for the simplest signal path.
  • If the UI cannot be reached on the expected port, check the runtime status for the actual bound port.
  • When external keying is enabled and supported, shader alpha can drive the key signal.