SDXL Fundamentals MultiPipe (JPS)
One wire for your whole base+refiner rig
- vae
- model_base
- model_refiner
- clip_base
- clip_refiner
- pos_base
- neg_base
- pos_refiner
- neg_refiner
- vae
- model_base
- model_refiner
- clip_base
- clip_refiner
- pos_base
- neg_base
- pos_refiner
- neg_refiner
- seed
Different job from JPS's other pipe nodes: those unpack numeric settings, this one bundles graph objects - VAE, models, CLIPs, conditioning, seed. A fully-wired SDXL workflow running the real two-stage base+refiner architecture can have two models, two CLIPs, two sets of positive/negative conditioning, and a shared seed all crossing your canvas as separate wires. SDXL Fundamentals MultiPipe collects all ten of those into one line you route once, then tap again wherever downstream needs a specific piece.
How it works
Every socket is optional, on both the input and output side, one-to-one. Plug in whatever you have - you don't need to fill all ten to get value out of this node. Skip model_refiner/clip_refiner entirely if you're not running a refiner stage at all, and they simply pass through empty rather than breaking anything. The README's own framing is that it exists so you can "access/change values more easily than classic from/to/edit pipes" - you're not forced through a rigid unpack-then-repack cycle for every value, you just tap the socket you need.
It's the same underlying trick as rgthree's Context nodes, which bundle a pile of arbitrary graph connections down one wire for later unpacking - that's a more actively maintained, more general version of this idea if you ever need it beyond SDXL specifically. This JPS node is scoped tightly to the base+refiner SDXL shape instead: ten named slots that map directly onto what a two-stage SDXL pipeline actually needs, rather than a generic bundle of anything.
The inputs and outputs that matter
Ten matching optional sockets, in and out:
vae(VAE)model_base,model_refiner(MODEL)clip_base,clip_refiner(CLIP)pos_base,neg_base,pos_refiner,neg_refiner(CONDITIONING)seed(INT)
Whatever you feed in on a given socket comes back out the matching one - nothing is transformed or computed, it's a routing collector.
How to install it
ComfyUI Manager: search "JPS Custom Nodes for ComfyUI." Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/JPS-GER/ComfyUI_JPS-Nodes.git
Restart. No models, no extra dependencies.
Common issues & troubleshooting
A downstream node complains about a missing connection. This node won't manufacture anything - if you didn't wire a particular slot on the input side (say, model_refiner), that same slot comes out empty on the output side. Trace back to whether you actually fed that specific value into the MultiPipe upstream before assuming the node itself is at fault.
Using it for a single-pass (no refiner) workflow and wondering if it's overkill. For a simple one-model SDXL graph, it probably is - this node earns its keep specifically once you're juggling the full base+refiner set of models, CLIPs, and conditioning pairs. If you're not running a refiner, you likely don't need six of its ten sockets, and a simpler wiring approach is fine.
Confusing this with the Settings pipes. This node carries typed graph objects (models, CLIP, conditioning, VAE); it has nothing to do with numeric generation settings like steps, CFG, or resolution - that's what SDXL Basic Settings Pipe (JPS) and SDXL Settings Pipe (JPS) are for.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| vaeopt | VAE | — | |
| model_baseopt | MODEL | — | |
| model_refineropt | MODEL | — | |
| clip_baseopt | CLIP | — | |
| clip_refineropt | CLIP | — | |
| pos_baseopt | CONDITIONING | — | |
| neg_baseopt | CONDITIONING | — | |
| pos_refineropt | CONDITIONING | — | |
| neg_refineropt | CONDITIONING | — | |
| seedopt | INT | — |
Outputs (10)
| Name | Type | Description |
|---|---|---|
| vae | VAE | — |
| model_base | MODEL | — |
| model_refiner | MODEL | — |
| clip_base | CLIP | — |
| clip_refiner | CLIP | — |
| pos_base | CONDITIONING | — |
| neg_base | CONDITIONING | — |
| pos_refiner | CONDITIONING | — |
| neg_refiner | CONDITIONING | — |
| seed | INT | — |