Nodes/ ComfyUI-Light-N-Color/ControlNet Switcher
ComfyUI Node

ControlNet Switcher

Flip between two ControlNet conditions with one boolean

By KAVVATARE·Created about a year ago·Updated 10 months ago· 1
ControlNet Switcher
  • controlnet_condition_1
  • controlnet_condition_2
  • controlnet_condition
use_firsttrue

There's nothing clever going on here, and that's the point. This node takes two already-built ControlNet conditions and a boolean, and hands back whichever one you asked for. No blending, no math, no image processing - it's a toggle switch wearing a node's clothes, and its whole job is letting you flip between two ControlNet setups without rewiring your graph every time.

What it's for

Picture you're testing a depth-conditioned pass against a canny-conditioned pass on the same Flux ControlNet workflow, or comparing two different reference images run through the same ControlNet loader. Without a switch node, that means unplugging one wire and plugging in another every time you want to compare. With this node, you wire both conditions in once, and use_first becomes your A/B toggle - flip a boolean, hit queue, done. It's the same convenience rgthree-comfy and Impact Pack built entire quality-of-life node libraries around, just scoped to exactly one type.

That scoping matters: this isn't a general-purpose switch. It works specifically on the ControlNetCondition type - the object an XLabs-style Flux ControlNet loader/apply node produces, not a raw image and not a ControlNet model file. The XLabsNodes category on this node (and on its packmate, FluxSamplerPuLID) is the giveaway: both were built to slot into an XLabs-AI-style Flux + ControlNet workflow, and this switch is the piece that lets you A/B which condition feeds the sampler.

Inputs and outputs

There are exactly three fields, and they're all required - no optional slots to leave dangling:

  • controlnet_condition_1 and controlnet_condition_2 - both ControlNetCondition type. You need a ControlNet loader/apply node upstream of each one to actually produce this type; this pack doesn't ship one itself, only the switch.
  • use_first (boolean, default true) - true passes through condition 1, false passes through condition 2.

One output: controlnet_condition, the winner. Wire it straight into anything expecting that type - most naturally, into this same pack's FluxSamplerPuLID node, whose optional controlnet_condition input takes exactly this.

Installing it

Manager: search ComfyUI-Light-N-Color. By hand:

cd ComfyUI/custom_nodes
git clone https://github.com/KAVVATARE/ComfyUI-Light-N-Color.git

Restart ComfyUI. No models, no extra dependencies beyond the pack's baseline (numpy, torch, opencv-python, pillow) - this node does zero image math, it's pure graph plumbing.

Common issues

  • "It's rejecting what I'm plugging in" - both inputs want a ControlNetCondition object specifically, not a raw IMAGE and not a CONTROL_NET model. If you're getting a type-mismatch error, you're missing the loader/apply step that turns a ControlNet model plus an image into that condition object in the first place. This pack doesn't include that loader - it ships only the switch, three of them actually (this one, plus siblings for images and latents mentioned in the README), assuming you already have a way to produce the thing being switched.
  • Both slots are mandatory - there's no optional side and no default-empty behavior. If you only have one real ControlNet condition to offer, you'll need to feed the same upstream output into both sockets to satisfy the graph, since leaving either one unwired throws a missing-input error like any other required socket.
  • Missing/red node in a shared workflow - standard custom-node caveat: if someone opens a workflow that uses this node without the pack installed, it'll show up broken. Point them at the install steps above.
CategoryXLabsNodes

Inputs (3)

NameTypeDefaultDescription
controlnet_condition_1ControlNetCondition
controlnet_condition_2ControlNetCondition
use_firstBOOLEANtrue

Outputs (1)

NameTypeDescription
controlnet_conditionControlNetCondition