ControlNet Stacker
Multi-ControlNet without the fiddly bits
- image
- cnet_stack
- timestep_keyframe
- CNET_STACK
Same job as the Adv. Stacker - build a stack of ControlNets and carry them down one wire - just without the step-scheduling controls. No start_percent, no end_percent. You pick a model, an image, and a strength, and the unit goes on the stack. That's it. If you don't need to time when each condition kicks in, this is the cleaner node and there's no reason to reach for the advanced one.
Why you'd stack at all
A single ControlNet locks one kind of structure. Real control often wants two or three at once: canny for hard edges and depth for the spatial layout, or openpose for the figure and depth for the room it's standing in. Stacking is how you run them together, each with its own weight, and let the model blend all of them during denoising. The stacker pattern keeps that readable - instead of a separate Apply node per ControlNet, you chain compact stacker nodes and hand the result off once at the end.
How it works
Each node appends one ControlNet's settings to a CONTROL_NET_STACK. Wire the cnet_stack output into the next node's cnet_stack input to grow the chain. The final CNET_STACK output feeds an Efficiency-style sampler or an apply-stack node, which is where the conditions actually get baked into your generation. Because nothing applies until that last step, reordering or toggling units mid-build is painless.
The inputs that matter
- control_net_name - your installed models, plus
Noneand the handyAuto: sd15/Auto: sdxl/Auto: sdxl_t2ientries that auto-select a matching union for your base. - image - this unit's reference map source.
- strength - 0 to 10, default 1. Modern unions want 0.65-0.8; stacked units at full strength stack their stiffness too, so ease off.
- preprocessor - depends on comfyui_controlnet_aux. No controlnet_aux, no choices but
None. - cnet_stack (optional) - the incoming stack; empty on the first node.
There's also resolution, an enabled toggle, control_net_override, and timestep_keyframe in the optional set if you ever need them.
Installing it
Via ComfyUI Manager: search comfyui-art-venture, install, restart. Or clone it:
cd ComfyUI/custom_nodes
git clone https://github.com/sipherxyz/comfyui-art-venture
and restart ComfyUI. It ships pre-installed on comfy.icu.
Common issues
If this node loads red in someone's workflow, the art-venture pack just isn't installed - it's a common under-the-hood dependency. Manager → "Install Missing Custom Nodes."
The stack-specific catch is the same as with the advanced version: a stack that never reaches a consumer node does nothing. If your ControlNets seem to have no effect, confirm the final CNET_STACK is actually plugged into something that applies it, then check that each model matches your checkpoint's architecture - an SDXL ControlNet on a Flux checkpoint silently does nothing.
Empty preprocessor dropdown? Install controlnet_aux. And if you find yourself wishing you could hold one condition through composition and drop another early, that's your cue to switch to the Adv. Stacker with its start/end percent.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| control_net_name | COMBO | 4 options: None, Auto: sd15, Auto: sdxl, Auto: sdxl_t2i | |
| image | IMAGE | — | |
| strength | FLOAT | 1.000–10 | — |
| preprocessor | COMBO | 1 options: None | |
| cnet_stackopt | CONTROL_NET_STACK | — | |
| control_net_overrideopt | STRING | None | — |
| timestep_keyframeopt | TIMESTEP_KEYFRAME | — | |
| resolutionopt | INT | 51264–2048 | — |
| enabledopt | BOOLEAN | true | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| CNET_STACK | CONTROL_NET_STACK | — |