tinyKSampler
Tinyterra's tinyKSampler
- model
- positive
- negative
- latent
- vae
- clip
- input_image_override
- adv_xyPlot
- model
- positive
- negative
- latent
- vae
- clip
- images
- seed
- plot_image
The default ComfyUI path to a finished image runs through four or five nodes: KSampler, VAE decode, a save node, and a bunch of rewiring if you want a latent upscale or a hires pass in there. tinyterra's tinyKSampler (class ttN KSampler_v2) collapses that into one box. You hand it the model, both conditionings, a latent and a VAE, and it samples, decodes, optionally upscales, and previews or saves the result for you.
It's the "base" sampler in the tinyterraNodes pack - the non-pipe sibling of pipeKSampler v2. No PIPE_LINE in, no pipe out; you wire the raw slots yourself. That's the right choice when you don't want to buy into the whole pipe system, or when your graph already splits everything into individual wires. The node is also an output node (is_output_node: true), which is just ComfyUI's way of saying it can be the last thing in a chain.
How it works
Inside, it's the same sampling engine the rest of the pack uses: it applies an optional LoRA to the model, runs the sampler with your steps, cfg, sampler_name and scheduler, decodes through the VAE, and feeds the result to whatever image_output mode you picked - Hide, Preview, Save, Hide/Save, or Disabled.
The clever part is the upscaling block. upscale_method offers [latent] modes (latent-space upscale, cheap and what most people use for a hires pass) and [hiresFix] modes, which run a real upscale model selected via upscale_model_name. On top of that, rescale can push the final decode to a target width/height, a percentage, or a fixed longer side. Pick any of these and the pack's dynamic widgets unhide exactly the fields you need, which keeps the node small until you actually use the feature.
The inputs that matter
lora_name+lora_strength- apply a LoRA inline instead of adding a separate LoraLoader.upscale_method,factor,upscale_model_name- the latent-vs-model upscale choice above.steps,cfg,sampler_name,scheduler,denoise- the standard sampling knobs.denoiseat 1.0 is full txt2img; drop it and feed a latent from aninput_image_overrideand you've got img2img.seed- optional INT input (the pack has a standalone seed node for it).image_output,save_prefix,file_type,embed_workflow- how the result is saved.file_typegives you png, jpg, tiff, webp and more, andsave_prefixsupports the pack's%date:...%and%widget%parsing.
Outputs are the full breakdown: model, positive, negative, latent, vae, clip, plus images, seed, and plot_image (the last one lights up when you feed the adv_xyPlot optional input - the pack's famous XY-plot engine, which the community mostly uses for LoRA-epoch and weight comparisons).
Install and gotchas
Install the pack once - ComfyUI Manager, search ComfyUI_tinyterraNodes, or:
cd ComfyUI/custom_nodes
git clone https://github.com/TinyTerra/ComfyUI_tinyterraNodes.git
then restart ComfyUI. The pack has no Python dependencies beyond what ComfyUI already ships and downloads no models, so this is one of the cleaner installs in the ecosystem.
One thing that trips people up: tinyKSampler takes a VAE directly, so you have to load one yourself - it won't grab the baked VAE out of a checkpoint the way a pipe loader will. And if a field seems to vanish from the node, that's the dynamic-widgets feature hiding irrelevant inputs; the field reappears when you pick an option that uses it.
The honest limitation: like most of the pack's sampling nodes, this is tuned around SD1.5/SDXL land. If you're on newer architectures you'll find the [latent]/[hiresFix] split doesn't map cleanly - a known complaint in the community, so don't throw the pack away, just reach for a native sampler for those models.
Inputs (29)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | β | |
| positive | CONDITIONING | β | |
| negative | CONDITIONING | β | |
| latent | LATENT | β | |
| vae | VAE | β | |
| lora_name | COMBO | 1 options: None | |
| lora_strength | FLOAT | 1.00-10β10 | β |
| upscale_method | COMBO | None | 13 options: None, [latent] nearest-exact, [latent] bilinear, [latent] area, [latent] bicubic, [latent] lanczos, +7 |
| upscale_model_name | COMBO | 1 options: None | |
| factor | FLOAT | 2.000β10 | β |
| rescale | COMBO | 4 options: by percentage, to Width/Height, to longer side - maintain aspect, None | |
| percent | INT | 500β1000 | β |
| width | INT | 102464β16384 | β |
| height | INT | 102464β16384 | β |
| longer_side | INT | 102464β16384 | β |
| crop | COMBO | 2 options: disabled, center | |
| steps | INT | 201β10000 | β |
| cfg | FLOAT | 8.000β100 | β |
| sampler_name | COMBO | 44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38 | |
| scheduler | COMBO | 13 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +7 | |
| denoise | FLOAT | 1.000β1 | β |
| image_output | COMBO | 5 options: Hide, Preview, Save, Hide/Save, Disabled | |
| save_prefix | STRING | ComfyUI | β |
| file_type | COMBO | png | 7 options: png, jpg, jpeg, tiff, tif, webp, +1 |
| embed_workflow | BOOLEAN | true | β |
| clipopt | CLIP | β | |
| seedopt | INT | 00β18446744073709550000 | β |
| input_image_overrideopt | IMAGE | β | |
| adv_xyPlotopt | ADV_XYPLOT | β |
Outputs (9)
| Name | Type | Description |
|---|---|---|
| model | MODEL | β |
| positive | CONDITIONING | β |
| negative | CONDITIONING | β |
| latent | LATENT | β |
| vae | VAE | β |
| clip | CLIP | β |
| images | IMAGE | β |
| seed | INT | β |
| plot_image | IMAGE | β |