Nodes/CMK Flow/CMK Visual Forward -Pipe-
ComfyUI Node

CMK Visual Forward -Pipe-

The node that keeps the visual chain alive through a module that shows nothing

By CMKFlow·Created 3 months ago·Updated 2 days ago· 6
CMK Visual Forward -Pipe-
  • VISUAL
  • VISUAL

This node does nothing, and that's the specification. It takes a VISUAL pipe in and hands the same pipe back out, unchanged. It exists so a module that contributes nothing to the visual chain can still sit in the middle of one without breaking it.

If you're wondering why that needs a node at all: CMK's VISUAL chain is order-sensitive. Provider order in the panel is the order of the chain, not the sequence numbers, and the Visualizer walks it. Insert a module with no visual output into the middle of a chain and you either leave the chain unconnected through that span or you rewire around it. Visual Forward is the third option - a no-op that carries the wire across.

How it works

The entire class is a two-line passthrough:

def forward(VISUAL=None):
    return (empty_visual() if VISUAL is None else VISUAL,)

If you wire nothing in, you get an empty visual pipe out - a valid CMK_VISUAL_PIPE dictionary with an empty provider list, so anything downstream can still be connected without a type error. If you wire a chain in, you get the identical object back. No copy, no re-registration, no reordering, no status change.

That null case is more useful than it looks. An empty pipe is a legitimate starting point for a chain in a subgraph, which is why you'll find this node in packaged CMK subgraphs as the entry point of a visual section rather than as decoration between two modules.

Category is CMK/Developer/Visual: infrastructure for the pack, not a tool you're meant to shop for. CMK's product split puts Developer nodes below the Toolbox - visible in the menu so graphs can be inspected and edited, but not the intended audience. Its sibling in the same category is CMK Visual Provider -Pipe-, which does add something to the chain.

Inputs and outputs

  • VISUAL (CMK_VISUAL_PIPE, optional) - the incoming chain. Optional, because an empty chain is legal.
  • VISUAL (CMK_VISUAL_PIPE) - the same chain, out.

One input, one output, same name, same type. If a graph is behaving as though a visual stage vanished, check whether the module in question genuinely publishes providers - a module that ran fine but produced no image channels registers nothing, by design. CMK treats a provider as evidence that an image signal actually existed.

That rule is why you can't use this node as a bypass substitute. If a module is disabled, the pack's own boundaries handle the passthrough and don't run the expensive path at all. Visual Forward doesn't disable anything; it just carries a wire.

Install

Developer nodes ship inside the pack, so installing is installing CMK Flow. Manager → search CMK Flow → install → restart, or manually:

cd ComfyUI/custom_nodes
git clone https://github.com/CMKFlow/cmk_nodes
python3 custom_nodes/cmk_nodes/scripts/install_cmk_requirements.py

No model files, no optional dependencies, nothing to download. The one environment requirement is the ComfyUI setting Vue Nodes / Nodes 2.0 - CMK warns at startup if it's off, and without it the dynamic node presentation falls back to legacy LiteGraph rendering.

Common issues

  • "I added it and nothing changed." Correct. It's a passthrough. If you wanted something to appear in the Visualizer panel, you want CMK Visual Provider -Pipe-.
  • Type error on connect. You're feeding it something that isn't a CMK_VISUAL_PIPE - commonly an IMAGE, or a visual payload that's been through JSON serialisation and lost its type tag out the other side.
  • Order looks wrong in the panel. Panel order follows the order of the VISUAL chain, and the sequence number only sorts the registers roughly. Adding a forward node can't fix that - re-route the chain.
  • Don't confuse it with CMK Image Forward -Pipe-. That one passes an IMAGE through; it is not a visual-chain node and putting it in a VISUAL wire won't work.
CategoryCMK/Developer/Visual

Inputs (1)

NameTypeDefaultDescription
VISUALoptCMK_VISUAL_PIPE—

Outputs (1)

NameTypeDescription
VISUALCMK_VISUAL_PIPE—