Interactive Switch (with parameters)
The click-to-choose switch that keeps latent/mask/string/int/float attached
- selector1
- selector2
- selector3
- selector4
- selector5
- selector6
- selector7
- selector8
- images
- parameter_latent
- parameter_mask
- parameter_string
- parameter_int
- parameter_float
This is InteractiveSwitch's bigger sibling. Where the plain switch only ever forwards an image, this one unpacks a whole bundle - image, latent, mask, string, int, and float - from whichever InteractiveSelectorWithParameters node you clicked. If your branches carry more than just a picture (different latents mid-denoise, different captions, different seeds per candidate), this is the node that lets you pick one and keep the rest of its data intact instead of losing everything but the thumbnail.
How it works
Wire up to eight InteractiveSelectorWithParameters nodes into the eight selectorN slots. Each one shows its image and holds onto whatever latent/mask/string/int/float you fed it. Click one; the switch reads which selector is now selected and releases that selector's full bundle through its six separate outputs. Execution downstream just sees a normal IMAGE, LATENT, MASK, STRING, INT, and FLOAT - it doesn't need to know a human made a choice to get there.
Same single-selector trick works here too: wire in just one InteractiveSelectorWithParameters and the switch becomes a gate - click it to let that whole bundle of data through, leave it unclicked and nothing downstream fires.
The inputs and outputs that matter
selector1–selector8(all optional, typeinteractive_images) - only accept InteractiveSelectorWithParameters output, not the plain selector's. You don't need to fill all eight.images(IMAGE, output) - the picked branch's image.parameter_latent(LATENT),parameter_mask(MASK),parameter_string(STRING),parameter_int(INT),parameter_float(FLOAT) - the rest of the bundle, released once a selection is made. You're not obligated to consume all five; wire onward only the ones a given workflow actually needs (e.g. justparameter_latentif you're picking between candidate latents to keep sampling on).
Because everything's optional on the input side and every parameter type gets its own dedicated output, this node works fine even if only some of your selectors bother to fill in, say, parameter_string - the unfilled ones just pass through empty/default for that slot.
How to install it
Via ComfyUI Manager: search "ComfyUI-Interactive". Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/lquesada/ComfyUI-Interactive
Restart after either. No pip requirements, no model downloads - the whole pack is UI and graph logic.
Common issues & troubleshooting
I only need the image, do I have to deal with the other five outputs? No - leave parameter_latent/parameter_mask/etc. unconnected downstream if you don't need them. They're there so you can carry more than an image; nothing forces you to use all of it.
Downstream nodes complain about a missing latent/mask even though I picked a branch. Check the selector that got clicked actually had that parameter wired in on its own side. The switch can only release what its selectors were given - if none of your InteractiveSelectorWithParameters nodes fed a parameter_mask, the switch has nothing real to hand you either.
Should I use this or the plain InteractiveSwitch? If every branch is "just an image," the plain switch is simpler and there's no reason to add the extra outputs. Reach for this one specifically when the thing you're choosing between is more than a picture - a latent you'll keep denoising, a mask for the next inpaint step, or the seed/prompt pair that produced a candidate.
Same queue and Anything Everywhere caveats as the rest of the pack. Auto-enqueue needs to be off with an empty queue for the pause-and-wait to hold, and routing the selector↔switch links through cg-use-everywhere nodes can break the state propagation this whole pack depends on.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| selector1opt | interactive_images | — | |
| selector2opt | interactive_images | — | |
| selector3opt | interactive_images | — | |
| selector4opt | interactive_images | — | |
| selector5opt | interactive_images | — | |
| selector6opt | interactive_images | — | |
| selector7opt | interactive_images | — | |
| selector8opt | interactive_images | — |
Outputs (6)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| parameter_latent | LATENT | — |
| parameter_mask | MASK | — |
| parameter_string | STRING | — |
| parameter_int | INT | — |
| parameter_float | FLOAT | — |