Nodes/ComfyUI Eclipse/Any Multi-Switch Mixed
ComfyUI Node

Any Multi-Switch Mixed

The fallback switch that doesn't care what type your branches are

By r-vage·Created 12 months ago·Updated 14 days ago· 38
Any Multi-Switch Mixed
  • inputs
  • output

Every workflow grows one of these eventually: a socket that should carry whatever the last run actually produced. A captioned video if the render worked, a still image if you muted that branch, a string if you're testing. Two branches, one destination, and ComfyUI refuses to let you wire them together because they're different types.

Any Multi-Switch Mixed [Eclipse] is the node that lets you do it anyway. You feed it several inputs of whatever types you like, and it hands back the first one that isn't empty, top slot down. There's no selector widget and nothing to click - the wiring chooses, and muting a branch is how you change your mind.

Where this sits in the family tree

ComfyUI has two things people call a "switch". An A/B switch has a selector: point it at input 1 or 2 and it obeys - that's how you keep two loaders in one graph. A fallback switch has no selector at all; it walks its inputs in order and passes the first live one. rgthree's Any Switch is the canonical fallback node, and this is Eclipse's take on that idea, with the twist that the branches don't have to share a type.

The mechanism is ComfyUI's wildcard type, "*" - a socket that accepts anything and leaves it to the destination to make sense of what arrives. That's why a switch can route IMAGE or VIDEO or a string without caring, and also why people distrust nodes like this: type-erasing conveniences make graphs hard to debug. Fair criticism generally. Still the right tool for this job.

How it works, and what actually matters

The input is a single autogrowing slot list, labelled any_1, any_2, and upward. You get two slots to start and it grows as you connect, up to 64; the hidden inputcount widget is not something you set by hand. It walks from any_1 down and skips anything empty - None, an empty string, an empty list, dict or tuple. Zero and False are values, not emptiness, so a boolean branch won't be silently skipped.

The first non-empty value wins and is passed through completely unchanged, with ComfyUI's list envelope preserved, so image batches and lists keep their structure. If every slot is empty, the output is None. The single output is called output and its type is the wildcard, so the destination is what has to accept whichever branch won.

Three things trip people up:

  • The switch doesn't convert. If the selected value is the wrong type for the destination, it does not quietly fall through to your lower-priority input. It hands over what it has and the destination errors.
  • Priority isn't lazy. Every connected, active branch still executes. Slot order decides what the output gets, not what runs - muting a branch is the only thing that stops it.
  • Wildcards pass static validation. ComfyUI won't warn you before queueing; the failure shows up in the destination at execution time.

The pattern this node was built for

The author's own documentation wires it for muting lyric captions. Render Lyric Captions' video goes to any_1, your background still goes to any_2, the switch's output goes to Save Video's images / video socket, and the trimmed audio goes to Save Video's audio input. Renderer active: you save the captioned video with its soundtrack. Mute the renderer: the same Save Video node writes the still image with the audio instead. Use Mute rather than Bypass - the author's guide is explicit, since bypass hands matching-type values through instead of leaving the slot empty.

Installing it

It's one node in a pack, so you install the pack. The easy way is ComfyUI Manager - search ComfyUI Eclipse (it's published to the Comfy Registry under the publisher id rvage). Otherwise:

cd ComfyUI/custom_nodes
git clone https://github.com/r-vage/ComfyUI_Eclipse

Then restart ComfyUI and look under 🌒 Eclipse > Router. If the pack's nodes are missing entirely, read the server log for import errors before blaming the switch - this pack ships a lot of nodes and one unrelated import failure takes the whole folder with it.

When it misbehaves

Output is None and a downstream node rejects it? You muted or disconnected everything. Error inside Save Video or another consumer? That's the type mismatch - the destination has to support every type your branches can produce. Hoping to turn a numeric string into a number with this? You can't: text stays text. One honest note on the pack itself: Eclipse is a rename of the author's older RvTools project, whose GitHub page vanished in 2025 and left people hunting for copies in the comments. Single maintainer, thin community trail - keep a working copy if your workflows depend on it.

Category🌒 Eclipse/ Router

Inputs (1)

NameTypeDefaultDescription
inputsoptCOMFY_AUTOGROW_V3—

Outputs (1)

NameTypeDescription
output*Selected value, unchanged. The downstream node must support its type.