Bypass Route Switcher
A switch node that re-labels its own inputs when your branches change
- output
The Bypass Route Controller decides which branch lives; the Bypass Route Switcher decides which branch's data gets through. They're sold as a pair, and if you're running the Controller, this is the node that turns a half-done bypass dashboard into something fully automated.
What it is
A classic index switch with a twist: instead of a fixed set of inputs you wire by hand and hope you remember what slot 3 was, the Switcher watches the Controllers on your canvas and rebuilds its own inputs to match. Drop a Controller in and the dropdown lists it. Select it and the Switcher grows an input_1, input_2, … slot for every group on that Controller, each labeled with the group's name. Rename a group, reorder it, add one, remove one - the Switcher's inputs track along. That's the feature the README is proudest of, and it genuinely saves time in a workflow with half a dozen branches.
The inputs that matter
controller- dropdown of the Controllers on the canvas; refreshes automatically as you add or remove them.index- INT, 1-based. Which slot to forward. Set it by hand or wire it to any integer output in your graph.input_1…input_N- the dynamic slots, one per group, auto-generated and auto-labeled.
Output: output, typed * (ANY). That wildcard is the engine fact that makes a switch node possible at all - it doesn't care whether it's routing a MODEL, a LATENT, an IMAGE or a string, so its sockets accept any of them. Whatever lands on the selected input comes out the far end untouched.
The automation trick
Wire the Controller's selected index output into the Switcher's index input. Now the same integer that drives the bypass state also drives the data routing: switch branches on the Controller and the Switcher follows, no extra wiring. That's the loop the whole pack is built around.
Under the hood it's transparent: the Python route() function reads input_{index} from its keyword arguments and returns whatever was connected there - or None if nothing was. Two details are worth knowing because the author coded around them:
- The dropdown choices change at runtime, which normally trips ComfyUI's "Value not in list" validation. The Switcher overrides
VALIDATE_INPUTSto always pass, which is exactly why the dynamic list works without error spam. - Rename a Controller and the Switcher re-matches it by node ID rather than title, so it doesn't silently point at a different branch.
Gotchas
Keep index inside the number of groups. Out of range, or a slot with nothing connected, and you get None out the far end - which quietly unplugs whatever downstream node expected a value. And note this is an index switch, not a fallback switch: it routes what you point it at, it doesn't scan for the first non-empty input the way rgthree's Any Switch does. Different jobs, both useful - reach for this one when you have parallel branches and a selector, not when you want "whichever branch is live, wins."
Install
Shared with the rest of the pack - ComfyUI Manager (search "ComfyUI-Bypass-Route-Tools"), or:
cd ComfyUI/custom_nodes
git clone https://github.com/JuPillet/ComfyUI-Bypass-Route-Tools
Restart ComfyUI. No dependencies, no model downloads; you'll find it under Multi Route Tools.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| controller | COMBO | 1 options: Select a BypassRouteController... | |
| index | INT | 11–64 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| output | * | — |