SSG Smart Pipe
The 'wireless' bus that's really a shared dictionary
- SSG_0
- SSG_1
- SSG_2
- SSG_3
- SSG_4
- SSG_5
- SSG_6
- SSG_7
- SSG_8
- SSG_9
- SSG_10
- SSG_11
- SSG_12
- SSG_13
- SSG_14
- SSG_15
- SSG_16
- SSG_17
- SSG_18
- SSG_19
- SSG_20
- SSG_21
- SSG_22
- SSG_23
- ◦
- ◦
- ◦
- ◦
- ◦
- ◦
- ◦
- ◦
- ◦
- ◦
- ◦
- ◦
- ◦
- ◦
- ◦
- ◦
- ◦
- ◦
- ◦
- ◦
- ◦
- ◦
- ◦
- ◦
SSG Smart Pipe is the transmitter half of the SSG Smart Suite's "wireless" bus. You reach for it when your workflow has turned into a noodle plate - model, CLIP, VAE, latents, prompts all dragged across the whole canvas to five different nodes. Instead, you feed up to 24 lanes into one Pipe and pick them up anywhere else with an SSG Smart Satellite, no visible wire between them. That's the same "bundle many signals, travel as one" idea as an rgthree Context or a pipe dict in Easy-Use, just done without a wire at all. It shines when you're routing into and out of nested subgraphs, where dragging a dozen wires through a boundary is exactly the pain it removes.
The name is doing a lot of work, so here's the honest mechanism. The Pipe doesn't call any API and there's no network involved. At execution time the node writes your 24 inputs into a plain Python dictionary hung off the torch module (torch._ssg_piperegistry), keyed by a channel name the frontend auto-generates for you (SSG_Pipe_1, SSG_Pipe_2, …). Any Satellite on that channel reads the same dict. That's the whole "zero-latency wireless broadcast" - a dict lookup mid-execution, which is why the README's zero-latency claim is basically true but also kind of anticlimactic.
What you actually set is simple. There's one hidden input, schema_generation, that the JS uses to detect when the channel's shape changed. The 24 SSG_0–SSG_23 inputs are wildcard (*), so they'll accept a MODEL, a CLIP, a VAE, a LATENT, a prompt string, whatever you drop on them - the node sniffs the type and name of each wire and labels the lane automatically. The 24 ◦ outputs are just the same payload passed through physically. The [ Lock Schema ] button you'll see on the node serializes that manifest so the broadcast stays stable while you edit.
Where people get burned: ordering. Because there's no real wire, ComfyUI doesn't know the Pipe has to run before the Satellite - it schedules by wired dependencies, and it only executes nodes that sit on the path to an output node. If your Pipe's physical outputs aren't wired onward, it may never run, and the Satellite reads an empty channel. Habit worth building: always wire the Pipe's pass-through outputs somewhere downstream (they're useful as a plain splitter anyway) so it's guaranteed on the execution path, and give each pair a distinct channel.
Installing it
cd ComfyUI/custom_nodes
git clone https://github.com/SgtSauv/ComfyUI-SSG-Smart-Suite.git
Restart ComfyUI, or use Manager and search "SSG Smart Suite". Good news: requirements.txt literally reads "No external dependencies" - no models to download, no Python deps. The one cosmetic quirk is that the pack prints a big Alienware-blue boot banner in your console on startup.
Common issues
- Satellite outputs are all
None→ the channel is mismatched or the Pipe didn't execute. Check both channel names match, then confirm the Pipe is on a path to an output. - Channel gone after restart → the registry is in-process memory, not a file. Rebuild the cache when you restart.
- Nobody to ask → this pack has essentially no community footprint on Reddit as of mid-2026, so the GitHub issues page is your support channel.
Inputs (24)
| Name | Type | Default | Description |
|---|---|---|---|
| SSG_0opt | * | — | |
| SSG_1opt | * | — | |
| SSG_2opt | * | — | |
| SSG_3opt | * | — | |
| SSG_4opt | * | — | |
| SSG_5opt | * | — | |
| SSG_6opt | * | — | |
| SSG_7opt | * | — | |
| SSG_8opt | * | — | |
| SSG_9opt | * | — | |
| SSG_10opt | * | — | |
| SSG_11opt | * | — | |
| SSG_12opt | * | — | |
| SSG_13opt | * | — | |
| SSG_14opt | * | — | |
| SSG_15opt | * | — | |
| SSG_16opt | * | — | |
| SSG_17opt | * | — | |
| SSG_18opt | * | — | |
| SSG_19opt | * | — | |
| SSG_20opt | * | — | |
| SSG_21opt | * | — | |
| SSG_22opt | * | — | |
| SSG_23opt | * | — |
Outputs (24)
| Name | Type | Description |
|---|---|---|
| ◦ | * | — |
| ◦ | * | — |
| ◦ | * | — |
| ◦ | * | — |
| ◦ | * | — |
| ◦ | * | — |
| ◦ | * | — |
| ◦ | * | — |
| ◦ | * | — |
| ◦ | * | — |
| ◦ | * | — |
| ◦ | * | — |
| ◦ | * | — |
| ◦ | * | — |
| ◦ | * | — |
| ◦ | * | — |
| ◦ | * | — |
| ◦ | * | — |
| ◦ | * | — |
| ◦ | * | — |
| ◦ | * | — |
| ◦ | * | — |
| ◦ | * | — |
| ◦ | * | — |