ComfyUI Node Runs on cloud

pipeLoader

Load, prompt, LoRA, latent β€” and carry it all down one wire

By TinyTerraΒ·Created 3 years agoΒ·Updated 3 months agoΒ· 604
pipeLoader
  • model_override
  • clip_override
  • optional_lora_stack
  • optional_controlnet_stack
  • pipe
  • model
  • positive
  • negative
  • latent
  • vae
  • clip
  • seed
  • width
  • height
  • pos_string
  • neg_string
β—„ckpt_nameβ–Ύβ–Ί
β—„config_nameDefaultβ–Ί
β—„vae_nameβ–Ύβ–Ί
β—„clip_skip-1β–Ί
β—„lorasβ€”β–Ί
β—„positivePositiveβ–Ί
β—„positive_token_normalizationβ–Ύβ–Ί
β—„positive_weight_interpretationβ–Ύβ–Ί
β—„negativeNegativeβ–Ί
β—„negative_token_normalizationβ–Ύβ–Ί
β—„negative_weight_interpretationβ–Ύβ–Ί
β—„empty_latent_aspect512 x 512 [S] 1:1β–Ί
β—„empty_latent_width512β–Ί
β—„empty_latent_height512β–Ί
β—„batch_size1β–Ί
β—„seed0β–Ί
β—„prepend_positiveβ€”β–Ί
β—„prepend_negativeβ€”β–Ί

pipeLoader is the heart of the tinyterraNodes pack: one node that loads your checkpoint, applies LoRAs, encodes both prompts, builds the empty latent, and bundles model + conditioning + latent + VAE + CLIP + seed into a single PIPE_LINE output. The pipe travels down one wire into pipeKSampler, and that's what collapses an eight-node workflow into two boxes.

This is the "everything but the sampler" node. It borrows the idea from Efficiency Nodes - a pack that's explicitly cited in the README as the ancestor - and adds a couple of things that made it a fixture in shared workflows: an embedded Advanced CLIP Text Encode (from BlenderNeko's ADV_CLIP_emb, which it also credits) with token-normalization and weight-interpretation dropdowns, and a LoRA text box instead of one-per-slot dropdowns.

How it works

The ckpt_name, vae_name, and clip_skip handle the checkpoint side. The loras box is the standout: a multiline field where each line is <lora:name:weight:optClipWeight>, so you can stack as many LoRAs as you want without adding nodes - the pack's autocomplete even suggests installed LoRAs as you type. empty_latent_aspect gives you the same resolution presets as tinyLoader (plus custom width/height), and batch_size sets the latent batch.

The prompt side gets the advanced treatment: positive / negative with the four token-normalization options and five weight-interpretation modes (comfy, A1111, compel, comfy++, down_weight). Optional prepend_positive / prepend_negative let you wire in a stable prefix block, and optional_lora_stack / optional_controlnet_stack accept stacks from other node packs.

Inputs you'll actually set

  • ckpt_name and vae_name (Baked VAE unless your model needs a separate one)
  • loras - one <lora:...> per line
  • positive / negative - your prompts
  • seed - set it here; the sampler will pick it up from the pipe

Outputs: the pipe plus individual model, positive, negative, latent, vae, clip, seed, and - usefully - width, height, pos_string, neg_string. You can grab any of these directly instead of digging into the pipe.

Installing it

Part of tinyterraNodes:

cd ComfyUI/custom_nodes
git clone https://github.com/TinyTerra/ComfyUI_tinyterraNodes.git

or ComfyUI Manager β†’ tinyterraNodes. No pip dependencies, no model downloads beyond your own checkpoints/LoRAs.

Gotchas

The pipe format is the pack's own PIPE_LINE, so a pipeLoader_v2 wire only plugs into nodes that speak it - pipeKSampler_v2, pipeEDIT, the pipe→basic_pipe converter for Impact Pack compatibility, and so on. The legacy v1 pipeLoader uses the same pipe type, so v1 and v2 mix; the SDXL variant uses a different PIPE_LINE_SDXL, which is the one people hit when they cross-wire a normal pipe into an SDXL sampler and nothing happens. Also note the LoRA autocomplete needs the feature enabled in the pack config (it's on by default), and clip_skip defaulting to -1 will quietly change results on models that don't want it.

Category🌏 tinyterra/pipe

Inputs (22)

NameTypeDefaultDescription
ckpt_nameCOMBO0 options:
config_nameCOMBODefault12 options: Default, anything_v3.yaml, v1-inference.yaml, v1-inference_clip_skip_2.yaml, v1-inference_clip_skip_2_fp16.yaml, v1-inference_fp16.yaml, +6
vae_nameCOMBO1 options: Baked VAE
clip_skipINT-1-24–0β€”
lorasSTRINGβ€”
positiveSTRINGPositiveβ€”
positive_token_normalizationCOMBO4 options: none, mean, length, length+mean
positive_weight_interpretationCOMBO5 options: comfy, A1111, compel, comfy++, down_weight
negativeSTRINGNegativeβ€”
negative_token_normalizationCOMBO4 options: none, mean, length, length+mean
negative_weight_interpretationCOMBO5 options: comfy, A1111, compel, comfy++, down_weight
empty_latent_aspectCOMBO512 x 512 [S] 1:113 options: width x height [custom], 512 x 512 [S] 1:1, 768 x 768 [S] 1:1, 910 x 910 [S] 1:1, 512 x 682 [P] 3:4, 512 x 768 [P] 2:3, +7
empty_latent_widthINT51264–16384β€”
empty_latent_heightINT51264–16384β€”
batch_sizeINT11–64β€”
seedINT00–18446744073709550000β€”
model_overrideoptMODELβ€”
clip_overrideoptCLIPβ€”
optional_lora_stackoptLORA_STACKβ€”
optional_controlnet_stackoptCONTROL_NET_STACKβ€”
prepend_positiveoptSTRINGβ€”
prepend_negativeoptSTRINGβ€”

Outputs (12)

NameTypeDescription
pipePIPE_LINEβ€”
modelMODELβ€”
positiveCONDITIONINGβ€”
negativeCONDITIONINGβ€”
latentLATENTβ€”
vaeVAEβ€”
clipCLIPβ€”
seedINTβ€”
widthINTβ€”
heightINTβ€”
pos_stringSTRINGβ€”
neg_stringSTRINGβ€”