SSG Smart Router
Flip between two full pipelines with one switch
- SSG_0_A
- SSG_1_A
- SSG_2_A
- SSG_3_A
- SSG_4_A
- SSG_5_A
- SSG_6_A
- SSG_7_A
- SSG_8_A
- SSG_9_A
- SSG_10_A
- SSG_11_A
- SSG_0_B
- SSG_1_B
- SSG_2_B
- SSG_3_B
- SSG_4_B
- SSG_5_B
- SSG_6_B
- SSG_7_B
- SSG_8_B
- SSG_9_B
- SSG_10_B
- SSG_11_B
- ◦
- ◦
- ◦
- ◦
- ◦
- ◦
- ◦
- ◦
- ◦
- ◦
- ◦
- ◦
SSG Smart Router is an A/B crossbar: twelve lanes on Bank A, twelve matching lanes on Bank B, one router_switch dropdown that decides which bank flows out. Wire both a base model and a LoRA'd model, two samplers, two conditioning branches - whatever pair you want to compare - and flip between them without rewiring a single connection. It's the same shape as an ordinary A/B switch, just scaled to a 12-wide bus and broadcast so every SSG Smart Satellite downstream switches at once.
This is the node to reach for when you're A/B testing models or settings side by side and you're sick of bypassing whole loader stacks by hand. Wire Bank A to your "current" pipeline, Bank B to the experiment, then iterate the experiment and flip one switch. Because the Router broadcasts over the SSG channel system, every Satellite listening on that channel picks up the newly active bank automatically - the HUD's "Router banks (Bank A / Bank B)" toggle is the same switch, remote-controlled.
How it works is dead simple under the hood. route_signal_banks reads the router_switch enum ("Bank A" is the default), picks the SSG_0_A–SSG_11_A inputs or the _B set, writes the twelve chosen values into torch._ssg_piperegistry[channel_name], and returns them as the twelve ◦ outputs. The outputs are a physical pass-through of the active bank, so you can wire them straight into a sampler without ever touching a Satellite.
Inputs are the only fiddly part. You get 24 wildcard (*) inputs, named in pairs: SSG_0_A/SSG_0_B through SSG_11_A/SSG_11_B. The naming is the entire UX - match index _A to index _B (same data type, same position) and you're done. Outputs mirror the active bank 1:1. A beginner can ignore everything except router_switch and the pairing rule.
Same family gotcha as the rest of the SSG suite: the "wireless" bank switch is a dict write at execution time, so a Satellite that runs before the Router reads stale data. Keep the Router on the execution path (its pass-through outputs wired onward) and give it a distinct channel. Also - and this one bites in A/B testing - both banks still execute every run. ComfyUI runs the full wired graph, so the losing bank's model loaders and samplers burn VRAM/time even though you only see the winner. If you're trying to speed up comparisons, bypass the losing bank's loaders instead; the Router only saves you the rewiring.
Installing it
cd ComfyUI/custom_nodes
git clone https://github.com/SgtSauv/ComfyUI-SSG-Smart-Suite.git
Restart, or install via Manager by searching "SSG Smart Suite". No model downloads, no Python dependencies (requirements.txt: "No external dependencies"), just a console boot banner.
Common issues
- Satellites don't switch → channel mismatch, or the Router ran after them. Verify the channel and ordering.
- Nothing on the outputs → you wired
SSG_0_Abut notSSG_0_B; an unwired bank returnsNoneon those lanes when selected. - No community to lean on → this pack is essentially unmentioned on Reddit as of 2026; file issues on the repo.
Inputs (25)
| Name | Type | Default | Description |
|---|---|---|---|
| router_switch | COMBO | Bank A | 2 options: Bank A, Bank B |
| SSG_0_Aopt | * | — | |
| SSG_1_Aopt | * | — | |
| SSG_2_Aopt | * | — | |
| SSG_3_Aopt | * | — | |
| SSG_4_Aopt | * | — | |
| SSG_5_Aopt | * | — | |
| SSG_6_Aopt | * | — | |
| SSG_7_Aopt | * | — | |
| SSG_8_Aopt | * | — | |
| SSG_9_Aopt | * | — | |
| SSG_10_Aopt | * | — | |
| SSG_11_Aopt | * | — | |
| SSG_0_Bopt | * | — | |
| SSG_1_Bopt | * | — | |
| SSG_2_Bopt | * | — | |
| SSG_3_Bopt | * | — | |
| SSG_4_Bopt | * | — | |
| SSG_5_Bopt | * | — | |
| SSG_6_Bopt | * | — | |
| SSG_7_Bopt | * | — | |
| SSG_8_Bopt | * | — | |
| SSG_9_Bopt | * | — | |
| SSG_10_Bopt | * | — | |
| SSG_11_Bopt | * | — |
Outputs (12)
| Name | Type | Description |
|---|---|---|
| ◦ | * | — |
| ◦ | * | — |
| ◦ | * | — |
| ◦ | * | — |
| ◦ | * | — |
| ◦ | * | — |
| ◦ | * | — |
| ◦ | * | — |
| ◦ | * | — |
| ◦ | * | — |
| ◦ | * | — |
| ◦ | * | — |