ControlNet Name
One dropdown to choose which ControlNet your whole graph uses
- control_net_name
ControlNet is how you tell a diffusion model where things go - edges, depth, pose - and the "right" ControlNet for a workflow changes constantly. Canny for this image, depth for that one, a union model when you want one file to do everything. If you've got a big graph with a ControlNet feeding into Multi-ControlNet stacks, typing the model name into a couple of loaders and forgetting one is a classic way to silently change your output. ControlNetName fixes that the same way the rest of the lhyNodes name family does: one dropdown, one string out.
How it works
The dropdown lists everything in your models/controlnet folder via folder_paths.get_filename_list("controlnet") - the exact list ControlNetLoader uses, subfolders included. Select a file and the node passes that name through as the pack's "any" type. Wire it the usual way: right-click ControlNetLoader → Convert control_net_name to input, connect this node, and the loader's widget is replaced by a single authoritative dropdown.
It's the same shape as CheckpointName, CLIPName, LoraName and the rest in the pack - learn one, you've learned them all. And because the output is plain text, you can also wire it into a filename prefix or a text node so your saved outputs record which ControlNet produced them. With Multi-ControlNet setups - three separate conditions running at once - that metadata is the difference between "why is this one weird" and "oh, it was the depth map's ControlNet."
Inputs and outputs
control_net_name- dropdown of your ControlNet models.
One output: control_net_name (*), the filename string.
Installing it
Part of ComfyUI-lhyNodes:
- ComfyUI Manager → search
lhyNodes→ Install, restart. - Or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/lihaoyun6/ComfyUI-lhyNodes.git
python -m pip install -r ComfyUI-lhyNodes/requirements.txt
Restart ComfyUI.
Where people get burned
Name node, so the usual caveats: it doesn't load anything, and it doesn't validate that the file is usable - a corrupt or wrong-architecture ControlNet file will still show in the dropdown and only fail when the loader touches it. And here's the one that gets people: ControlNet files are frequently specific to a base model family (SD 1.5 ControlNets don't work on SDXL checkpoints). This node can't know about that - it's just a picker. You still have to pick the right model for your base. What it saves you from is picking it in three different places.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| control_net_name | COMBO | 0 options: |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| control_net_name | * | — |