SAX Pipe Collector
First pipe wins — SAX Pipe Collector for wiring-only branching
- slot_0
- slot_1
- slot_2
- slot_3
- slot_4
- slot_5
- slot_6
- slot_7
- slot_8
- slot_9
- slot_10
- slot_11
- slot_12
- slot_13
- slot_14
- slot_15
- pipe
SAX Pipe Collector is the laziest switch in the pack, and I mean that as a compliment. It has no selector widget, no A/B toggle, no scene management. It just scans a list of pipe sources, grabs the first one that isn't None, and hands it downstream. That's it. And because that's all it does, you get conditional branching that lives entirely in the wiring - you never touch a knob to pick a path.
This is what the plumbing KB calls a fallback switch: the inverse of an A/B selector, it has no explicit choice and just passes the first non-empty input. rgthree's Any Switch is the most famous general-purpose version; this one is typed to pipes and tuned for the SAX workflow.
How it works
The node exposes 16 optional slots, slot_0 through slot_15, all *-typed so they'll accept any PIPE_LINE. Instead of wiring each slot yourself, you use the JS picker to register source nodes - nodes with PIPE outputs anywhere in your graph - and the picker handles the connections. At execution it walks the slots top to bottom and returns the first non-None PIPE as its single pipe output.
The priority is positional: whatever source sits in slot_0 wins if it's live, then slot_1, and so on. That ordering is the whole design - you arrange sources by how strongly you want them to win, not by flicking a switch.
If every slot is None, the node outputs None, and the docs are blunt that downstream erroring is intentional by design. Garbage in, loud failure out - better than a silent bad pipe.
When you'd reach for it
The README's example is two routes to the same output: a quick preview branch and a full-quality branch. Wire both into the collector and only the one that's actually producing a pipe flows through. Because a muted or bypassed branch outputs nothing, muting is your selector - flip a branch off and the collector silently falls through to the next live one. It composes beautifully with SAX Toggle Manager, which can switch whole groups on and off; the collector then routes around whatever's dead.
Installing it
It ships in the SAX_Bridge pack - install once, use it everywhere. ComfyUI Manager → "Install via Git URL" → https://github.com/so16tm/SAX_Bridge, or:
cd ComfyUI/custom_nodes
git clone https://github.com/so16tm/SAX_Bridge
Restart, and it appears under SAX/Bridge/Collect. No dependencies beyond ComfyUI.
Gotchas
Two habits to avoid. First, don't expect it to merge or blend pipes - it selects, it never combines, and the first live source always eats everything below it. Second, remember the fallback is positional, not semantic: if you reorder sources expecting "the more important one wins," you need the first slot to hold the strongest source. And if all your branches die, you'll get a None-propagated error that can be confusing until you remember this node chose to fail loudly on purpose.
Inputs (16)
| Name | Type | Default | Description |
|---|---|---|---|
| slot_0opt | * | — | |
| slot_1opt | * | — | |
| slot_2opt | * | — | |
| slot_3opt | * | — | |
| slot_4opt | * | — | |
| slot_5opt | * | — | |
| slot_6opt | * | — | |
| slot_7opt | * | — | |
| slot_8opt | * | — | |
| slot_9opt | * | — | |
| slot_10opt | * | — | |
| slot_11opt | * | — | |
| slot_12opt | * | — | |
| slot_13opt | * | — | |
| slot_14opt | * | — | |
| slot_15opt | * | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| pipe | PIPE_LINE | — |