Nodes/EasySettingpipes/Sampler Setup Unpack
ComfyUI Node

Sampler Setup Unpack

How Sampler Setup Unpack gets you to KSampler

By hayde0096·Created about a year ago·Updated 8 months ago· 1
Sampler Setup Unpack
  • setup_pipe
  • steps
  • cfg
  • clip_skip
  • sampler
  • scheduler
  • width
  • height
  • batch_size

Sampler Setup Unpack is the boring, indispensable other half of this pack's SamplerSetup node. SamplerSetup bundles all your sampling dials into a single setup_pipe wire; this node takes that pipe and splits it back into the individual values a stock KSampler actually accepts. If SamplerSetup is the trunk of the pipe, this is where the cables fan out.

There's no way around the pair if you're using stock ComfyUI nodes. A SETUPPIPE wire cannot plug into a KSampler - the types don't match, and no amount of wiggling the mouse will make the connection land. The flow that actually works is:

SamplerSetup → setup_pipe → SamplerSetupUnpack → steps/cfg/... → KSampler

The pack's README draws the first hop as if the pipe goes straight into a KSampler, which is misleading; the Unpack node is the bridge, and it's a clean one.

How it works

unpack_pipe reads the pipe dict and hands back eight outputs, each with a ComfyUI-native type:

  • steps (INT), cfg (FLOAT), clip_skip (INT)
  • sampler and scheduler - the two interesting ones. Their output types are populated straight from comfy.samplers.KSampler.SAMPLERS and SCHEDULERS, the exact same enum lists a KSampler uses for its dropdowns. That's why these two wires plug in with zero friction: the node literally promises "one of these known sampler names," so ComfyUI's type checker is satisfied before you even run anything.
  • width (INT), height (INT), batch_size (INT)

It's defensive under the hood: if a key is missing from the pipe it supplies a default (steps 0, cfg 0.0, clip_skip 0, batch_size 1), and if the sampler or scheduler value isn't in ComfyUI's known lists it falls back to euler. So a malformed pipe won't crash the graph - it'll just silently sample with euler, which is its own kind of confusing if you weren't expecting it.

Wiring it up

In practice you'll connect three or four of these outputs and ignore the rest. The ones that matter to a KSampler are steps, cfg, and sampler/scheduler; width, height, and batch_size are for your latent-creation or empty-latent node, and clip_skip belongs on a CLIP Set Last Layer style node - or just leave it, since -1 (no skip) is ComfyUI's own default. The point of the pipe isn't that you use every output, it's that you change one setting in one place and the unpacked values follow everywhere.

Installing it

cd ComfyUI/custom_nodes
git clone https://github.com/hayde0096/Comfyui-EasySettingpipes

Restart ComfyUI, or search "Easy Setting Pipes" in ComfyUI Manager. No dependencies beyond ComfyUI itself, no model downloads. (The README's own clone snippet has a broken user-attachments URL - use the repo path above.)

Where people get burned

  • Zero-tolerance type mismatch on the wire. Because the unpack types are exactly KSampler's enums, this node is one of the few places in the pack where a wire genuinely refuses to connect if you're feeding it into something exotic. That's usually correct behavior, not a bug.
  • Silent fallbacks hide mistakes. Feed a pipe built by hand (or by another pack) with a weird sampler string, and you'll get euler out with no warning. If your renders suddenly look different, check what actually came out of sampler, not what you think you put in.
  • Batch size 0 surprise. If a pipe is missing its batch_size key, the default is 1 - sensible. But missing steps/cfg default to 0, which will produce nonsense rather than an error. Keep pipes coming from SamplerSetup and you'll never hit it.

It's a thin node and it's fine that it's thin. Somebody has to be the adapter that turns a tidy pipe back into the eight loose ends the rest of ComfyUI expects, and this one does it without drama.

Categoryeasy setting

Inputs (1)

NameTypeDefaultDescription
setup_pipeSETUPPIPE

Outputs (8)

NameTypeDescription
stepsINT
cfgFLOAT
clip_skipINT
samplereuler,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
schedulersimple,sgm_uniform,karras,exponential,ddim_uniform,beta,normal,linear_quadratic,kl_optimal
widthINT
heightINT
batch_sizeINT