Load CtrLoRA Model ππ π π
Swappable ControlNet adapters in ComfyUI
- CONTROL_NET
CtrLoRA is a neat idea: instead of a full, heavy ControlNet per condition, you train one shared base ControlNet once and then attach small LoRA-style adapters for each specific condition - canny, lineart, depth, whatever. This loader takes the base plus one of those adapters and hands you a ready-to-use ControlNet. The upshot is you can carry a bunch of tiny condition LoRAs instead of a folder full of multi-gigabyte ControlNet checkpoints.
It slots into the broader picture the ControlNet KB paints - the modern trend of making conditioning cheaper and more modular, with LoRA-shaped control modules (kohya's ControlNet-LLLite is the other big example) instead of a fully duplicated encoder per condition. CtrLoRA takes the same "small adapter" approach and applies it to the classic ControlNet architecture.
How it works
You load two things. The base is the shared CtrLoRA base ControlNet - the common backbone that every adapter plugs into. The lora is the condition-specific adapter that specializes that backbone for one control type. The loader combines them into a single Advanced ControlNet, so downstream it behaves like any other ControlNet: same Apply node, same access to the pack's scheduling and custom-weight features.
Both inputs are dropdowns (COMBO) populated from your model folders, so there's nothing to type - but you do have to have downloaded the files first. The pack README points you at the CtrLoRA GitHub page (xyfJASON/ctrlora) for the base and the relevant adapter models; grab them there.
Inputs and outputs
- base (required) - the CtrLoRA base ControlNet, from a dropdown.
- lora (required) - the condition-specific CtrLoRA adapter, from a dropdown.
Output: CONTROL_NET - a loaded Advanced ControlNet. Wire it into the control_net input on an Apply Advanced ControlNet node, then feed that node your preprocessed control image.
That's the whole node - two picks and a plug. The value is entirely in the model design; the loader just assembles it.
Installing the pack
Get ComfyUI-Advanced-ControlNet through ComfyUI Manager (Install Custom Nodes, search the title, restart) or with cd ComfyUI/custom_nodes && git clone https://github.com/Kosinkadink/ComfyUI-Advanced-ControlNet followed by a restart. It's Kosinkadink's pack, pure ComfyUI, no build step. The node code is here, but the CtrLoRA models are a separate download - the base and adapters from the CtrLoRA project, dropped into your ControlNet models directory so they show up in the dropdowns.
Common gotchas
Empty dropdowns mean the models aren't installed. This is the most common snag: the node ships with the pack, but the base and adapter files do not. Download them from the CtrLoRA repo the README links, put them where ComfyUI can see them, and restart.
Second, the base and the adapter have to be a matched set - a CtrLoRA adapter is trained against a specific base, so mixing an adapter with the wrong base (or with a plain, non-CtrLoRA ControlNet) won't work. Load the base the adapter expects.
Finally, CtrLoRA is an SD 1.5-era ecosystem. As the ControlNet KB notes, no SD-era ControlNet file loads on a modern DiT base like Flux, Qwen-Image or Z-Image - so use CtrLoRA on the models it was trained for, and reach for the architecture-native union ControlNets on the newer bases.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| base | COMBO | 0 options: | |
| lora | COMBO | 0 options: |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| CONTROL_NET | CONTROL_NET | β |