Bubba KSampler
A KSampler that writes down what it just did
- pipe
- latent_image
- metadata
- model
- vae
- positive
- negative
- pipe
- image
- latent
- metadata
- info
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, includingsampler_time_seconds(a nice-to-have for benchmarking sampler choices - theinfostring reports it asTime: 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.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| seed | INT | 00–18446744073709550000 | — |
| steps | INT | 201–10000 | — |
| cfg | FLOAT | 8.00–100 | — |
| sampler_name | COMBO | 44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38 | |
| scheduler | COMBO | 9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3 | |
| denoise | FLOAT | 1.000–1 | — |
| pipeopt | BUBBA_PIPE | — | |
| latent_imageopt | LATENT | — | |
| metadataopt | BUBBA_METADATA | — | |
| modelopt | MODEL | — | |
| vaeopt | VAE | — | |
| positiveopt | CONDITIONING | — | |
| negativeopt | CONDITIONING | — |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| pipe | BUBBA_PIPE | — |
| image | IMAGE | — |
| latent | LATENT | — |
| metadata | BUBBA_METADATA | — |
| info | STRING | — |