Nodes/CMK Flow/CMK Z-Image Process Enable Flag
ComfyUI Node

CMK Z-Image Process Enable Flag

Read a Switch Out of PROCESS Instead of Setting It Twice

By CMKFlow·Created 3 months ago·Updated 2 days ago· 6
CMK Z-Image Process Enable Flag
  • PROCESS
  • ENABLE
◄flagcontrolnet_enabled►

CMK files this one under CMK/Developer/Legacy Gates, and that label is honest. It's a two-input developer utility with a boolean output, and no shipped CMK workflow uses it - I checked the workflows/ and subgraphs/ directories. You'll reach for it when you're building your own module around CMK's pipes, not when you're running someone's reference workflow.

What it does

The Z-Image PROCESS pipe is a dictionary. Alongside the prompts, resolution and LoRA syntax it carries the module switches you set once in 01 START HERE - the kind of thing that shows up in the log as CONTROLNET : ENABLED or : STANDBY. This node exposes one of those stored booleans as an actual BOOLEAN socket.

Mechanically it's about as small as a node can be: read the key flag out of PROCESS, coerce it to bool, emit it as ENABLE. Wire ENABLE into any node with a boolean input and now that downstream node follows the switch you already flipped in module 01 instead of getting a second, hand-set copy that can drift out of sync. On a large graph with several nodes that all want to know "is ControlNet on", that's the difference between one source of truth and three chances to be wrong.

Inputs and output

PROCESS is typed CMK_PROCESS_Z_IMAGE specifically. There's a sibling in the pack, CMK Process Enable Flag, that takes the SDXL process and defaults its flag to instantid_enabled; the two aren't interchangeable. ComfyUI enforces the socket type, so you can't accidentally plug an SDXL pipeline into this one - you'll just find the wire won't connect, and that's the answer: you're holding the wrong twin.

flag is a plain string widget defaulting to controlnet_enabled, which is the switch most people want. The ENABLE output is a BOOLEAN and nothing else - no second output, no passthrough, so you're using this node beside your pipe, not in the middle of it.

The two ways it quietly lies to you

A misspelled flag returns False. There's no error, no warning, no nearest-match suggestion - just a missing key resolving to false, and then a downstream branch that never fires while you stare at module 01 showing the switch as on. If the gate looks dead, retype the key from the workflow's own widgets_values rather than from memory.

Second, not every switch that exists on one family exists meaningfully on this one. instantid_enabled is forced false on a Z-Image process at the source, because InstantID is an SDXL-only adapter - so reading that flag from ZIT is technically valid and permanently, correctly False. Don't debug it; it's telling you the truth about the family.

Install

Same pack as everything else here: ComfyUI Manager, search CMK Flow, install from CMKFlow, restart. Manually:

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

No models, no downloads, nothing to configure - this node is a dictionary lookup. The one environmental requirement worth repeating is Vue Nodes / Nodes 2.0, because CMK's UI assumes it and warns at startup when it's off.

If you're driving Z-Image at all, you already needed the Z-Image Turbo weights (diffusion model, qwen_3_4b text encoder and ae.safetensors VAE in the shipped loader), but none of that is this node's problem.

Should you actually use it in a normal workflow?

Usually not. In CMK's guided -Pipe- chain the modules already read their own switches from PROCESS internally - that's the architecture, and re-reading them with a gate node so you can wire the value back in is how you'd reintroduce the duplication the pipes exist to remove. This node earns its keep in hand-built modules: a save toggle, a detailer branch you want to arm from the same switch that armed the ControlNet, a debug path you want to bypass without editing three widgets.

One genuine caution: it's a snapshot of PROCESS at the moment it runs, not a live binding. In a graph where an upstream node changes a flag mid-run, the value you read is whatever the pipe held when this node executed. For CMK's normal top-to-bottom flow that's exactly what you want; for anything cleverer, it isn't.

CategoryCMK/Developer/Legacy Gates

Inputs (2)

NameTypeDefaultDescription
PROCESSCMK_PROCESS_Z_IMAGE—
flagSTRINGcontrolnet_enabled—

Outputs (1)

NameTypeDescription
ENABLEBOOLEAN—