ποΈ BuimenLabo Multi ControlNet Loader
One ControlNet loader that auto-picks the SD or SDXL file for you
- checkpoint
- CONTROL_NET
Here's the honest pitch for the BuimenLabo Multi ControlNet Loader: it's a convenience node that holds two ControlNet filenames - one for SD, one for SDXL - and loads whichever matches the checkpoint you've got loaded. "Multi" is doing heavy lifting there. It loads one ControlNet per run, not several at once; think "auto-switching between SD and SDXL," and you've got the real feature.
Is that worth a node? If you swap between SD 1.5 and SDXL checkpoints in the same workflow, yes. The ControlNet ecosystem is architecture-locked - an SD 1.5 ControlNet file simply does not load on an SDXL base and vice versa (and nothing SD-era loads on Flux-era models at all). A loader that picks the right file for you removes a whole class of "why is my pose map doing nothing / erroring" confusion.
How it works
It's a thin wrapper around ComfyUI's own ControlNet loading, with one clever bit. You give it a checkpoint (the MODEL output of a Checkpoint Loader) and it inspects that model's config to decide what architecture you're on: if the UNet config reports model_channels == 320 and an adm_in_channels is present, it's judged SDXL; otherwise it falls back to scanning the model's name for the string "sdxl". Based on that, it picks xl_cn_name or sd_cn_name and loads the file through comfy.controlnet.load_controlnet.
Inputs and outputs
- checkpoint (MODEL, required) - wire the model output from your Checkpoint Loader here. This is what triggers the architecture detection, so don't skip it.
- sd_cn_name - a dropdown of every ControlNet file in your
models/controlnetfolder. - xl_cn_name - same dropdown, separate slot for your SDXL model.
The single output is CONTROL_NET, which wires into a ControlNet Apply / ApplyAdvanced node alongside a preprocessed condition image (canny, depth, openpose, etc.) and the model's conditioning.
Installing it
Same pack as the other BuimenLabo nodes: ComfyUI Manager β search "BuimenLabo" β install, or git clone https://github.com/comnote-max/builmenlabo into ComfyUI/custom_nodes. No extra Python dependencies beyond the pack's usual light set - this node uses ComfyUI's built-in folder_paths and comfy.controlnet. What you do need is actual ControlNet model files in ComfyUI/models/controlnet, because the dropdowns are generated from that folder.
Where people get burned
- Empty dropdowns mean no ControlNet models. The node reads your
controlnetfolder at startup; install it before you've downloaded any ControlNet files and both dropdowns come up blank. Add the.safetensorsfiles and restart. - The detection is a heuristic. It's built for the classic SD 1.5 vs SDXL split, and the pack's README only claims SD/SDXL. Load a newer architecture and the model-config check can misjudge it - you'll see the loader print which branch it chose, so glance at the console if the output looks wrong.
- You have to populate both slots sensibly. It picks whichever file matches the detected architecture, so a mistaken SD file sitting in the XL slot will get loaded whenever you're on an SDXL checkpoint. Name your files clearly (
control_v11p_sd15_openposevscontrol_openpose_fp16_sdxl) and keep the right one in the right slot. - It's one ControlNet, not many. "Multi" refers to holding two candidates, not stacking conditions. For real multi-ControlNet, you'd use multiple apply nodes or a dedicated multi-loader.
Honest closing take: if you're firmly on one architecture, a stock Load ControlNet node plus good file naming does the same job with less machinery. This loader earns its place the moment you're the person toggling between SD 1.5 and SDXL in a shared template - then the auto-detect genuinely saves you from hunting for the right file name every time.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| checkpoint | MODEL | β | |
| sd_cn_name | COMBO | 0 options: | |
| xl_cn_name | COMBO | 0 options: |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| CONTROL_NET | CONTROL_NET | β |