Nodes/ComfyUI-RvTools_v2/Pipe In Context
ComfyUI Node

Pipe In Context

Cram your whole generation into one fat cable

By r-vageΒ·Created about a year agoΒ·Updated 5 months agoΒ· 23
Pipe In Context
  • base_ctx
  • model
  • clip
  • vae
  • positive
  • negative
  • latent
  • images
  • image_ref
  • image_pp
  • mask1
  • mask2
  • sampler
  • scheduler
  • context
  • model
  • clip
  • vae
  • positive
  • negative
  • latent
  • images
  • image_ref
  • image_pp
  • mask1
  • mask2
  • sampler
  • scheduler
  • steps
  • cfg
  • guidance
  • seed
  • width
  • height
  • batch_size
  • text_pos
  • text_pos_i2p
  • text_neg
  • model_name
  • vae_name
  • lora_names
  • path
β—„stepsβ€”β–Ί
β—„cfgβ€”β–Ί
β—„guidanceβ€”β–Ί
β—„seedβ€”β–Ί
β—„widthβ€”β–Ί
β—„heightβ€”β–Ί
β—„batch_sizeβ€”β–Ί
β—„text_posβ€”β–Ί
β—„text_pos_i2pβ€”β–Ί
β—„text_negβ€”β–Ί
β—„model_nameβ€”β–Ί
β—„vae_nameβ€”β–Ί
β—„lora_namesβ€”β–Ί
β—„pathβ€”β–Ί

Big workflows have a way of turning into plate-spinning acts: model, clip, vae, positive, negative, latent, sampler settings, seed - each with its own wire snaking across the canvas. Pipe In Context is the RvTools answer to that mess. It bundles a whole generation's worth of values into a single pipe cable, and then helpfully re-exposes every one of those values as its own output so you can keep wiring normally. One tidy cable through the middle of your graph, with tap points wherever you need them.

How it works

This node is a direct descendant of rgthree's context utilities - the code is taken from there and adapted, and the author says so in the source. Here's the pattern: you optionally feed it a base_ctx pipe, then connect whichever individual values you have - model, clip, vae, positive, negative, latent, images, sampler/scheduler, steps, cfg, guidance, seed, width/height, batch_size, the prompt texts, model/vae/lora names, even a path. It merges all of that into a single context object, then returns it as the context pipe output plus every value again as its own output.

The merging logic is the clever bit: if you pass a base_ctx and don't override a field, the value from the base pipe carries through. Override a field and your new value wins. So you can thread one pipe through a whole workflow, amending it at each stage - this is how you get "define the base once, tweak per branch" without re-wiring everything.

The inputs that matter

There are a lot of optional inputs, but you'll typically touch a handful:

  • base_ctx - the incoming pipe from another context node or a Pipe Out. Optional; if omitted, the node starts from scratch.
  • model / clip / vae / positive / negative / latent - the core generation payload.
  • sampler / scheduler / steps / cfg / seed - sampling settings that live alongside the payload.
  • The prompt fields (text_pos, text_neg) and names (model_name, vae_name, lora_names) matter if you plan to feed this into a save node that wants generation metadata.

The outputs mirror all of that: a context pipe plus individual model, clip, vae, conditioning, latent, image, sampler, scheduler, and numeric outputs, so you can drop a single Pipe In Context at a branch point and wire everything from there.

Why you'd reach for it

This is a workflow-architecture node, not a capability node. It shines in graphs with multiple sampler passes or reused context - a base context defined once, then branched into a txt2img pass and an img2img pass, each amending just the fields it changes. It also plays nice with the pack's pipe-based Save Images, which can read generation data (model, seed, sampler, steps) straight out of the pipe for filenames and metadata instead of guessing.

Installing it

Part of the RvTools v2 pack - no models, no heavy deps beyond what Manager installs (opencv-python, pilgram, pynvml, piexif). ComfyUI Manager β†’ search RvTools β†’ install ComfyUI-RvTools_v2, restart. Or:

cd ComfyUI/custom_nodes
git clone https://github.com/r-vage/ComfyUI-RvTools_v2

Restart and confirm RvTools v2: Version 2.5.x in the console.

Troubleshooting

  • Pipe types are pack-specific. This node's pipe type is RvTools' own; it connects cleanly to other RvTools pipe nodes (like the Pipe Out family and Save Images' pipe_opt), but it won't necessarily click into another pack's pipe without an adapter. If the socket doesn't snap, that's the reason.
  • Unfilled fields come out as None. Anything you don't wire in will flow downstream as None unless it's inherited from base_ctx. Nodes downstream that don't tolerate None will complain - feed the fields you actually use.
  • Old RvTools v1 workflows fail in Manager because the original repo was deleted; this v2 pack renamed everything. And the author has since moved development to ComfyUI_Eclipse, the successor to this pack.
Category🫦 RvTools II/ Pipe

Inputs (28)

NameTypeDefaultDescription
base_ctxoptpipeβ€”
modeloptMODELβ€”
clipoptCLIPβ€”
vaeoptVAEβ€”
positiveoptCONDITIONINGβ€”
negativeoptCONDITIONINGβ€”
latentoptLATENTβ€”
imagesoptIMAGEβ€”
image_refoptIMAGEβ€”
image_ppoptIMAGEβ€”
mask1optMASKβ€”
mask2optMASKβ€”
sampleropt*β€”
scheduleropt*β€”
stepsoptINTβ€”
cfgoptFLOATβ€”
guidanceoptFLOATβ€”
seedoptINTβ€”
widthoptINTβ€”
heightoptINTβ€”
batch_sizeoptINTβ€”
text_posoptSTRINGβ€”
text_pos_i2poptSTRINGβ€”
text_negoptSTRINGβ€”
model_nameoptSTRINGβ€”
vae_nameoptSTRINGβ€”
lora_namesoptSTRINGβ€”
pathoptSTRINGβ€”

Outputs (28)

NameTypeDescription
contextpipeβ€”
modelMODELβ€”
clipCLIPβ€”
vaeVAEβ€”
positiveCONDITIONINGβ€”
negativeCONDITIONINGβ€”
latentLATENTβ€”
imagesIMAGEβ€”
image_refIMAGEβ€”
image_ppIMAGEβ€”
mask1MASKβ€”
mask2MASKβ€”
sampler*β€”
scheduler*β€”
stepsINTβ€”
cfgFLOATβ€”
guidanceFLOATβ€”
seedINTβ€”
widthINTβ€”
heightINTβ€”
batch_sizeINTβ€”
text_posSTRINGβ€”
text_pos_i2pSTRINGβ€”
text_negSTRINGβ€”
model_nameSTRINGβ€”
vae_nameSTRINGβ€”
lora_namesSTRINGβ€”
pathSTRINGβ€”