IAMCCS Cine Relay Or Bypass
Run PromptRelay only when there's actually something to relay
- cine_linx
- model
- positive
- clip
- latent
- relay_options
- model
- positive
- promptrelay_enabled
- report
IAMCCS_CineRelayOrBypass is a smart conditioning switch for the Cine pipeline: it looks at the cine_linx package, decides whether the current shot actually has relay prompts to apply, and either runs ComfyUI-PromptRelay's encoding or - just as importantly - skips it entirely and passes your conditioning through untouched.
Why does that matter? PromptRelay is the LTX-2 community system for expressing "this prompt at second 0, that one at second 8" - time-windowed prompt conditioning. It's powerful and it's also expensive: running it re-encodes prompts and can add meaningful time to every generation. The failure mode of most relay setups is that it runs unconditionally, even for shots where there's nothing to relay, wasting time and occasionally injecting artifacts from an empty relay. This node's whole reason to exist is to make that decision automatically: if no ShotPlanner row has both use_prompt on and a non-empty relay_prompt text, it's a pure pass-through - zero re-encoding.
How it works
The decision rule is spelled out in the code and it's refreshingly strict: relay is OFF unless at least one row meets the criteria above. When OFF, the node returns the positive conditioning you fed it unchanged and the original model unpatched - a true bypass, not a fresh encode of the global prompt. When ON, it calls PromptRelay's original _encode_relay 1:1, exactly like the pack's dedicated relay-encode node.
The clever bit is the input design: everything relay needs (global_prompt, local_prompts, segment_lengths, epsilon) comes from the cine_linx bus rather than a fan-out of wires, and clip/latent are declared lazy - ComfyUI won't execute them at all when the relay is OFF, so the bypass path doesn't even touch the encoder.
Inputs and outputs
Required: cine_linx, model, positive. Optional: global_prompt, local_prompts, segment_lengths, epsilon (default 0.001), clip, latent, relay_options. Outputs: model, positive, promptrelay_enabled (a BOOLEAN telling you which path ran - the single most useful output for debugging), and report.
Installing it
Part of the IAMCCS-nodes pack. ComfyUI Manager → search IAMCCS, or:
cd ComfyUI/custom_nodes
git clone https://github.com/IAMCCS/IAMCCS-nodes.git
Restart ComfyUI; it's under IAMCCS/Cine/00 Utilities. No pip requirements. Note the ON path calls into ComfyUI-PromptRelay, so you need that pack installed for the relay to actually fire; the OFF path doesn't need it. README floor: ComfyUI ≥ 0.3.0, Python ≥ 3.12, Torch ≥ 2.8.
Where people get burned
- The ON path silently requires ComfyUI-PromptRelay. If
promptrelay_enabledcomes back false but you expected true, check both the ShotPlanner rows and that the relay pack is installed - an import failure degrades to bypass, which is safe but confusing. - It's driven by the
cine_linxpayload, not by widgets. You can't force relay ON from this node; the ShotPlanner rows are the source of truth. If the behavior seems wrong, look upstream at how those rows were built. - Wiring
clip/latentinto it eagerly defeats the lazy-input optimization. Leave them unconnected unless the ON path actually needs them - that's the entire point of the design.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| cine_linx | IAMCCS_SUPERNODE_LINX | — | |
| model | MODEL | — | |
| positive | CONDITIONING | — | |
| global_promptopt | STRING | — | |
| local_promptsopt | STRING | — | |
| segment_lengthsopt | STRING | — | |
| epsilonopt | FLOAT | 0.00100.000001–0.99 | — |
| clipopt | CLIP | — | |
| latentopt | LATENT | — | |
| relay_optionsopt | RELAY_OPTIONS | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |
| positive | CONDITIONING | — |
| promptrelay_enabled | BOOLEAN | — |
| report | STRING | — |