Nodes/comfyui-colorfix-v3/Apply Ultimate Multi-ControlNet (FLUX)
ComfyUI Node

Apply Ultimate Multi-ControlNet (FLUX)

Three ControlNets on Flux without the spaghetti

By ihorpankin·Created 6 months ago·Updated 6 months ago· 6
Apply Ultimate Multi-ControlNet (FLUX)
  • positive
  • negative
  • controlnet_stack
  • vae
  • positive
  • negative
switchOn

Stacking ControlNets is one of the best things about the technique - canny for structure plus tile for fidelity, or depth plus pose if you're doing scene work. The problem is the graph. Two units means two apply nodes and a pile of crossed wires. This node - "Apply Ultimate Multi-ControlNet (FLUX)" from the colorfix-v3 pack - collapses the whole thing to one wire in, two wires out.

It takes a CONTROLNET_STACK (built by the pack's Ultimate Multi-ControlNet Stack node), your positive/negative conditioning, and applies every active entry in the stack to the Flux model. One node does the job that would otherwise be a chain of individual applies.

How it works

A stack is just a list of entries - each one (controlnet, image, strength, start_percent, end_percent, control_mode). The stack node defines those per slot; this node honors them. It walks the list, chains each controlnet onto the conditioning via set_previous_controlnet, and wraps each one in the same Flux control-mode logic the single-node variant uses: symmetric layer scaling, with per-entry decay for "My prompt is more important" and boost for "ControlNet is more important". Flux runs at cfg_scale=1.0 with guidance embedded, so there's no uncond path to zero - the modes are pure layer reweighting.

There's also a switch input, defaulting to On. Flip it to Off and the whole stack is bypassed without disconnecting anything - genuinely useful when you're A/B testing whether your control stack is even helping.

The inputs that matter

  • controlnet_stack - the stack from the UltimateControlNetStack node. Each entry keeps its own strength, timing, and mode; you don't set any of that here.
  • switch - global on/off. Leave it On.
  • positive / negative - your conditioning from CLIP Text Encode.

Optional vae is there for latent-style controlnets; most Flux workflows leave it unconnected. Outputs are positive and negative CONDITIONING, into the KSampler.

Install

Pure Python, no requirements.txt, no models:

cd ComfyUI/custom_nodes
git clone https://github.com/ihorpankin/comfyui-colorfix-v3.git

Restart ComfyUI; it's under colorfix-v3/flux. ComfyUI Manager: search "comfyui-colorfix-v3".

Where people get burned

CONTROLNET_STACK is a custom type that only this pack understands. You can't feed a stack into ComfyUI's stock ControlNet apply node - it'll throw a type mismatch. Pair it with this node (Flux) or the pack's SD multi-apply node (SDXL). Also remember the stack node's control modes are interpreted by whichever apply node consumes them: the Flux apply uses decay/boost layer scaling, the SD apply uses A1111's injection tricks. Same stack, different mode math depending on which side you're on - worth keeping in mind if you move a workflow between SDXL and Flux.

Categorycolorfix-v3/flux

Inputs (5)

NameTypeDefaultDescription
positiveCONDITIONING
negativeCONDITIONING
controlnet_stackCONTROLNET_STACK
switchCOMBOOnGlobal switch. Off = bypass all ControlNets.
vaeoptVAE

Outputs (2)

NameTypeDescription
positiveCONDITIONING
negativeCONDITIONING