NDI Stream Plan
A spec for NDI output, not the output itself
- ndi_plan_json
- manifest_line
- summary_json
The plan node that says what an NDI stream should be
NDI is how live-video gear talks to each other over a network - it's the protocol behind sending a program feed to a switcher, a projector, or another machine without capture cards. MKRNDIStreamPlan is the pack's node for it, and the first thing to know is exactly what it does and doesn't do: it produces a JSON plan describing an NDI stream. It does not stream anything.
This is the pack's plan-node architecture in its purest form - the same pattern as the Maya and Nuke bridges. A plan node builds a structured description; something else executes it. For NDI, the executor is the pack's network-transport lane and its host add-ons (the README groups this under "Network Transport" alongside OSC, Spout, Syphon, TCP, WebSocket plans). If you wire this up and expect a visible stream, you'll be disappointed - it's the spec document, not the stream.
The inputs
Four required, all simple:
stream_name(default "MKRShift NDI") - the name other NDI receivers will see. Also used to build astream_slug.asset_path- what the stream should feed from (a video file, an image sequence, etc.). Empty is allowed - the plan is still valid, it just has nothing to source yet.source_kind- what type of source the stream carries:image,image_sequence,video, ortexture. This tells the executor how to play the asset.alpha_mode- how to treat the alpha channel:ignore,premultiplied, orstraight. Relevant if your source has transparency and you're keying downstream.
The outputs
Three strings:
ndi_plan_json- the actual plan (mkrshift_ndi_plan_v1), containing stream name, slug, protocol, asset path, source kind, and alpha mode. This is what you feed the transport/runtime machinery.manifest_line- a compact comma-separated line (name, source kind, alpha mode, path) for manifests and copy decks.summary_json- a quick confirmation: stream name and whether a path is set.
Install and the honest take
cd ComfyUI/custom_nodes
git clone https://github.com/criskb/MKRShift_Nodes
Restart, or install "MKRShift Nodes" via ComfyUI Manager. No pip deps, no models, no ffmpeg - this node touches nothing.
Here's my honest take, because it matters for your time budget: if you need real, working NDI output today, this node alone won't get you there - there's no NDI sender in the pack, and setting up the add-on/transport lane is real work. What it is good for is exactly what plan nodes are for: defining a consistent, inspectable, versioned description of "an NDI feed called X, sourced from Y, alpha handled as Z" that can ride through a manifest and get executed later. If your pipeline is all-in on the pack's network lane, it fits. If you just wanted a quick NDI push, check whether the full lane is worth the setup before you commit - the plan is the cheap part.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| stream_name | STRING | MKRShift NDI | — |
| asset_path | STRING | — | |
| source_kind | COMBO | video | 4 options: image, image_sequence, video, texture |
| alpha_mode | COMBO | ignore | 3 options: ignore, premultiplied, straight |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| ndi_plan_json | STRING | — |
| manifest_line | STRING | — |
| summary_json | STRING | — |