Nodes/Bubba Nodes/Bubba KSampler
ComfyUI Node

Bubba KSampler

A KSampler that writes down what it just did

By bubbafett5611·Created 5 months ago·Updated 2 months ago· 0
Bubba KSampler
  • pipe
  • latent_image
  • metadata
  • model
  • vae
  • positive
  • negative
  • pipe
  • image
  • latent
  • metadata
  • info
seed0
steps20
cfg8.0
sampler_name
scheduler
denoise1.00

The stock KSampler has a memory problem: it forgets everything the moment it finishes. It doesn't record the seed you used, the settings that produced the image, or how long it took - none of it survives past the run. Bubba KSampler is the same sampler with the memory fixed. It runs the identical core sampling function, but it times itself, decodes the result when a VAE is available, and writes the whole generation record - seed, steps, CFG, sampler, scheduler, denoise, sampling time - into the metadata and the pipe.

That's the whole pitch, and it's a good one. If you've ever found a great image and had no idea what seed or settings made it, you've felt the exact problem this solves. In a Bubba workflow the metadata rides forward: Bubba Save Image embeds it in the PNG under bubba_metadata, so the image itself becomes the record. Drag it back later, or load it with Bubba Load Image (With Metadata), and the seed and settings come back with it.

The inputs you already know

seed, steps, cfg, sampler_name, scheduler, denoise - all the standard KSampler knobs, with the same defaults you're used to (20 steps, CFG 8). One notable upgrade: the seed input has native after-generate control - the same fixed / increment / decrement / randomize dropdown you get on core KSampler seeds, so you can lock a good seed or roll a new one per run right on the widget. Same trap applies as everywhere: by default the control fires after the run, so the seed shown is the one that will be used next. If you find a good one and want to keep it, flip the control to fixed - and if you've already lost a good seed, the classic recovery works here too: drag the output image back into ComfyUI and the seed is in its metadata.

The pipe-aware inputs are where it diverges: pipe in, and it resolves model, latent, conditioning, and VAE from the pipe if you don't wire them explicitly. latent_image, model, vae, positive, negative all override the pipe when connected, so you can hybrid - pipe for most things, an explicit latent when you're doing img2img.

What comes out

  • image - the decoded image, present whenever a VAE was available. This is the convenient bit: you get pixels out of the sampler itself, no separate VAE Decode node in the graph.
  • latent - the latent tensor, for downstream latent work (like a tiled upscaler that wants the latent).
  • pipe / metadata - both updated with the full generation record, including sampler_time_seconds (a nice-to-have for benchmarking sampler choices - the info string reports it as Time: 12.345s).
  • info - one string summarizing the run.

Install and the honest caveat

Standard pack install:

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

or ComfyUI Manager → search "Bubba Nodes", restart. ComfyUI 0.27.0+ needed, no extra dependencies.

The caveat: this only pays off inside the Bubba ecosystem. Standalone, it's a KSampler that decodes for you - convenient, but not life-changing, and it can't save your workflow without Bubba Save Image to write the metadata. If you're running a vanilla graph, you'd be adding a pack for a nicety. If you're already using the pipe - Combo Loader → LoRA Stack → prompt builder → this → Save Image - it's the node that makes the "metadata travels with the image" promise actually true.

CategoryBubba Nodes/Generation

Inputs (13)

NameTypeDefaultDescription
seedINT00–18446744073709550000
stepsINT201–10000
cfgFLOAT8.00–100
sampler_nameCOMBO44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38
schedulerCOMBO9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3
denoiseFLOAT1.000–1
pipeoptBUBBA_PIPE
latent_imageoptLATENT
metadataoptBUBBA_METADATA
modeloptMODEL
vaeoptVAE
positiveoptCONDITIONING
negativeoptCONDITIONING

Outputs (5)

NameTypeDescription
pipeBUBBA_PIPE
imageIMAGE
latentLATENT
metadataBUBBA_METADATA
infoSTRING