Nodes/CMK Flow/CMK Pipe Peek Preprocess Refiner
ComfyUI Node

CMK Pipe Peek Preprocess Refiner

The image, the latent, and two switches

By CMKFlow·Created 3 months ago·Updated a day ago· 6
CMK Pipe Peek Preprocess Refiner
  • pipe
  • image
  • latent_image
  • vae
  • boolean_detailer_enable
  • boolean_face_enable

Five outputs, one wire in. This is the smaller sibling of CMK Pipe Peek Preprocess Image - same idea, different stage. It reaches into a CMK_PIPE at the point where the 2nd-pass stage begins and pulls out what that stage needs: the current image, the latent_image it will refine from, the vae, and two booleans - boolean_detailer_enable and boolean_face_enable.

For a "peek" node the booleans are the interesting part. They are the switches that decide whether the detailer and face stages run at all, and here they're exposed as ordinary BOOLEAN sockets, which means you can read them, log them, or drive conditional logic from them without duplicating the setting. That's the practical use case: a hand-built graph that branches on whether the pack's face stage is switched on, without you having to remember to flip two widgets in two places.

The latent_image output is worth a specific warning. It reads latent_1st_pass first and falls back to latent_image - because by this point in the pipeline the first-pass latent is the one that matters, and the original encode is only a fallback for graphs where nothing has sampled yet. Wire latent_image into a latent preview and you'll see what the second pass is actually working from, which is the fastest way to catch a graph where you've accidentally fed it the wrong latent.

image is the decoded current picture, same as every other peek: fine for a save, an external step, or a comparison panel. vae is the pipe's VAE, which you need if you're decoding a latent yourself outside the pack's own decode path.

What it doesn't do

It doesn't compute anything, doesn't validate, doesn't apply a refiner. Missing keys come back as None; a missing boolean comes back as False, which is a genuinely useful default here - an unset face-enable flag means "off", not "unknown." And it is not the refiner's own peek: the refiner stage runs on a different bundle type (CMK_REFINER_PIPE), and reading that one is CMK Pipe Peek Refiner's job. Two similar names, two different sockets. The typed sockets stop you mixing them up, but the names won't.

Installing the pack

ComfyUI Manager → search CMK Flow → install the entry from CMKFlow → restart ComfyUI.

Or from the ComfyUI root folder:

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

That second command is mandatory. A git clone never installs pip packages, and the pack's imports (ultralytics, onnxruntime, insightface, segment-anything, opencv-python, imageio-ffmpeg, pinned nudenet) run as one graph - a dependency that fails to build doesn't disable one node, it can cost you the whole pack's node registration. The helper finds the Python interpreter ComfyUI is genuinely using, which matters on Desktop installs where standalone-env and .venv both exist, and ends by confirming CMK dependency check: OK.

Updates use the same pair:

git -C custom_nodes/cmk_nodes pull --ff-only
python3 custom_nodes/cmk_nodes/scripts/install_cmk_requirements.py

Model weights deliberately aren't part of the Python package. scripts/check_cmk_resources.py reports each expected file as FOUND or MISSING against your install, and can install the missing ones - several Z-Image and ControlNet files are multiple gigabytes each and are confirmed one at a time on purpose.

Two settings before you judge anything: Vue Nodes / Nodes 2.0 must be enabled (the pack is built for it), and Execution → Live preview method should be auto for previews during sampling. This node sits in CMK/Developer/, so it's in node search but not in the Flow Browser catalogue.

The bundle tax

Every node on this bus shares one caveat, and this one inherits it: what you read is a snapshot from wherever the peek sits. Put it upstream of the stage that sets boolean_detailer_enable and you'll read False forever and conclude the pack is broken. Peek from after the prepare node, not before it.

CategoryCMK/Developer/Legacy Pipe

Inputs (1)

NameTypeDefaultDescription
pipeCMK_PIPE—

Outputs (5)

NameTypeDescription
imageIMAGE—
latent_imageLATENT—
vaeVAE—
boolean_detailer_enableBOOLEAN—
boolean_face_enableBOOLEAN—