CMK Log Create
An empty log, so the rest of the chain has something to hold
- log_pipe
Zero inputs. One output. It hands you {"blocks": []} and that's the entire node.
It reads like a joke until you try to use CMK's toolbox nodes on their own. Nearly every CMK module that does anything takes a LOG pipe - not because it needs the data, but because the pack treats the log as part of the module contract. Append a block, hand the pipe on. Skip out of the flow and use a Toolbox node by itself, and you're staring at a required CMK_LOG_PIPE socket with nothing upstream to fill it.
That's the job. It's a seed value, in the same spirit as ComfyUI's primitive nodes: one authoritative source for a value that several places need.
Inputs and outputs
| | name | type |
|---|---|---|
| in | (none) | |
| out | log_pipe | CMK_LOG_PIPE |
The output is a dict with a blocks key holding an empty list. That's the full contract other nodes expect - every log helper in the pack starts from that shape and appends to it.
What to wire it into
CMK Log Create → your toolbox node's LOG input → onward. Any Toolbox node that accepts a log pipe (CMK Log Set Block, the FaceRebuild prepare nodes, the detailer, the boundary) can be a consumer, and CMK LOG CONCAT or CMK Log Export Text is where the chain ends.
Because the pipe is just a dict travelling on a wire, it merges naturally: node A appends, hands it to node B, which appends again. What you get at the end is an ordered record of what ran, in the order it ran - not a sortable table, an append-only narration. That's a deliberate choice in this pack, and it's the reason a CMK report reads like a procedure rather than a dashboard.
Install
cd ComfyUI
git clone https://github.com/CMKFlow/cmk_nodes.git custom_nodes/cmk_nodes
python3 custom_nodes/cmk_nodes/scripts/install_cmk_requirements.py
Manager users: search CMK Flow (registry package cmk-flow, publisher CMKFlow), install and restart. The node has no dependencies of its own, but the pack's requirements.txt is heavy (insightface, onnxruntime, ultralytics, segment-anything, nudenet==3.4.2, opencv-python, imageio-ffmpeg) and a manual git clone will not install any of it - that second command is part of the install, not an optional extra. It prints CMK dependency check: OK when all mandatory imports resolve.
Two things worth flagging
It's not a logger you can point at console output. Nothing here writes to stdout or to a file. It starts an in-memory data structure that CMK's own nodes populate. If what you want is a text file of the run, you render the pipe at the end with CMK Log Export Text and feed the resulting STRING to a save-text node.
Skipping it costs you nothing. Most CMK flow modules start their own log chain - CMK Flow · Load Image literally outputs a LOG with a Load Image block already in it. CMK Log Create is for the case the pack calls the open toolbox: loose Toolbox nodes, no flow around them, and a required socket to satisfy. Small node, correct node.
Inputs (0)
No inputs
Outputs (1)
| Name | Type | Description |
|---|---|---|
| log_pipe | CMK_LOG_PIPE | — |