CMK Flow · Checkpoint & VAE
The loader that starts CMK Flow's modular pipeline
- PROCESS
- MODEL SDXL
CMK Flow · Checkpoint & VAE is the first node of the pack's guided pipeline. It looks almost identical to the standalone loader next to it in the menu - same three widgets, same job - and then it hands you a single output wire instead of three. That wire is the whole point.
Why a pipe at all
CMK Flow splits its nodes into two worlds, and the README is blunt about it: CMK **** -Pipe- is the "closed, guided ecosystem," everything else is the open experiment box. The pipe isn't a gimmick. Once model, CLIP, VAE, prompt context and sampler settings travel down one connection, you stop rewiring the middle of your graph every time you want to change a setting, and the pack can enforce things like "module 05 never mutates the image payload" without asking you to be careful.
This node is module 01 - START HERE. Its category is CMK/Flow/Input, and its one output is MODEL SDXL, typed CMK_MODEL_PIPE. Not MODEL. A bundle. Downstream CMK modules read the checkpoint, the CLIP and the VAE out of it rather than off separate sockets.
The wider architecture, for orientation: 01 START HERE → 02 Regional Conditioning → 05 ControlNet → 10 KSampler → 15 InstantID → 20 Refiner, then a PostProcess boundary and the Detailer / FaceProcess / FaceSwap modules. SDXL, Z-Image Turbo and a HYBRID path that composes on SDXL and finishes on Z-Image Turbo stay technically separate through generation.
How it works
Under the hood it's the same code as the toolbox loader: load_checkpoint_guess_config on your checkpoint, then a branch on checkpoint_vae.
checkpoint_vaetrue(default) → you get the checkpoint's baked VAE.checkpoint_vaefalse→ the node loadsvae_namefrommodels/vaeand uses that instead.
ckpt_name comes from models/checkpoints, vae_name from models/vae, and vae_name is only read in the false case. The difference from the toolbox version is that instead of emitting model, clip and vae as three sockets, it packs them into the model pipe together with the metadata the later modules read (which checkpoint, which VAE, whether it was internal or external). Later modules - the sampler prepare, the ControlNet modules, the refiner - pull what they need from that pipe and add their own state on top.
The optional PROCESS input accepts a CMK_PROCESS_SDXL. You leave it empty on a fresh workflow; you'd wire it to append the checkpoint information to an existing process context rather than starting a new one.
Install
Manager: search CMK Flow, install the CMKFlow entry, restart. Manual, from the directory that holds main.py:
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 before restarting. The helper resolves the Python environment ComfyUI itself uses, which is the part that goes wrong by hand on Desktop installs. requirements.txt pulls real weight: ultralytics, onnxruntime, insightface, segment-anything, imageio-ffmpeg, opencv-python and nudenet==3.4.2. None of it is needed to load a checkpoint, but the pack installs as one unit.
Model weights are deliberately not part of the Python package. If you keep models in a shared folder, register it once:
python3 custom_nodes/cmk_nodes/scripts/check_cmk_resources.py --models-root "/path/to/shared/models"
That audits the specific filenames the shipped CMK workflows expect - a non-empty model folder is not a hit - and on first run with --models-root it appends the folder to extra_model_paths.yaml. Restart afterwards so ComfyUI picks the paths up.
Issues worth knowing
Turning on Vue Nodes / Nodes 2.0 is not optional. CMK's dynamic nodes - the ones that hide and show widgets depending on mode - downgrade to plain LiteGraph rendering without it, and the pack says so at startup. CMK 2.5.5 is verified against ComfyUI 0.38.2 with frontend 1.53.6.
If a downstream module complains that the model pipe is missing the VAE, check checkpoint_vae before you dig further: it's almost always a workflow saved with an external VAE path that no longer exists. And on newer architectures where the VAE ships as a separate file, this node only looks in models/vae - if the file isn't registered there, it can't help.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| ckpt_name | COMBO | 0 options: | |
| vae_name | COMBO | 0 options: | |
| checkpoint_vae | BOOLEAN | true | — |
| PROCESSopt | CMK_PROCESS_SDXL | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| MODEL SDXL | CMK_MODEL_PIPE | — |