Flux Union ControlNet Apply
One node for InstantX/Shakker Union Pro on Flux
- conditioning
- control_net
- image
- vae
- CONDITIONING
- VAE
This is the all-in-one apply node for running a Flux "union" ControlNet - the kind where a single model file handles canny, depth, pose, tile and a few more instead of a separate checkpoint per control type. It's built specifically around the InstantX / Shakker Labs FLUX.1-dev-ControlNet-Union-Pro model, and it folds the load-a-controlnet-then-apply-advanced dance into one node with a type dropdown. If you're doing structural control on Flux Dev, this is the tidy way to do it.
The union approach is where Flux ControlNet actually landed: rather than juggling separate Canny and Depth files, one union model covers them all and you tell it which mode you're feeding. This node is the ComfyUI front for that on Flux.
How it works
You give it your positive conditioning, the loaded control_net, the preprocessed image (your canny map, depth map, pose skeleton, whatever), and - the key part - you set union_controlnet_type to match what that image is. The dropdown covers canny, tile, depth, blur, pose, gray, and low quality, which lines up exactly with what Union Pro was trained on. Get this dropdown wrong (feed a depth map but leave it on canny) and the control just won't bite properly.
Then strength, start_percent and end_percent decide how hard and for how long the control applies during denoising. The author's recommended window is strength 0.15-0.65 and end percent 0.2-0.9, which is in line with the broader Flux-ControlNet wisdom of running around 0.6 and releasing the condition partway through so the model can add its own detail in the later steps. Start at 0, end somewhere in the 0.5-0.9 range, keep strength modest.
The inputs and outputs that matter
union_controlnet_type- set it to match your input map. This is the one that trips people up.image- the preprocessed control image. Recommended preprocessors from the author: Canny Edge or Depth Anything V2 (from ControlNet Aux), DWPose for pose, Tile for tile/blur.strength- 0.15-0.65. Higher than that on a union model overcooks it fast.vae- yes, this node wants a VAE.
Outputs are CONDITIONING and VAE. The VAE passthrough is deliberate: you can chain two of these nodes to stack two control types (say canny + depth), and passing the VAE through means you only wire it once. The author says two units gives good results and explicitly warns against stacking more than two.
How to install it
ComfyUI Manager → search ControlAltAI Nodes → install → restart, or:
cd ComfyUI/custom_nodes
git clone https://github.com/gseth/ControlAltAI-Nodes
Unlike the rest of the pack, this one needs an actual model download. Grab FLUX.1-dev-ControlNet-Union-Pro from the Shakker-Labs HuggingFace repo and drop it in ComfyUI/models/controlnet. You'll also want a preprocessor pack (ControlNet Aux) to make the input maps, and a working Flux Dev setup.
Common issues
Number one is the type mismatch - the control seems to do nothing because the dropdown doesn't match the image you fed it. Number two is strength: Flux unions want lower numbers than SD-era ControlNets, so if your composition is getting mangled, drop strength toward 0.2 and pull end_percent down so the model gets free rein late in the sample. It's tested on Flux 1.Dev specifically; other Flux variants are your own experiment. And if you stacked three or four control units and results fell apart - that's expected, the author caps the useful count at two.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| conditioning | CONDITIONING | — | |
| control_net | CONTROL_NET | — | |
| image | IMAGE | — | |
| union_controlnet_type | COMBO | 7 options: canny, tile, depth, blur, pose, gray, +1 | |
| strength | FLOAT | 1.000–10 | — |
| start_percent | FLOAT | 0.0000–1 | — |
| end_percent | FLOAT | 1.0000–1 | — |
| vae | VAE | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| CONDITIONING | CONDITIONING | — |
| VAE | VAE | — |