Nodes/JLC Flux2 ControlNet/ JLC Flux2 ControlNet Apply Advanced
ComfyUI Node

 JLC Flux2 ControlNet Apply Advanced

One ControlNet, both conditioning streams, zero extra wiring

By Damkohler·Created 2 months ago·Updated 26 days ago· 20
 JLC Flux2 ControlNet Apply Advanced
  • controlnet
  • positive
  • negative
  • vae
  • control_image
  • positive
  • negative
strength0.75
start_percent0.000
end_percent1.000
diagnosticstrue

JLC Flux2 ControlNet Apply Advanced is the sibling of the plain Apply node, and the difference is one word: it takes both positive and negative conditioning and attaches the same shared ControlNet configuration to each. One control image, one strength, one timestep range - applied to both streams at once, so you never have to duplicate a branch or risk the two halves of your conditioning drifting apart.

When you'd reach for it

If your FLUX.2 graph already splits into positive and negative conditioning (the standard shape for a guider with a negative side), the plain Apply node forces you to pick one stream - or wire two Apply nodes with identical settings, which is begging for a mismatch you'll debug for an hour. The Advanced variant exists precisely so the same branch is guaranteed identical on both sides. It's the node you want the moment your workflow has a negative prompt worth enforcing.

How it works

The mechanism is the same as the plain Apply: your control_image is reordered into the BCHW hint format and attached to each conditioning stream through the pack's native hook path, so the FLUX.2 transformer, sampler, and model lifecycle stay completely stock. The ControlNet handle from the JLC Loader is shared, not duplicated - one loaded side model serves both streams.

The inputs you'll set:

  • controlnet - from the JLC Flux2 ControlNet Loader.
  • positive / negative - your two conditioning streams.
  • vae - the FLUX.2 VAE.
  • control_image - the prepared depth/pose/canny map (preprocess upstream; this pack ships no preprocessors).
  • strength (0.75 default) - the union model's published sweet spot is 0.65–0.80, so stay near the default.
  • start_percent / end_percent - the denoising window the condition is active.
  • diagnostics - verbose logging toggle.

Outputs are positive and negative conditioning, ready for the guider. If both streams must share the exact same branch, that's the whole point of this node.

Installing it

Same pack as every node here:

cd ComfyUI/custom_nodes
git clone https://github.com/Damkohler/JLC-Flux2-ControlNet.git

Restart ComfyUI, or install "JLC Flux2 ControlNet" from ComfyUI Manager. You need a current ComfyUI with native FLUX.2 support, Python 3.10+, a FLUX.2-dev model stack, and the Fun ControlNet Union checkpoint in ComfyUI/models/controlnet/. Nothing extra to pip-install.

Gotchas

Don't chain this after another Apply or Orchestrator node - the pack's Orchestrator explicitly wants clean conditioning with no ControlNet already attached. If you're conditioning negative with the same branch, remember that on FLUX.2-dev the negative prompt is weaker than you're used to from SDXL; the ControlNet branch won't rescue an empty or lazy negative. And same as the plain Apply: strength = 0 bypasses the branch but you still must supply a real control image - None is a hard error, not a suggestion.

CategoryFlux2 Controlnet

Inputs (9)

NameTypeDefaultDescription
controlnetJLC_FLUX2_CONTROLNET
positiveCONDITIONING
negativeCONDITIONING
vaeVAE
control_imageIMAGE
strengthFLOAT0.750–2
start_percentFLOAT0.0000–1
end_percentFLOAT1.0000–1
diagnosticsBOOLEANtrue

Outputs (2)

NameTypeDescription
positiveCONDITIONING
negativeCONDITIONING