Unpack Latent Pipe MXD
The node that unwraps a WAN 2.2 latent pipe into real wires
- latent_pipe
- shift
- positive
- negative
- samples
- steps
- cfg
- sampler_name
- scheduler
- end_at_step
- filename_prefix
- trim_latent
- high_workflow
Somewhere between a latent file and a finished WAN 2.2 video there's a bundle of settings - sampler, scheduler, steps, cfg, conditioning - that has to travel with the samples. The Maxed Out pack stuffs all of it into one wire called an MXD_LATENT_PIPE, and this node is the corkscrew: it takes that single pipe and splits it back into the individual values you can wire into a KSampler, a text encoder, or anything else in your graph.
Why the pipe exists at all
If you've ever pulled a WAN 2.2 workflow apart, you know the mess: a latent isn't just a latent. When the pack's Save Latent I2V MXD writes a .latent file it also writes a .cond.pt sidecar carrying the conditioning and every sampler setting from the run that produced it. Loading that back means extracting a dozen values and re-wiring them all by hand - unless a loader bundles them into one pipe and this node unbundles them at the other end. It's the same "one thick wire beats ten thin ones" trick rgthree popularized with Context nodes, and it's what makes swapping between the single and batch latent loaders a one-wire change.
What comes out
Twelve outputs, but you'll mostly use four:
- samples (LATENT) and positive / negative (CONDITIONING) - the actual latent and its prompt conditioning, wired into your sampler.
- shift (FLOAT) - WAN 2.2's model shift, which stock KSamplerAdvanced doesn't even expose, so it has to ride the pipe.
- The rest - steps, cfg, sampler_name, scheduler, end_at_step, filename_prefix, trim_latent, high_workflow - are the run's saved settings, ready to feed a KSampler or KSampler Advanced node.
sampler_name and scheduler come out as proper dropdown enums matching whatever your ComfyUI version's KSamplerAdvanced supports, so the values validate instead of coming back as free text.
How it works
It reads a plain dict. If a field is missing - say you fed it a pipe from a loader that didn't store trim_latent - it falls back to a safe default (0, empty string, empty conditioning) rather than crashing. That tolerance is deliberate: the pack's newer loaders all write pipes with the same keys, but older ones may not, and the unpacker is built to not care. One input (latent_pipe), one job, no configuration.
Installing
ComfyUI Manager → search "Maxed Out" → install, then restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/Maxed-Out-99/ComfyUI-MaxedOut.git
No pip dependencies - nothing extra to download.
Common issues
The only real trap is treating the pipe as opaque and losing track of what's inside. It's a dict under the hood, so if you're debugging, remember the values were baked in when the latent was saved - a pipe loaded from an old latent carries old sampler settings, and a bare KSamplerAdvanced that doesn't handle shift will silently ignore it. If you only need the latent and want to control everything fresh, don't use the pipe loaders at all - use a plain latent loader and set your own sampler values.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| latent_pipe | MXD_LATENT_PIPE | — |
Outputs (12)
| Name | Type | Description |
|---|---|---|
| shift | FLOAT | — |
| positive | CONDITIONING | — |
| negative | CONDITIONING | — |
| samples | LATENT | — |
| steps | INT | — |
| cfg | FLOAT | — |
| sampler_name | euler,euler_cfg_pp,euler_ancestral,euler_ancestral_cfg_pp,heun,heunpp2,exp_heun_2_x0,exp_heun_2_x0_sde,dpm_2,dpm_2_ancestral,lms,dpm_fast,dpm_adaptive,dpmpp_2s_ancestral,dpmpp_2s_ancestral_cfg_pp,dpmpp_sde,dpmpp_sde_gpu,dpmpp_2m,dpmpp_2m_cfg_pp,dpmpp_2m_sde,dpmpp_2m_sde_gpu,dpmpp_2m_sde_heun,dpmpp_2m_sde_heun_gpu,dpmpp_3m_sde,dpmpp_3m_sde_gpu,ddpm,lcm,ipndm,ipndm_v,deis,res_multistep,res_multistep_cfg_pp,res_multistep_ancestral,res_multistep_ancestral_cfg_pp,gradient_estimation,gradient_estimation_cfg_pp,er_sde,seeds_2,seeds_3,sa_solver,sa_solver_pece,ddim,uni_pc,uni_pc_bh2 | — |
| scheduler | simple,sgm_uniform,karras,exponential,ddim_uniform,beta,normal,linear_quadratic,kl_optimal | — |
| end_at_step | INT | — |
| filename_prefix | STRING | — |
| trim_latent | INT | — |
| high_workflow | STRING | — |