Nodes/JLC Flux2 ControlNet/ JLC Flux2 ControlNet Inpaint Adapter Advanced - Experimental
ComfyUI Node

 JLC Flux2 ControlNet Inpaint Adapter Advanced - Experimental

The same mask-aware inpaint context, on both conditioning streams

By Damkohler·Created 2 months ago·Updated 26 days ago· 20
 JLC Flux2 ControlNet Inpaint Adapter Advanced - Experimental
  • positive
  • negative
  • vae
  • image
  • mask
  • positive
  • negative
  • vae
diagnosticstrue

JLC Flux2 ControlNet Inpaint Adapter Advanced - Experimental is the two-stream version of the pack's mask-aware inpaint adapter: it applies the same shared inpaint context to your positive and negative conditioning instead of one stream. If your FLUX.2 graph has a negative prompt and you want the mask-aware path on both sides, this is the variant you'd choose over the plain adapter.

How it works

Everything from the plain adapter carries over. The mask convention is the critical bit: white = editable/regenerate, black = preserve/retain. You feed positive, negative, vae, image, and mask; the node builds the packed context - control latent plus hard keep-mask plus masked-source Flux2 latent - and attaches it to both streams, so positive and negative stay consistent with the same mask and source. Outputs are positive, negative, and a pass-through vae.

The same two rules apply: only the first active ControlNet branch carries the shared inpaint context (additional branches are ordinary full-frame controls), and the hard binary mask thresholded at 0.5 means your source image and mask must already match the sampling canvas exactly - mismatched dimensions are rejected with a clear error, never silently resized. The sampling latent is the clean/empty Flux2 latent, same as the rest of the pack.

When to pick this over the plain adapter

If you run a guider with an actual negative side, this keeps the mask-aware conditioning identical across both streams. If your workflow only has one conditioning stream, you're carrying an unused socket for nothing - use the plain adapter. There's no functional difference in the mask handling; it's purely positive-and-negative routing.

Installing it

Same pack, same routine:

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

Restart ComfyUI or install "JLC Flux2 ControlNet" via ComfyUI Manager. Requires current ComfyUI with native FLUX.2 support, Python 3.10+, the FLUX.2-dev model stack, and the Fun ControlNet Union checkpoint in ComfyUI/models/controlnet/.

Be honest about what "experimental" means

The same caveats as its sibling, doubled across streams: seed-variable edge artifacts at hard mask boundaries, and dense auxiliary ControlNets that compete with the inpaint guidance. The author's validated recipe is OpenPose/DWPose as the host control with conservative, short-ranged auxiliary branches and reduced-size references. Test across seeds and keep expectations calibrated - this is the pack's frontier feature, and the README is refreshingly direct that mask expansion and feathering controls were removed after validation produced visible mask-shaped gray artifacts. If your project depends on it, budget for iteration, and have FLUX.1 Fill dev or an edit model in your back pocket for when it fights back.

CategoryFlux2 Controlnet

Inputs (6)

NameTypeDefaultDescription
positiveCONDITIONING
negativeCONDITIONING
vaeVAE
imageIMAGE
maskMASK
diagnosticsBOOLEANtrue

Outputs (3)

NameTypeDescription
positiveCONDITIONING
negativeCONDITIONING
vaeVAE