Nodes/CMK Flow/CMK Pipe Set Refiner
ComfyUI Node

CMK Pipe Set Refiner

Park an image in the pipe for the 20 Refiner module

By CMKFlow·Created 3 months ago·Updated a day ago· 6
CMK Pipe Set Refiner
  • pipe
  • image
  • pipe

Two inputs, one output, one line of real work: take an IMAGE and store it in the CMK pipe under the key image_refiner.

The reason a node that small is in the pack at all: CMK's refiner stage (20 Refiner SDXL) adds a low-denoise second pass over the first-pass latent, and it needs something to compare against - the before and after images. The clean source of "before" is the decoded first pass. This node is the standard way to hand that image into the pipe so the refiner module can show you first pass versus refined side by side, instead of you decoding the same latent twice in two places.

What it is not

It is not a refiner control node. It does not set the refiner model, steps, start percent, sampler or seed - those come through the refiner-specific path, which is a different type (CMK_REFINER_PIPE, built by the refiner prepare node and executed by CMK Refiner -Pipe-). This node only ever touches image_refiner on the main CMK_PIPE. If you were hoping to enable or disable the refiner from here, wrong node.

It also doesn't validate the image. An IMAGE goes in, an IMAGE comes out inside the dict. Nothing decodes, nothing resizes.

Where you'd wire it

Inside the 20 Refiner SDXL module, or in a hand-built graph that reaches into that stage. Typical shape: first-pass sampler → VAE decode → this node → the refiner branch, which picks image_refiner off the pipe as its comparison image while the refined result lands on the module's IMAGE output.

If you're building from scratch rather than using the packaged modules, the important thing to internalise is that CMK splits its pipeline across several distinct bundle types, and they are not interchangeable - CMK_PIPE for the main flow, CMK_PROCESS_SDXL for the process state, CMK_SAMPLED_PIPE between the sampler and refiner, CMK_REFINER_PIPE inside the refiner stage. The sockets are typed precisely so you can't plug the wrong one in. This node only speaks the first of those.

Installing the pack

ComfyUI Manager → search CMK Flow → install the CMKFlow entry → restart. From the ComfyUI root folder, if you prefer git:

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

The final line should read CMK dependency check: OK. That script exists because ComfyUI Desktop can have three Pythons and only one of them matters; it finds the right one and installs requirements.txt there. Model weights are not part of the Python package - run the resource check afterwards if you want it to list and optionally fetch what the bundled workflows expect:

python3 custom_nodes/cmk_nodes/scripts/check_cmk_resources.py --models-root "/path/to/your/ComfyUI-shared"

Updates: git pull --ff-only plus the same install script. Restart only after the success message.

The pack requires Vue Nodes / Nodes 2.0 in ComfyUI settings. This node is in the CMK/Developer/ category - internal infrastructure, not in the Flow Browser catalogue - so find it by searching CMK Pipe Set rather than browsing the browser panel.

The trap

Same one as every node on this bus: a value written here is a snapshot. Change what feeds the image input and the pipe still carries the old image until this node re-executes. CMK's first run after a restart or cache clear is expected to log MISS → STORED before it starts saying HIT - internal image boundaries live under ComfyUI/temp/cmk/, and a restart empties them. Don't read that as a bug; read it as the pack telling you it's caching honestly.

CategoryCMK/Developer/Legacy Pipe

Inputs (2)

NameTypeDefaultDescription
pipeCMK_PIPE—
imageIMAGE—

Outputs (1)

NameTypeDescription
pipeCMK_PIPE—