CMK Pipe Peek Preprocess Image
Get things back out of the pipe
- pipe
- image
- mask
- width
- height
- prompt_pos
- prompt_neg
- active_loras
- lora_stack
- boolean_inpaint_mode
- control_net
- controlnet_image
The whole CMK design is one wire instead of forty: a CMK_PIPE bundle carries the image, the mask, the prompts, the LoRA stack, the ControlNet hint and a pile of metadata down a single connection. It's the context-bus pattern - the same idea as rgthree's Context or Easy-Use's pipe dict - and like every version of it, the price of legibility is that you can't see what's inside.
This node is the escape hatch. One pipe input, eleven outputs, and everything that was buried in the bundle is now a normal socket you can wire into normal ComfyUI nodes.
The outputs, and what you'd do with them
image and mask are the obvious two. That's your current picture and its mask, straight off the bus - feed them to a standard Preview Image or a stock Save Image (which has no idea CMK exists), to an external upscaler, or into a non-CMK face workflow. width and height come as integers, which is what you want if you're building an empty latent, a resize, or an outside upscale step that has to match the pipeline's dimensions exactly.
prompt_pos and prompt_neg are the pipe's current prompts as strings. Useful when you want to reuse the CMK prompt in a stock CLIP Text Encode - or, more mundanely, to display the prompt that actually ran, because "which prompt did this image use" is a question bundles make surprisingly hard to answer.
active_loras is a string list of the LoRAs in play; lora_stack is the real LORA_STACK object, which is the one you'd wire into any LoRA-stack loader outside the pack. There's real value in that: CMK's own LoRA stack subgraphs need willmiao's ComfyUI LoRA Manager, and this output is your route to the same stack without it.
boolean_inpaint_mode tells you whether the pipe is configured for inpaint - handy as a switch signal if you've built a graph that branches on it.
Then control_net and controlnet_image: the loaded ControlNet and the processed hint image. Wire the hint to a preview when your ControlNet isn't doing anything. Nine times out of ten the problem is visible in that image, and this is where you look at it.
What it does under the hood
Nothing. It reads named keys off the pipe dictionary and returns them, with no validation and no defaults - a key that isn't there comes back as None. That's it. Which means it's cheap, it can't break your pipeline, and it also won't warn you when you've tapped a value that hasn't been set yet. An image output that previews as nothing usually means you took the peek too early in the chain, before whatever fills that key had run.
Installing the pack
Manager → search CMK Flow → install the CMKFlow entry → restart ComfyUI. Registry package name is cmk-flow.
From the ComfyUI root, 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
Wait for CMK dependency check: OK - that helper locates the Python interpreter ComfyUI is actually using and installs requirements.txt there, then verifies every mandatory import. A manual clone never runs pip, so skipping it is the single most common way to end up with a pack that half-loads. On updates:
git -C custom_nodes/cmk_nodes pull --ff-only
python3 custom_nodes/cmk_nodes/scripts/install_cmk_requirements.py
No model weights ship with the package. If you want the bundled workflows to actually run, point the resource checker at your model folder and let it report what's FOUND and what's MISSING:
python3 custom_nodes/cmk_nodes/scripts/check_cmk_resources.py --models-root "/path/to/ComfyUI-shared"
It will offer to download the missing pieces, including Civitai-gated ones if you supply an API key - the key is held in memory for that run only, never written to disk.
Interface requirements: the pack needs Vue Nodes / Nodes 2.0 enabled in ComfyUI settings - without it, dynamic CMK nodes fall back to old-style LiteGraph rendering and the advanced widget behaviour doesn't apply. For previews during sampler and refiner runs, set Execution → Live preview method to auto.
This node is in CMK/Developer/Pipe/Peek, the pack's internal plumbing category. It doesn't appear in the Flow Browser - that only catalogues the guided CMK/Flow/ modules - so find it by searching CMK Pipe Peek in the node menu.
When to actually use it
Reach for it when you need to leave CMK-land, or when something in the pipe is wrong and you need to see it. A subgraph output, an external save, a stock ComfyUI node that needs one value - this is the joint. Don't use it as decoration; every wire you pull out of the pipe is one of the forty you were trying to get rid of.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| pipe | CMK_PIPE | — |
Outputs (11)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| mask | MASK | — |
| width | INT | — |
| height | INT | — |
| prompt_pos | STRING | — |
| prompt_neg | STRING | — |
| active_loras | STRING | — |
| lora_stack | LORA_STACK | — |
| boolean_inpaint_mode | BOOLEAN | — |
| control_net | CONTROL_NET | — |
| controlnet_image | IMAGE | — |