Checkpoint Loader By String Dirty
Load a checkpoint by typing half its name
- model
- clip
- vae
- ckpt_filename
You know the ritual: every time you want a different model you have to open the Checkpoint Loader dropdown, squint through a thousand-item list, and scroll. Checkpoint Loader By String Dirty replaces the dropdown with a text box. Type a partial name - "dream", "pony xl", whatever fragment you remember - and it fuzzy-matches it against every checkpoint registered in your install, then hands you a proper model, clip, and vae.
That might sound like a downgrade ("I like the dropdown"), but the point isn't the text box itself. It's that a string can come from anywhere. A file, another node, a random selector, a schedule. The moment a model choice becomes data instead of a manual pick, you can automate it - swap checkpoints between runs, rotate on a timer, or pull the model name from a prompt file. That's the whole game of the illumorae pack: turning workflow choices into strings you can generate.
How it works
The "Dirty" in the name is doing real work. This node doesn't do an exact filename lookup - it walks your registered checkpoint directories recursively, normalizes the paths, and picks the file whose name best matches your partial string. It supports full paths, relative paths, or bare fragments. If you have two checkpoints that both match "dream", you get the closest match, which is exactly the ambiguity the name is warning you about.
Three inputs shape the search. ckpt_name is the string you type or wire in. safe_mode defaults to true, which means it only considers .safetensors files (and validates the safetensors header before loading, so a corrupt or half-downloaded file gets caught before it eats your VRAM). file_extensions is a comma-separated override - .safetensors,.sft by default - that only applies when you flip safe_mode off. There's a DEBUG_MODE boolean if you want it to print what it found and why.
Outputs are the usual model, clip, vae triplet plus a ckpt_filename string telling you exactly which file it resolved to. Wire the triplet into your sampler chain like any loader; the filename output is there so downstream nodes know what they're working with.
Installing it
It's part of CorvaeOboro's ComfyUI_illumorae pack (CC0, no model downloads - this is all code). Through ComfyUI Manager, search illumorae and install, then restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/CorvaeOboro/ComfyUI_illumorae
# restart ComfyUI after
Common issues
- Nothing matches. If you type a fragment and get an error, check
safe_mode- if you have.ckptor.ggufcheckpoints, the safetensors-only default will skip them. Flipsafe_modeoff and extendfile_extensions. - "Dirty" matches the wrong model. Partial matching is best-effort. If two files share a substring, use a longer or more distinctive fragment, or a full path.
- The node runs but output doesn't change. Checkpoint loading is cached like everything else in ComfyUI; if you're feeding the same string it won't reload. That's correct behavior - a checkpoint that reloads every run would add minutes to your queue.
If you pair this with the pack's Checkpoint Random Selector (which outputs a folder path, file path, and filename), you've got a fully automated model-rotation loop with no manual clicking.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| ckpt_name | STRING | — | |
| DEBUG_MODEopt | BOOLEAN | false | — |
| safe_modeopt | BOOLEAN | true | — |
| file_extensionsopt | STRING | .safetensors,.sft | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |
| clip | CLIP | — |
| vae | VAE | — |
| ckpt_filename | STRING | — |