Nodes/MultiModel/KSampler (Pipe)
ComfyUI Node

KSampler (Pipe)

The sampler that reads its settings from a pipe and decodes for you

By FaberVS·Created about a year ago·Updated about a year ago· 4
KSampler (Pipe)
  • params_pipe
  • positive
  • negative
  • latent
  • image_override
  • params_pipe
  • image
seed0
denoise1.00

At the end of a MultiModel pipe chain, this is the payoff. KSamplerPipe is the pack's sampler: it takes a PARAMS_PIPE, some conditioning, a seed and a denoise value, runs the sample, and - unlike a stock KSampler - decodes the result and hands you an IMAGE directly. No separate VAE Decode node, no latent to chase down. You're looking at the finished picture.

The clever part is what it doesn't ask you for. Steps, CFG, sampler, and scheduler aren't widgets on this node - they live in the pipe. That's the whole design: you set them once on ModelParamsPipe, then this same sampler node renders whatever model the switch handed it. Swap the pipe upstream and the sampler adapts without you touching it.

The inputs that matter

  • params_pipe - where the model, CLIP, VAE, and sampling settings come from.
  • positive / negative - CONDITIONING, from this pack's PromptBuilder or any text-encode node.
  • seed - defaults to 0, goes up to the full 64-bit range.
  • denoise - defaults to 1.0 (full denoise, i.e. text-to-image). Drop it below 1 and you're doing img2img territory.
  • latent (optional) and image_override (optional) - pick exactly one of these.

The img2img path, and the trap

Here's where people get burned. The node raises an error if you connect both latent and image_override, and raises if you connect neither. It refuses to guess. If you connect image_override, it encodes the image with the pipe's VAE and runs a proper image-to-image with your denoise value. If you connect latent, it samples straight from that latent - which is what you want for chaining an upscaler or a second pass.

The real gotcha is that there's no LATENT on the output. Because the node decodes internally, your image is pixels. Want to keep going in latent space? You'll need to encode that image back yourself, or use the latent input with a stock KSampler for the continuation. For a straight txt2img run this is a feature - fewer nodes, less clutter - but it quietly cuts you off from the latent manipulation that power users lean on.

How it works

The Python is honest about its mechanism: it pulls steps, CFG, sampler, and scheduler out of the pipe's dict, runs ComfyUI's own common_ksampler, and decodes with the pipe's VAE. It's not a reimplementation of sampling - it's a wrapper that keeps all the settings in one place and does the decode step you'd normally add yourself. It also passes the params_pipe through unchanged, so you can keep feeding the same pipe to other nodes.

Installing

ComfyUI Manager → search MultiModel → install, or:

cd ComfyUI/custom_nodes
git clone https://github.com/FaberVS/MultiModel

Restart after. No extra dependencies, no model downloads. This node is useless on its own though - it's built to be fed by this pack's pipe, so install it as part of the workflow, not in isolation.

CategoryMultiModel

Inputs (7)

NameTypeDefaultDescription
params_pipePARAMS_PIPE
positiveCONDITIONING
negativeCONDITIONING
seedINT00–18446744073709550000
denoiseFLOAT1.000–1
latentoptLATENT
image_overrideoptIMAGE

Outputs (2)

NameTypeDescription
params_pipePARAMS_PIPE
imageIMAGE