ControlNet Loader
Load a ControlNet, by name or override
- timestep_keyframe
- CONTROL_NET
At a glance this is just the ControlNet loader you already know - pick a model file, get a CONTROL_NET out, wire it into a ControlNet Apply node. What ArtVenture adds is two things the core loader doesn't have: a string override so you can pick the model by name from outside the graph, and a timestep keyframe input for scheduling. If you never need either, the built-in loader does the same job. If you're automating, or you're doing per-step control scheduling, this is the upgrade.
Quick refresher on why you're loading a ControlNet at all: it's the node that turns a preprocessed hint - a depth map, a pose skeleton, a canny edge map - into conditioning that steers where things go while your prompt decides what they are. The loader is only half the story. It brings the model in; a preprocessor makes the hint image; an Apply node marries them. Loading the ControlNet without feeding it a matching hint does nothing.
How it works
It reads a ControlNet checkpoint from ComfyUI/models/controlnet and returns it as a CONTROL_NET. The override input lets an external caller substitute a model name as a string - the same automation-friendly move ArtVenture uses across its loaders, so a fixed graph can load a different ControlNet per request. The keyframe input hooks into timestep scheduling for control that changes over the denoising process rather than staying flat.
Inputs and outputs
control_net_name(required) - the dropdown of ControlNet files it finds on disk. Empty menu means nothing's in your controlnet folder yet.control_net_override(optional, string, defaultNone) - pass a model name here to override the dropdown. This is the automation hook; leave it onNonefor normal manual use.timestep_keyframe(optional,TIMESTEP_KEYFRAME) - for scheduled control. This type comes from the Advanced-ControlNet ecosystem, so you'll only wire it if you're already using keyframe nodes.
The output is CONTROL_NET - into a ControlNet Apply (Advanced) node, alongside your conditioning and the hint image.
Installing it
Ships in the ArtVenture pack. ComfyUI Manager: search comfyui-art-venture, install, restart. By hand:
cd ComfyUI/custom_nodes
git clone https://github.com/sipherxyz/comfyui-art-venture
Restart ComfyUI. The node is code-only, but ControlNet model files aren't - you download those separately into ComfyUI/models/controlnet. Which one depends on your base model: a union ControlNet for Flux, Z-Image, or SDXL covers most conditions in a single file these days, and that's the easy path - one download instead of a dozen single-condition models.
Common issues
Empty control_net_name dropdown. No ControlNet files in models/controlnet. Download one that matches your base model and restart.
Loaded fine, but the image ignores it. The loader isn't the problem - check the hint image and the Apply node. A ControlNet only conditions on a preprocessed map, and it has to match the model: a depth ControlNet wants a depth map, not a raw photo. Also mind the base match - an SD 1.5 ControlNet will not load usefully against a Flux model, because the architecture is different.
Weight and timing feel off. Modern union ControlNets like lower strengths than the old SD-era default of 1.0 - think roughly 0.65–0.9 depending on the model and condition - and ending control partway through the steps frees the later steps for the model's own detail. If you loaded a union, that's where the tuning is, not in the loader.
The timestep_keyframe input is confusing. It's optional and only relevant for scheduled/keyframed control. If you're not doing that, leave it unconnected and ignore it.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| control_net_name | COMBO | 0 options: | |
| control_net_overrideopt | STRING | None | — |
| timestep_keyframeopt | TIMESTEP_KEYFRAME | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| CONTROL_NET | CONTROL_NET | — |