CheckpointLoaderSimple (dirty)
The simple loader, minus the dropdown, for scripts that know the filename
- MODEL
- CLIP
- VAE
CheckpointLoaderSimple (dirty) is the little brother of CheckpointLoader (dirty), and it removes the one thing you most want gone in an API workflow: the model dropdown. Where the standard loader makes you pick a file from a list in the UI, this one takes the filename as a plain STRING - so a script posting a JSON payload can name its own checkpoint, and the graph doesn't need a human to touch anything.
The "dirty" part is the forgiving matching. The string you pass gets its extension stripped and is matched by base name against the checkpoints folder, so "dreamshaper_8" resolves the same as "dreamshaper_8.safetensors". Scripts don't have to know the exact bytes of the filename - just the base name, which is the thing people actually type.
Inputs and outputs
ckpt_name(STRING) - the checkpoint to load. This is the only input, which is the entire point: it's a plain text field, not a dropdown.- Outputs:
MODEL,CLIP,VAE- the standard triple, because after resolving the name it just calls ComfyUI's ownCheckpointLoaderSimple.
The difference from its sibling: CheckpointLoader (dirty) also takes a config_name; this one doesn't need one, which makes it the right pick for modern single-file checkpoints where the config is implied. If you only ever load one model at a time and don't care about configs, this is the leaner option.
It slots into the same automation story as the rest of the pack's API nodes: Get Models dumps the real filename list to JSON, your script picks one and sends it as text, this loader resolves and loads it. The dropdown problem - where the UI knows filenames your code doesn't - just stops existing.
Install
Part of bmad4ever/comfyui_bmad_nodes, under Bmad/api/dirty loaders:
cd ComfyUI/custom_nodes
git clone https://github.com/bmad4ever/comfyui_bmad_nodes
cd comfyui_bmad_nodes
pip install -r requirements.txt
Restart, or ComfyUI Manager → search comfyui_bmad_nodes. It loads models you already have; nothing to download.
Gotchas
Same rules as its sibling. The base name must match a file in models/checkpoints exactly or the node fails with a "File not found" error state - no fuzzy autocomplete, just a resolved-or-dead match. And remember it resolves against checkpoints only; pointing it at a LoRA or a different model type won't work. It's also worth knowing the file-extension leniency goes one way: it tolerates you omitting the extension, but it won't rescue you from a wrong base name. If you're hand-driving this in a normal (non-API) workflow, the standard dropdown loader is honestly easier - this node earns its keep when a script is choosing the file.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| ckpt_name | STRING | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | — |
| CLIP | CLIP | — |
| VAE | VAE | — |