ComfyUI Node

Model Switch

The boolean that picks which model flows on

By FaraamFide·Created about a year ago·Updated about a year ago· 1
Model Switch
  • model_a
  • model_b
  • model
select_btrue

You've built the workflow where a LoRA is sometimes on and sometimes off, and you're tired of remaking the graph each time. That's the gap this node fills: one boolean decides which of two model streams keeps flowing, no editing required mid-generation. It's the "let me flip a switch instead of rerouting wires" node, and for API-driven setups it's how a backend call decides whether to apply that style LoRA at all.

Model Switch takes two models and a boolean, and passes one through. model_a and model_b are both MODEL inputs, select_b is a boolean that defaults to true, and you get a single model output. The logic is exactly as honest as it looks: select_b true hands you model_b, false hands you model_a. There's no blending, no strength slider, no magic - it's a pure passthrough switch written in a handful of lines. That's the whole point of this pack: minimal, predictable, no dependencies.

Wiring it up

Plug one model branch into each input. The classic pattern: model_a is your base checkpoint, model_b is the same model after a LoraLoader, and the output feeds your sampler. Flip select_b and the sampler gets either the vanilla model or the LoRA'd one. Drive select_b from a ParamBoolean node and you've turned the switch into an API-controllable parameter - the workflow decides whether the LoRA applies based on whatever your backend sends.

The catch: it's a switch, not a bypass

Where people get burned: the unselected branch still runs. ComfyUI evaluates the whole graph, so the LoRA loader feeding model_b executes even when you pick model_a. The node just chooses which result flows onward. If your goal was skipping the LoRA to save VRAM, this won't do it - the weights still load and the computation still happens. You'd need a mute/bypass for that, not a switch. This is the difference between "route the data" and "don't compute the data," and it's worth internalizing before you wire this into anything heavy.

Also note the scope: this node only handles MODEL type. No CLIP, no VAE, no latent switching - if you need those, this isn't the node, and the one-input-one-type design is deliberate. Keep it for the model stream and it never surprises you.

Install

Easiest via ComfyUI Manager (search "ComfyUI-ParamNodes"). Or manually:

cd ComfyUI/custom_nodes
git clone https://github.com/FaraamFide/ComfyUI-ParamNodes.git

Then restart ComfyUI. There are no extra Python dependencies and no model downloads - the pack only uses what ComfyUI already ships. You'll find this node under Helpers/Logic in the Add Node menu.

Troubleshooting

  • The unselected model still gets used. Re-read the paragraph above - that's expected behavior, not a bug. If you genuinely want the branch skipped, mute or bypass the node feeding it.
  • It's outputting the wrong model. Check your select_b semantics. The default is true, so unless you've changed it, model_b is what comes out. If you wired a boolean param in and inverted your expectations, flip the value or swap the inputs.
  • No model output at all. Both model_a and model_b are required inputs - there's no "empty" slot here. You have to wire both, even if one is only rarely used.

For what it is - a dead-simple conditional router for the model stream - it does the job and does nothing else. That's a feature.

CategoryHelpers/Logic

Inputs (3)

NameTypeDefaultDescription
model_aMODEL
model_bMODEL
select_bBOOLEANtrue

Outputs (1)

NameTypeDescription
modelMODEL