Nodes/ControlFlowUtils/🏁 Model Selector
ComfyUI Node

🏁 Model Selector

Pick a checkpoint without typing its name β€” the Model Selector

By VykosXΒ·Created 2 years agoΒ·Updated 2 years agoΒ· 147
🏁 Model Selector
  • run_after
  • Checkpoint
β—„checkpointsβ–Ύβ–Ί

The 🏁 Model Selector does exactly one job: it gives you a dropdown of every checkpoint ComfyUI can see and hands you back the one you picked. No more pasting filenames into CheckpointLoaderSimple and hoping you typed the .safetensors right. In a normal one-model workflow you barely need it, but this node wasn't built for those workflows. It was built for the flow-control setups this pack is actually about - loops, cycles, and universal switches where you want to swap which model gets used on each iteration.

How it works

Under the hood it's embarrassingly simple. When the node initializes, it calls ComfyUI's folder_paths.get_filename_list("checkpoints"), sorts the result alphabetically (case-insensitively, so "zephyr" doesn't jump past "Alpha"), and builds the dropdown from that list. When the prompt runs, it just returns the name you selected. That's it - it loads nothing, it warms nothing, it spends no VRAM.

That last point is worth hammering: the Checkpoint output is a string, not a model. It's the name that you feed into a real loader like CheckpointLoaderSimple's ckpt_name slot. The README's marketing copy about it being "ready to be forwarded into the Loader node of your choice" is half true - the picking part works, and the forwarding part is just a wire away.

The inputs that matter

  • checkpoints (required) - the dropdown. This is the whole node.
  • run_after (optional) - a dummy * input that does nothing except force this node to execute after whatever you connect to it. It's an execution-order trick the pack uses a lot: wire a late-running node in here and the selector won't run early and hold up your queue.
  • Output: Checkpoint - the selected filename as a string.

That's the entire surface area. One real input, one real output.

Why you'd actually reach for it

Say you're running a loop that generates with SDXL for a first pass and Flux for the second (a real pattern in this pack's community - people chain different models per pass and use the Universal Switch to route them). You need the name of the model available as data you can branch on. The selector gives you that as a plain value instead of you hardcoding a string somewhere and losing track of it.

It also helps in String Operation pipelines - maybe you want to log which model a batch used, or sanitize the filename before it becomes part of a save path. Feeding the selector's output into string ops is a genuinely handy combo.

Install and gotchas

Install once, use everywhere - this pack has no Python dependencies at all, just the git repo and a restart:

cd ComfyUI/custom_nodes
git clone https://github.com/VykosX/ControlFlowUtils

or use ComfyUI Manager and search ControlFlowUtils, then restart ComfyUI. Because it has no requirements.txt, there's nothing extra to pip install.

Two things to know. First, the "Result" mode described in the node's help text - the one that dumps all available checkpoints as a multiline string - is currently commented out in the code. Don't go hunting for it; it doesn't exist yet. Second, the dropdown is populated when the node is created, so if you drop a new checkpoint into your folder mid-session you'll need to hit ComfyUI's refresh button or recreate the node to see it. It's a picker, not a live file browser.

Category🐺 VykosX-ControlFlowUtils

Inputs (2)

NameTypeDefaultDescription
checkpointsCOMBO0 options:
run_afteropt*Optional input used only to ensure this node will run after any node you connect to this Input

Outputs (1)

NameTypeDescription
Checkpoint*Checkpoint name or list of checkpoints