Model Switch
The boolean that picks which model flows on
- model_a
- model_b
- model
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_bsemantics. The default istrue, so unless you've changed it,model_bis 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_aandmodel_bare 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.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| model_a | MODEL | — | |
| model_b | MODEL | — | |
| select_b | BOOLEAN | true | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |