JLC Flux2 ControlNet Loader
One loader for every FLUX.2 Fun ControlNet you'll actually run
- controlnet
If you've spent time with FLUX.2, you know the awkward part: ComfyUI core doesn't ship a native ControlNet node for it. The support came from third-party packs, and the Alibaba PAI Fun ControlNet Union checkpoint is what they all load. JLC Flux2 ControlNet Loader is the front door of this pack's toolchain - one node that reads a compact FLUX.2-dev-Fun-Controlnet-Union checkpoint and hands you a reusable ControlNet handle with zero precision guesswork.
What makes it different
Two checkpoints exist for this architecture, and this loader treats both as one thing. The original Alibaba PAI dense BF16 checkpoint (FLUX.2-dev-Fun-Controlnet-Union), and the JLC mixed FP8/BF16 derivative (FLUX.2-dev-Fun-Controlnet-Union-2602-JLC-FP8), which slashes the side model's footprint the way fp8 always does - half the bytes, near-invisible quality cost for inference. In most packs you'd get a separate "FP8 loader" and a precision dropdown to trip over. Here the loader inspects the checkpoint's safetensors metadata and tensors at load time and picks the dense path or ComfyUI's native mixed-precision path automatically. No selector, no second node family, no way to get it wrong.
It's also genuinely native. The backend registers a lightweight JLC_FLUX2_CONTROLNET handle and defers materializing weights until the sampler actually needs them, which keeps everything under ComfyUI's own model-management lifecycle - DynamicVRAM, offloading, cleanup all behave like you expect. No monkey-patching of the FLUX.2 transformer.
The inputs that matter
Just one: controlnet_name. The dropdown is pre-filtered - it only lists safetensors in ComfyUI/models/controlnet/ whose header matches the supported Fun ControlNet architecture, so you can't fat-finger a SDXL ControlNet into a FLUX.2 pipeline. Output is a single controlnet socket of the pack's custom JLC_FLUX2_CONTROLNET type, which feeds straight into the Apply, Apply Advanced, or Orchestrator nodes.
Installing it and getting a checkpoint
cd ComfyUI/custom_nodes
git clone https://github.com/Damkohler/JLC-Flux2-ControlNet.git
Restart ComfyUI (or install "JLC Flux2 ControlNet" via Manager). Then get weights - the repo doesn't bundle them:
- Dense BF16: alibaba-pai/FLUX.2-dev-Fun-Controlnet-Union
- Mixed FP8/BF16: Damkohler/FLUX.2-dev-Fun-Controlnet-Union-2602-JLC-FP8
Drop the file in ComfyUI/models/controlnet/ and restart. If the file is small and the card says FP8, that's the one to pick on limited VRAM.
Where people get burned
The empty dropdown reading "[No compatible FLUX.2 Fun ControlNet checkpoints found]" is the number-one symptom: the checkpoint isn't in models/controlnet, hasn't been picked up since restart, or is a different architecture. The loader validates against the FLUX.2 base at runtime too - if you attach it to a non-FLUX.2 model you'll get a clear error about global modulation or patch size, not silent garbage. And a note on licensing: the dense checkpoint carries the FLUX.2 non-commercial terms, so read the model card before you ship anything commercial on top of it.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| controlnet_name | COMBO | Only safetensors checkpoints whose header matches the supported FLUX.2 Fun ControlNet architecture are shown. Dense BF16 and supported mixed FP8/BF16 representations are both accepted automatically. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| controlnet | JLC_FLUX2_CONTROLNET | — |