Bubba Checkpoint Loader
ComfyUI's Load Checkpoint, but it remembers which one you picked
- pipe
- metadata
- pipe
- metadata
- model
- clip
- vae
- checkpoint_name
The stock ComfyUI Load Checkpoint node is fine at one job: unpacking a checkpoint into model, CLIP, and VAE. Bubba Checkpoint Loader does that exact thing and then writes down which checkpoint it was - into a typed pipe and into the metadata that follows your image all the way to the save node. That one extra step is the entire difference, and it's the difference that makes the rest of the Bubba pack make sense.
Here's the workflow problem it solves. In a normal ComfyUI graph, the moment you switch checkpoints, nothing records the change. You generate, you tweak, you generate again, and three hours later you're looking at an image you love with no idea which of your ten checkpoints made it. The metadata convention this pack uses (model name, seed, steps, CFG, sampler, LoRAs, prompts - all carried in a BUBBA_METADATA object) fixes that, and every Bubba node is designed around it. This loader is where the chain starts: it sets model_name on the metadata, and Bubba Save Image later bakes it into the PNG.
What you connect
Only one required input: ckpt_name, a dropdown of every checkpoint in your models/checkpoints folder. Pick one.
The optional inputs matter more than they look. Feed it a pipe and it preserves whatever's in there (latent, image, prompts, existing metadata) while swapping in the new model, clip, and vae - so you can reload a pipe mid-workflow without re-rolling everything. Pass a metadata in and it updates that object rather than starting fresh.
The outputs are the standard trio plus context:
model,clip,vae- wire these to a sampler like you would from the core loader, or just let them ride inside thepipe.pipe- the updated pipe carrying the model stack plus the recorded checkpoint name.metadata- the updated metadata object.checkpoint_name- the selected filename as a string, if you want to display it or build a filename from it.
Why not just use the core node
Because this is the entry point to a graph where you stop re-wiring. If you're running a pure Bubba workflow - Combo Loader → LoRA Stack → prompt builder → Empty Latent → Bubba KSampler → Save Image - the pipe does the carrying and you barely wire anything. The trade is that you've committed to the pack's way of doing things. If you're only here for one node, Load Checkpoint is not the one worth converting for; grab it when you're already using the pipe.
One honest caveat: it's the plain loader, so you get whatever VAE and CLIP are bundled inside the checkpoint. If you want to force a specific VAE or CLIP, or apply a CLIP skip in the same step, Bubba Combo Loader is the sibling for that - this node is deliberately minimal.
Install
Bubba Nodes ships all 37 of its nodes together. ComfyUI Manager → search "Bubba Nodes", or:
cd ComfyUI/custom_nodes
git clone https://github.com/bubbafett5611/Bubba_Nodes
Restart, and the pack installs its requirements (aiohttp, pydantic) on first load. This pack targets ComfyUI 0.27.0+ and registers through the newer V3 node API, so an old ComfyUI install will silently not show the nodes - update ComfyUI before you go hunting for the bug.
Where people get burned: the metadata only knows the name of the checkpoint, not a hash of it. If you've got two files with the same name in different subfolders, or you replace a file but keep the name, the recorded model name won't tell you which bytes you actually used. Pair this with Bubba Checkpoint Fingerprint if provenance needs to be airtight - hash the file, and the truth is in the metadata too.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| ckpt_name | COMBO | 0 options: | |
| pipeopt | BUBBA_PIPE | — | |
| metadataopt | BUBBA_METADATA | — |
Outputs (6)
| Name | Type | Description |
|---|---|---|
| pipe | BUBBA_PIPE | — |
| metadata | BUBBA_METADATA | — |
| model | MODEL | — |
| clip | CLIP | — |
| vae | VAE | — |
| checkpoint_name | STRING | — |