Nodes/ComfyUI-gen2/Apply Flux2 Fun Control
ComfyUI Node

Apply Flux2 Fun Control

Where the Flux2 Fun ControlNet actually happens — and why it won't break your other workflows

By petmycat·Created 7 months ago·Updated 19 days ago· 23
Apply Flux2 Fun Control
  • model
  • control_model
  • control_context
  • control_group
  • model
strength1.00
start_percent0.00
end_percent1.00

This is the node that does the actual ControlNet work in the Flux2 Fun chain: it takes your base Flux.2 Dev model, your loaded control branch, and your prepared 260-channel context, and produces a patched model you feed to the sampler. If you've got Load and Prepare wired up but nothing is wired into this node, you have no control happening at all - just a very expensive text-to-image.

How it works, without the scary part

The classic ControlNet idea - a trainable copy of the encoder blocks whose outputs get added into the frozen model's skip connections - doesn't survive contact with a DiT architecture like Flux.2. On these models the same job gets reimplemented against attention and MLP layers, and the gen2 pack does it the clean way: it clones your Flux.2 Dev MODEL, registers the managed control branch once, and composes clone-local replacements at double blocks 0/2/4/6. The key selling point is what it doesn't do: no flux.forward_orig replacement, no global monkey-patching of ComfyUI, no heuristic token-resizing. Every change lives on the cloned model instance, so running this graph doesn't silently corrupt every other Flux workflow in your install. That's a real virtue - a lot of ControlNet ports are just global patches waiting to break the next git pull.

The inputs that matter

  • model - your Flux.2 Dev diffusion model. Only Dev; Klein and Flux.1 will be rejected upstream.
  • control_model - the FLUX2_FUN_MODEL output from Gen2_LoadFlux2FunControlNet.
  • control_context - the FLUX2_FUN_CONTEXT output from Gen2_PrepareFlux2FunControl.
  • strength - 0 to 4, default 1. How hard the condition pushes. On a union ControlNet like this, 1.0 is a sane start; drop toward 0.3–0.7 for loose guidance, and the KB's standing advice applies here more than anywhere: once the composition is formed, you don't need the condition shouting anymore.
  • start_percent / end_percent - when during denoising the control applies, 0–1. This is the parameter ControlNet veterans fiddle with most. Holding the condition for the full sample can over-constrain detail; many structure-heavy workflows release it early (e.g. start 0, end 0.5).
  • control_group (optional) - feed in a FLUX2_FUN_CONTROL_GROUP from the Combine node to stack multiple controls.

The output is a patched model - wire it into your sampler the same way you'd wire the unpatched one.

Install

ComfyUI Manager: search ComfyUI-gen2. Or:

cd ComfyUI/custom_nodes
git clone https://github.com/petmycat/ComfyUI-gen2.git
cd ComfyUI-gen2
pip install -r requirements.txt

Restart. You need ComfyUI v0.28.0+ (this section is pinned to a specific recent commit), the Flux.2 Dev stack, and the 2602 checkpoint in models/controlnet. The Flux2 Fun section itself has no extra Python deps.

Where people get burned

Two things. First, VRAM - you're loading Flux.2 Dev (the 56B stack) plus a control branch that the loader never frees. Budget for it before you blame the node. Second, temper your expectations: the author states plainly that real-weight end-to-end parity is not yet claimed and the full GPU matrix hasn't passed. The architecture is deliberate and the harness exists, but treat first results as promising rather than gospel.

CategoryGen2/Flux2 Fun ControlNet

Inputs (7)

NameTypeDefaultDescription
modelMODEL
control_modelFLUX2_FUN_MODEL
control_contextFLUX2_FUN_CONTEXT
strengthFLOAT1.000–4
start_percentFLOAT0.000–1
end_percentFLOAT1.000–1
control_groupoptFLUX2_FUN_CONTROL_GROUP

Outputs (1)

NameTypeDescription
modelMODEL