Nodes/WAS Node Suite v3/Combo Selector
ComfyUI Node Runs on cloud

Combo Selector

Drive one node's dropdown from another

By WASasquatch·Created 3 years ago·Updated 4 days ago· 1,844
Combo Selector
    • combo
    • name
    • source
    source

    Dropdowns on ComfyUI nodes - the checkpoint picker, the sampler list, the scheduler menu - are widgets, not values. You click them by hand. The moment you want to choose one automatically, or route a choice from somewhere else in the graph, you're stuck: a widget can't be fed by a wire until you convert it to an input. Combo Selector is the node that makes dropdown choices into data.

    Under WAS Suite/Logic, it has exactly one control: a source dropdown listing the kinds of things ComfyUI knows about - checkpoints, loras, vae, clip, text_encoders, diffusion_models, controlnet, style_models, hypernetworks, upscale_models, embeddings, gligen, samplers, schedulers. Pick the kind and the node populates itself with what's actually installed on your machine. Then it hands you:

    • combo - the choice, on a wire a dropdown will accept. This is the one that matters.
    • name - the same choice as plain text (sd_xl_base_1.0.safetensors, euler, karras), for filenames and logs.
    • source - which list it came from, as text.

    How to actually connect it

    The mechanic is ComfyUI's "convert to input." On the target node - a Checkpoint Loader's ckpt_name, a LoRA loader's lora_name, a KSampler's sampler_name - right-click the dropdown and choose Convert to input (or drag off the widget on newer frontends). That turns the widget into a socket, and into that socket you plug Combo Selector's combo output. Now the choice is a wire: something else can change it per run.

    The point of all this is automation and centralisation. Want one "which model am I testing today" control that drives several loaders at once? Fan Combo Selector's combo out to each converted input. Want a random sampler each run? That needs a random picker upstream, but the routing is this node's job. Want a workflow where a text file or a saved setting decides the checkpoint? The name output gives you the string to compare against, and the combo output is the actual value to send.

    The two traps

    Dropdowns only take values from their own list. Convert a checkpoint loader's dropdown to an input and it will still reject anything that isn't a checkpoint name it knows about. So Combo Selector is great for picking from what's installed and useless for sneaking in a filename that isn't there - same constraint as the widget, which is correct behaviour, just not always expected.

    List contents change as you install things. The node reads the lists when it populates, so add a new model mid-session and the dropdown can be stale until the list refreshes. When your freshly installed checkpoint isn't in the selector's list, that's the cause, and it's the same refresh dance as the loader dropdowns themselves.

    Installing

    Part of WAS Node Suite v3 (WASasquatch/was-node-suite-comfyui), WASasquatch's MIT pack - going since 2023 and over a million downloads in. Logic/utility nodes like this need nothing extra: it reads your existing ComfyUI model folders and sampler lists, no packages or downloads of its own. Requires ComfyUI 0.14.0+, since the v3 suite is built on ComfyUI's newer node backend (which is also what makes those dropdown lists dynamically queryable).

    Via ComfyUI Manager, search WAS Node Suite v3, or clone:

    cd ComfyUI/custom_nodes
    git clone https://github.com/WASasquatch/was-node-suite-comfyui
    

    Restart ComfyUI and it shows up under WAS Suite/Logic. If the node's missing after install, your ComfyUI is older than 0.14.0 - update it first.

    CategoryWAS Suite/Logic

    Inputs (1)

    NameTypeDefaultDescription
    sourceCOMBOWhat to pick from: checkpoints, loras, vae, clip, text_encoders, diffusion_models, controlnet, style_models, hypernetworks, upscale_models, embeddings, gligen, samplers, schedulers.

    Outputs (3)

    NameTypeDescription
    combo*The choice, on a wire a dropdown accepts. Connect it to a converted dropdown such as ckpt_name, lora_name or sampler_name.
    nameSTRINGThe choice as text: sd_xl_base_1.0.safetensors, euler, karras.
    sourceSTRINGWhich list it came from: checkpoints, loras, samplers.