SAX Pipe
One wire instead of fifteen — SAX Pipe and the context-bundle trick
- pipe
- model
- pos
- neg
- latent
- vae
- clip
- image
- sampler
- scheduler
- optional_sampler
- optional_sigmas
- PIPE
- MODEL
- POS
- NEG
- LATENT
- VAE
- CLIP
- IMAGE
- SEED
- STEPS
- CFG
- SAMPLER
- SCHEDULER
- DENOISE
- OPTIONAL_SAMPLER
- OPTIONAL_SIGMAS
SAX Pipe is the axle the whole SAX_Bridge pack spins on. Instead of dragging model, CLIP, VAE, positive, negative, latent, image, seed, steps, CFG, sampler, scheduler, and denoise across the canvas as fifteen separate wires, the pack shoves them all into one PIPE_LINE object and lets each node pull out what it needs and push back what it changed. This node is the rawest expression of that idea: it extracts, overrides, and reconstructs anything in the pipe, which makes it the debugger, the adapter, and the terminal all at once.
This is a well-trodden design - the KB's node-plumbing doc calls it the context object, and rgthree's Context, Easy-Use's pipe, and Efficiency Nodes all do versions of it. What's specific here is the degree of control: every field is individually editable mid-graph.
How it works
Every input on this node is optional, and the rule is delightfully simple: if an input is None, the value already inside the pipe is preserved. Connect only the fields you want to override. So you can take a pipe fresh from SAX Loader, override just steps with an INT input, and hand the modified pipe on - everything else travels through untouched.
If pipe itself is unconnected, the node builds a fresh one from whatever individual inputs you did connect, so it also works as a pipe creator for wiring standard ComfyUI nodes into the SAX world. Sampler settings like steps, CFG, sampler name, scheduler, denoise, and the optional sampler/sigmas get folded into the pipe's loader_settings dict, which is where SAX KSampler reads them from.
The 16 outputs mirror the 16 inputs: PIPE (the full updated bundle), plus unpacked MODEL, POS, NEG, LATENT, VAE, CLIP, IMAGE, SEED, STEPS, CFG, SAMPLER, SCHEDULER, DENOISE, OPTIONAL_SAMPLER, and OPTIONAL_SIGMAS. That's how you cross the boundary - pipe in from the SAX side, unpack the pieces, and wire them into any ordinary ComfyUI node.
When you'll actually use it
- To inspect: feed a pipe in, look at what
stepsorseedactually contains at that point in the graph. - To override: drop it mid-graph and force a different CFG or denoise on one branch.
- To adapt: unpack a pipe into plain wires for a node that doesn't speak PIPE_LINE, or build a pipe around a loader you're not using the SAX way.
Installing it
It's in the SAX_Bridge pack, so install the pack once. 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's under SAX/Bridge/Pipe. No extra dependencies - pure plumbing.
The trap to watch
The classic context-bus failure mode applies: because one wire hides a dozen values, you can silently run the old model or the wrong steps if a node upstream replaced them and you didn't notice. The SAX_Bridge Debug Inspector node exists specifically to show you what's inside the pipe at any point. Use it when a workflow misbehaves and you suspect stale data - the pipe looks fine because the connection is fine; only the contents are wrong.
Inputs (16)
| Name | Type | Default | Description |
|---|---|---|---|
| pipeopt | PIPE_LINE | — | |
| modelopt | MODEL | — | |
| posopt | CONDITIONING | — | |
| negopt | CONDITIONING | — | |
| latentopt | LATENT | — | |
| vaeopt | VAE | — | |
| clipopt | CLIP | — | |
| imageopt | IMAGE | — | |
| stepsopt | INT | — | |
| cfgopt | FLOAT | — | |
| sampleropt | * | — | |
| scheduleropt | * | — | |
| denoiseopt | FLOAT | — | |
| seedopt | INT | — | |
| optional_sampleropt | SAMPLER | — | |
| optional_sigmasopt | SIGMAS | — |
Outputs (16)
| Name | Type | Description |
|---|---|---|
| PIPE | PIPE_LINE | — |
| MODEL | MODEL | — |
| POS | CONDITIONING | — |
| NEG | CONDITIONING | — |
| LATENT | LATENT | — |
| VAE | VAE | — |
| CLIP | CLIP | — |
| IMAGE | IMAGE | — |
| SEED | INT | — |
| STEPS | INT | — |
| CFG | FLOAT | — |
| SAMPLER | * | — |
| SCHEDULER | * | — |
| DENOISE | FLOAT | — |
| OPTIONAL_SAMPLER | SAMPLER | — |
| OPTIONAL_SIGMAS | SIGMAS | — |