Nodes/IAMCCS-nodes/IAMCCS Cine Relay Or Bypass
ComfyUI Node

IAMCCS Cine Relay Or Bypass

Run PromptRelay only when there's actually something to relay

By IAMCCS·Created 11 months ago·Updated 8 days ago· 113
IAMCCS Cine Relay Or Bypass
  • cine_linx
  • model
  • positive
  • clip
  • latent
  • relay_options
  • model
  • positive
  • promptrelay_enabled
  • report
global_prompt
local_prompts
segment_lengths
epsilon0.0010

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_enabled comes 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_linx payload, 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/latent into 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.
CategoryIAMCCS/Cine/00 Utilities

Inputs (10)

NameTypeDefaultDescription
cine_linxIAMCCS_SUPERNODE_LINX
modelMODEL
positiveCONDITIONING
global_promptoptSTRING
local_promptsoptSTRING
segment_lengthsoptSTRING
epsilonoptFLOAT0.00100.000001–0.99
clipoptCLIP
latentoptLATENT
relay_optionsoptRELAY_OPTIONS

Outputs (4)

NameTypeDescription
modelMODEL
positiveCONDITIONING
promptrelay_enabledBOOLEAN
reportSTRING