Nodes/Bjornulf_custom_nodes/๐Ÿ“๐Ÿ‘ˆ Model-Clip-Vae selector (๐ŸŽฒ or โ™ป or โ™ป๐Ÿ“‘)
ComfyUI Node

๐Ÿ“๐Ÿ‘ˆ Model-Clip-Vae selector (๐ŸŽฒ or โ™ป or โ™ป๐Ÿ“‘)

One node to select, random, or loop your checkpoints

By justUmenยทCreated 2 years agoยทUpdated about a year agoยท 545
๐Ÿ“๐Ÿ‘ˆ Model-Clip-Vae selector (๐ŸŽฒ or โ™ป or โ™ป๐Ÿ“‘)
  • model_1
  • clip_1
  • vae_1
  • model_2
  • clip_2
  • vae_2
  • model
  • clip
  • vae
  • current_selection
โ—„number_of_inputs2โ–บ
โ—„selected_number0โ–บ
โ—„RANDOMfalseโ–บ
โ—„LOOPfalseโ–บ
โ—„LOOP_SEQUENTIALfalseโ–บ
โ—„jump1โ–บ
โ—„seed0โ–บ

The pack has a whole zoo of checkpoint nodes - random this, loop that - and at some point the author consolidated the logic into one universal switch. Model-Clip-Vae selector is that node. Feed it several model/clip/vae trios and it can do any of four things with them: pass a specific one you pick, choose one at random, loop over all of them, or step through them one-per-run in sequential mode. Same node, four behaviours, flipped by toggles.

If you were about to wire up separate random and loop checkpoint nodes, use this instead. It's the "manage multiple models without a rats' nest" answer.

How it works

Unlike the on-demand loader variants, this one takes already-loaded MODEL/CLIP/VAE trios as inputs - so you connect your Load Checkpoint nodes into its model_N/clip_N/vae_N slots. Then the mode toggles decide what happens: with everything off it forwards the trio named by selected_number; turn on RANDOM and it picks one via the seed; turn on LOOP and it emits a list so the downstream graph runs once per trio; LOOP_SEQUENTIAL advances one step each time you queue the graph. Because the loop modes output lists, the model/clip/vae outputs are list-typed.

The inputs and outputs that matter

  • number_of_inputs (INT, default 2) - how many trios you're wiring in, up to 10.
  • model_1 / clip_1 / vae_1, model_2 / clip_2 / vae_2, โ€ฆ - the trios themselves, connected from your checkpoint loaders.
  • selected_number (INT) - which trio to use in plain manual-select mode (all toggles off).
  • RANDOM, LOOP, LOOP_SEQUENTIAL (booleans) - the mode switches. Turn on one; leaving all off gives you manual selection. Don't stack them and expect sane behaviour.
  • jump (INT) - the step size for sequential mode (advance by more than one each run).
  • seed (INT) - drives RANDOM mode.

Outputs: model, clip, vae (list-typed, to your sampler/decoder) and current_selection (INT - which trio is active right now, great for logging or feeding an If-Else).

How to install it

ComfyUI Manager โ†’ Bjornulf_custom_nodes โ†’ install โ†’ restart. Manual:

cd ComfyUI/custom_nodes
git clone https://github.com/justUmen/Bjornulf_custom_nodes
pip install -r Bjornulf_custom_nodes/requirements.txt

then restart. Uses ComfyUI's own model handling - no special dependency.

Common issues & troubleshooting

Everything's preloaded and my VRAM is gone. Because you wire loaded trios in, every connected Load Checkpoint sits in memory at once. That's the cost of instant switching. If you can't afford to hold them all, use the on-demand Model Selector node instead, which loads one at a time.

Two modes at once did something weird. Pick a single mode. RANDOM, LOOP, and LOOP_SEQUENTIAL are meant to be mutually exclusive; enabling several is undefined territory. All off = manual select by selected_number.

Sequential isn't advancing. LOOP_SEQUENTIAL moves one step per workflow run, not within a single run - queue the graph again to advance. Use jump if you want bigger steps.

Downstream node rejects a "list." The loop modes output lists on purpose (that's how ComfyUI iterates). If a node can't take a list, you're probably in a loop mode when you meant manual select - turn the toggles off.

selected_number seems off by one. It's an index into your trios; check whether your first trio is 0 or 1 and adjust. Wire current_selection into a Show node to confirm what's actually active.

CategoryBjornulf

Inputs (13)

NameTypeDefaultDescription
number_of_inputsINT22โ€“10โ€”
selected_numberINT00โ€“10โ€”
model_1MODELโ€”
clip_1CLIPโ€”
vae_1VAEโ€”
model_2MODELโ€”
clip_2CLIPโ€”
vae_2VAEโ€”
RANDOMBOOLEANfalseโ€”
LOOPBOOLEANfalseโ€”
LOOP_SEQUENTIALBOOLEANfalseโ€”
jumpINT11โ€“10โ€”
seedINT0-1โ€“9223372036854776000โ€”

Outputs (4)

NameTypeDescription
modelMODELโ€”
clipCLIPโ€”
vaeVAEโ€”
current_selectionINTโ€”