ControlNet Selector
Pick a ControlNet file without loading a single weight
- control_net_name
This one looks pointless for about thirty seconds, and then you hit the workflow that needs it. ControlNet Selector is a dropdown of every file in your models/controlnet folder that does exactly one thing: hands you back the file name as a string. No weights loaded, no GPU touched, no model in memory. It's a pure pass-through selector.
The use case is when you need the ControlNet name somewhere downstream rather than the model itself. Think a custom loader or script that wants a filename, a metadata or caption node that should record which controlnet you used, or an API-driven workflow where the graph takes a ControlNet name as a variable and you want a human to pick it from a dropdown instead of typing it. In that last case, a name-only node keeps the graph honest - nothing is silently loading a multi-hundred-MB model when you just wanted a string.
How it works
There's no cleverness here, which is the appeal. The node builds its list from folder_paths.get_filename_list("controlnet") and its get_control_net_name function returns whatever you picked, verbatim:
def get_control_net_name(self, control_net_name):
return (control_net_name,)
That's the whole implementation, and it's exactly right for a "hand the name along" utility.
Inputs and output
control_net_name- dropdown populated from yourmodels/controlnetfolder.- Output:
control_net_name, a string you can wire into anything that accepts a text value.
The sibling you should compare it to
This pack also ships Load Optional ControlNet Model, and people mix them up constantly. The difference matters:
- ControlNet Selector - outputs a name string, loads nothing.
- Load Optional ControlNet Model - outputs an actual CONTROL_NET object (and adds a "None" option so you can disable ControlNet on the fly).
If your graph needs a real model to feed an Apply ControlNet node, the Selector is the wrong tool. If your graph needs a filename, the loader is the wrong tool. They're the same problem solved at two different points in the pipeline.
Install
Standard for this pack: ComfyUI Manager → search "uber_comfy_nodes" ("Suplex Misc ComfyUI Nodes") → install → restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/saftle/uber_comfy_nodes
Restart, and it appears under Uber Comfy. No extra dependencies beyond Pillow, numpy, psutil and pynvml, and nothing to download model-wise.
One honest note
Because the dropdown reads the folder at node-creation time, files you add to models/controlnet won't appear until the node is refreshed (or ComfyUI restarts). Same behavior as the core loader, so nothing surprising - just don't expect a live folder watcher.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| control_net_name | COMBO | 0 options: |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| control_net_name | — |