ComfyUI Node Runs on cloud

tinyKSampler

Tinyterra's tinyKSampler

By TinyTerraΒ·Created 3 years agoΒ·Updated 3 months agoΒ· 604
tinyKSampler
  • model
  • positive
  • negative
  • latent
  • vae
  • clip
  • input_image_override
  • adv_xyPlot
  • model
  • positive
  • negative
  • latent
  • vae
  • clip
  • images
  • seed
  • plot_image
β—„lora_nameβ–Ύβ–Ί
β—„lora_strength1.00β–Ί
β—„upscale_methodNoneβ–Ί
β—„upscale_model_nameβ–Ύβ–Ί
β—„factor2.00β–Ί
β—„rescaleβ–Ύβ–Ί
β—„percent50β–Ί
β—„width1024β–Ί
β—„height1024β–Ί
β—„longer_side1024β–Ί
β—„cropβ–Ύβ–Ί
β—„steps20β–Ί
β—„cfg8.00β–Ί
β—„sampler_nameβ–Ύβ–Ί
β—„schedulerβ–Ύβ–Ί
β—„denoise1.00β–Ί
β—„image_outputβ–Ύβ–Ί
β—„save_prefixComfyUIβ–Ί
β—„file_typepngβ–Ί
β—„embed_workflowtrueβ–Ί
β—„seed0β–Ί

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. denoise at 1.0 is full txt2img; drop it and feed a latent from an input_image_override and 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_type gives you png, jpg, tiff, webp and more, and save_prefix supports 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.

Category🌏 tinyterra/base

Inputs (29)

NameTypeDefaultDescription
modelMODELβ€”
positiveCONDITIONINGβ€”
negativeCONDITIONINGβ€”
latentLATENTβ€”
vaeVAEβ€”
lora_nameCOMBO1 options: None
lora_strengthFLOAT1.00-10–10β€”
upscale_methodCOMBONone13 options: None, [latent] nearest-exact, [latent] bilinear, [latent] area, [latent] bicubic, [latent] lanczos, +7
upscale_model_nameCOMBO1 options: None
factorFLOAT2.000–10β€”
rescaleCOMBO4 options: by percentage, to Width/Height, to longer side - maintain aspect, None
percentINT500–1000β€”
widthINT102464–16384β€”
heightINT102464–16384β€”
longer_sideINT102464–16384β€”
cropCOMBO2 options: disabled, center
stepsINT201–10000β€”
cfgFLOAT8.000–100β€”
sampler_nameCOMBO44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38
schedulerCOMBO13 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +7
denoiseFLOAT1.000–1β€”
image_outputCOMBO5 options: Hide, Preview, Save, Hide/Save, Disabled
save_prefixSTRINGComfyUIβ€”
file_typeCOMBOpng7 options: png, jpg, jpeg, tiff, tif, webp, +1
embed_workflowBOOLEANtrueβ€”
clipoptCLIPβ€”
seedoptINT00–18446744073709550000β€”
input_image_overrideoptIMAGEβ€”
adv_xyPlotoptADV_XYPLOTβ€”

Outputs (9)

NameTypeDescription
modelMODELβ€”
positiveCONDITIONINGβ€”
negativeCONDITIONINGβ€”
latentLATENTβ€”
vaeVAEβ€”
clipCLIPβ€”
imagesIMAGEβ€”
seedINTβ€”
plot_imageIMAGEβ€”