Unpack SDXL Tuple
Unpack SDXL Tuple
- sdxl_tuple
- BASE_MODEL
- BASE_CLIP
- BASE_CONDITIONING+
- BASE_CONDITIONING-
- REFINER_MODEL
- REFINER_CLIP
- REFINER_CONDITIONING+
- REFINER_CONDITIONING-
This is the other half of Pack SDXL Tuple. Where Pack bundles the eight SDXL base+refiner wires into one tidy SDXL_TUPLE line, Unpack takes that bundle and expands it back into its eight individual connections. You use them as a pair: pack near your loaders, route the single wire across a messy graph, unpack wherever you need the real model, CLIP, and conditioning again. It's pure plumbing in service of keeping an SDXL workflow readable - which is the whole reason the Efficiency Nodes pack exists.
How it works
Nothing is transformed; the tuple is just a container, and this node opens it. Feed in one SDXL_TUPLE and you get eight typed outputs back, in the same order they went in. From there they wire into whatever needs the individual pieces - a KSampler, a conditioning tweak, a separate refiner branch.
The inputs and outputs
One required input: sdxl_tuple (SDXL_TUPLE), straight from a Pack SDXL Tuple node or a tuple-emitting sampler.
Eight outputs, matching the pack order exactly:
BASE_MODEL,BASE_CLIP,BASE_CONDITIONING+,BASE_CONDITIONING-REFINER_MODEL,REFINER_CLIP,REFINER_CONDITIONING+,REFINER_CONDITIONING-
No settings - it's a splitter.
Where it earns its keep
Here's the genuinely useful trick, and it's grounded in a real, long-standing quirk of this pack: LoRA stacks applied through the Efficiency SDXL flow only reach the base model, not the refiner. The community confirmed this by deconstructing the setup - the refiner stage never sees the LoRA. Unpack SDXL Tuple is the escape hatch. Split the tuple, take the REFINER_MODEL and REFINER_CLIP outputs, run them through a LoRA loader yourself, and you can force the LoRA into the refiner branch that the packed flow skips. One user did exactly this and got the output they expected.
So beyond neatness, Unpack is what lets you reach inside the SDXL pipeline and fix things the consolidated nodes don't expose.
Installing it
ComfyUI Manager → search Efficiency Nodes for ComfyUI, install, restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/jags111/efficiency-nodes-comfyui
Restart ComfyUI. No model downloads - your checkpoints and CLIP come in through the tuple.
Common issues
It only accepts a real SDXL_TUPLE, so it has to be fed by a Pack SDXL Tuple node or a compatible sampler output - you can't hand it loose models. If the connection won't take, that's a type mismatch, not a bug.
Watch the output order when you rewire. Base and refiner conditioning are eight nearly identical-looking wires, and crossing a positive with a negative won't error - it'll just quietly ruin the image. Label them if your graph is dense.
Worth restating the honest context: SDXL's refiner is the part of the two-stage design the community "promptly ignored half of." If you're not actually running a refiner, you don't need the pack/unpack pair at all - it's only worth the nodes when both stages are live.
Pack-wide: IMPORT FAILED at startup (the recurring pip freeze non-zero exit) takes the whole pack down. Update ComfyUI, update the node, verify the Python environment.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| sdxl_tuple | SDXL_TUPLE | — |
Outputs (8)
| Name | Type | Description |
|---|---|---|
| BASE_MODEL | MODEL | — |
| BASE_CLIP | CLIP | — |
| BASE_CONDITIONING+ | CONDITIONING | — |
| BASE_CONDITIONING- | CONDITIONING | — |
| REFINER_MODEL | MODEL | — |
| REFINER_CLIP | CLIP | — |
| REFINER_CONDITIONING+ | CONDITIONING | — |
| REFINER_CONDITIONING- | CONDITIONING | — |