Nodes/Bubba Nodes/Bubba Pipe Out
ComfyUI Node

Bubba Pipe Out

Bubba Pipe Out

By bubbafett5611·Created 5 months ago·Updated 2 months ago· 0
Bubba Pipe Out
  • pipe
  • pipe
  • image
  • mask
  • latent
  • metadata
  • model
  • clip
  • vae
  • positive
  • negative
  • positive_prompt
  • negative_prompt

Bubba Pipe Out is the mirror image of Bubba Pipe In, and it answers the question you'll ask the first time you build a pipe workflow: "okay, how do I get my stuff back out?" You feed it a BUBBA_PIPE and it unpacks the whole thing into individual sockets you can wire anywhere - into a KSampler, a VAE Decode, a save node, whatever. One wire goes in, a dozen come out.

In a tidy Bubba workflow you barely need it. The pack's own nodes are pipe-aware: Bubba KSampler reads the latent, model, conditioning, and metadata out of the pipe internally, and Bubba Save Image does the same on the save side. The pipe just flows through. But the moment you want to plug a Bubba pipe into a non-Bubba node - and you will, because no pack owns every node you use - you need this node to hand that node its raw inputs.

How it works

It's dead simple mechanically: pipe goes in, and the node exposes image, mask, latent, metadata, model, clip, vae, positive, negative, positive_prompt, and negative_prompt as outputs, plus the original pipe passed through untouched. That pass-through output is a nice touch - you can tap the pipe at any point in the graph without consuming it, so a single pipe can drive several independent branches.

The metadata output is worth calling out separately. It's a typed BUBBA_METADATA object holding everything the pack tracked about a generation: model name, seed, steps, CFG, sampler, scheduler, denoise, sample time, both prompts, and the list of LoRAs applied. If you're building your own frontend tooling, a metadata debug or save node downstream of Pipe Out is how you get at it.

The output you'll actually use

Honestly, for most graphs it's the five that feed a sampler: model, clip, vae, positive, negative. Everything else you usually only tap when you need to inspect or branch. positive_prompt and negative_prompt are handy when you want to show or log the actual prompt text after a prompt-builder node expanded its wildcards - that's where the final string lives.

How to install it

Same pack, same steps as every Bubba node. ComfyUI Manager → search "Bubba Nodes" → install → restart, or:

cd ComfyUI/custom_nodes
git clone https://github.com/bubbafett5611/bubba_nodes.git

then restart ComfyUI. If the nodes show up as missing, run python -m pip install -r requirements.txt in the same Python environment ComfyUI uses. The pack targets ComfyUI v0.27.0+ and uses the newer V3 node API, so keep ComfyUI current.

Gotchas

The big one: this node refuses to work without a pipe. Unlike most Bubba nodes, which tolerate empty inputs, Pipe Out's only job is unpacking, so if you leave pipe unconnected you get a hard error - the README is explicit that this one requires the pipe. That's correct behavior, but it surprises people who assume every input is optional.

The other trap is the stale-context one that haunts all context-bus designs (it's documented in the KB's node-plumbing essay as the price of spaghetti reduction). If you unpack a model from a pipe that was built before a LoRA node ran, you'll silently sample with the base weights. When you're debugging "why is my LoRA doing nothing," the first thing to check is whether the Pipe Out you're sampling from is downstream of the LoRA, not upstream of it.

Worth knowing for completeness: this pack is young and hasn't accumulated a big tutorial trail yet, so the README's quick-workflow example is your best teacher. Wire Pipe In → prompt builder → KSampler → Pipe Out and you'll see the whole loop in five nodes.

CategoryBubba Nodes/Pipe

Inputs (1)

NameTypeDefaultDescription
pipeBUBBA_PIPEBubba pipe to unpack into visible sockets.

Outputs (12)

NameTypeDescription
pipeBUBBA_PIPE
imageIMAGE
maskMASK
latentLATENT
metadataBUBBA_METADATA
modelMODEL
clipCLIP
vaeVAE
positiveCONDITIONING
negativeCONDITIONING
positive_promptSTRING
negative_promptSTRING