Nodes/SAX Bridge/SAX Pipe
ComfyUI Node

SAX Pipe

One wire instead of fifteen — SAX Pipe and the context-bundle trick

By so16tm·Created 6 months ago·Updated 3 months ago· 0
SAX Pipe
  • 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
steps
cfg
denoise
seed

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 steps or seed actually 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.

CategorySAX/Bridge/Pipe

Inputs (16)

NameTypeDefaultDescription
pipeoptPIPE_LINE
modeloptMODEL
posoptCONDITIONING
negoptCONDITIONING
latentoptLATENT
vaeoptVAE
clipoptCLIP
imageoptIMAGE
stepsoptINT
cfgoptFLOAT
sampleropt*
scheduleropt*
denoiseoptFLOAT
seedoptINT
optional_sampleroptSAMPLER
optional_sigmasoptSIGMAS

Outputs (16)

NameTypeDescription
PIPEPIPE_LINE
MODELMODEL
POSCONDITIONING
NEGCONDITIONING
LATENTLATENT
VAEVAE
CLIPCLIP
IMAGEIMAGE
SEEDINT
STEPSINT
CFGFLOAT
SAMPLER*
SCHEDULER*
DENOISEFLOAT
OPTIONAL_SAMPLERSAMPLER
OPTIONAL_SIGMASSIGMAS