Get Models JNK
Cycle through checkpoints and UNets for testing, then pin one for work
- count
- unet_name
- ckpt_name
- selected_name
- type
- search_text
- found_list
- is_work
- seed
If you've ever tried to A/B test a dozen checkpoints or diffusion UNets, you know the drill: change the dropdown, run, change it again, run, and lose track of which render came from which model. Get Models JNK automates the boring part. It scans your installed models, filters them by a search string, and in test mode picks a different one each run based on your seed - so you can queue the same prompt across a whole family of models and get one render per model, hands-free. Flip it to work mode and it stops cycling and just uses the model you name.
This is the "model-sweep" node of the pack, and it pairs naturally with the "with Name" family: Get Models hands you selected_name, which you feed into a real loader (or into Load Checkpoint Model with Name), and the name travels into your save metadata so you know which model made what.
Inputs and outputs
type-unetorcheckpoint, which folder to scan.search_text- substring filter (case-insensitive) over the model list.model_name- in work mode, the model to select (first match wins).mode-test(cycle by seed) orwork(usemodel_name).seed- drives which model test mode lands on.batch_size- 1β5; in test mode it groups seeds so a batch of seeds maps onto one model.
Outputs are chatty on purpose: count, unet_name, ckpt_name, selected_name, type, search_text, found_list (a newline-formatted index of every match), is_work (BOOLEAN), and seed. The one you mostly wire onward is selected_name.
How test mode actually picks
The index math is (seed // batch_size) % len(matches). Each seed lands on a different model, and batch_size groups consecutive seeds onto the same one - that's how you can render variations of the same prompt with a single model before moving to the next. In work mode, selected_name is the first match containing model_name, or an empty string if nothing matches.
Installing it
Pack install: search JNK in ComfyUI Manager, or
cd ComfyUI/custom_nodes/
git clone https://github.com/Aljnk/ComfyUI-JNK-Tiny-Nodes.git
No extra dependencies beyond core.
Where people get burned
The big one: the outputs are model names, not loaded models. selected_name is a string - you still need a real loader node downstream or nothing actually loads. Hook selected_name into Load Checkpoint Model with Name or the core loaders, exactly as you would the output of the "with Name" nodes.
Second: empty-string traps. In work mode, a typo'd model_name matches nothing and returns "" silently - your loader then either errors or loads the wrong thing. And test mode silently clamps to whatever matched the filter; if search_text is too strict and matches zero models, selected_name is empty and the run just fails downstream without telling you why. Start with a loose filter, confirm count and found_list look right, then tighten it. When it's set up correctly, it's the fastest way in this pack to sweep a model family in one queue.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| type | COMBO | 2 options: unet, checkpoint | |
| search_text | STRING | β | |
| model_name | STRING | β | |
| mode | COMBO | 2 options: test, work | |
| seed | INT | 0 | β |
| batch_size | INT | 11β5 | β |
Outputs (9)
| Name | Type | Description |
|---|---|---|
| count | INT | β |
| unet_name | β | |
| ckpt_name | β | |
| selected_name | STRING | β |
| type | unet,checkpoint | β |
| search_text | STRING | β |
| found_list | STRING | β |
| is_work | BOOLEAN | β |
| seed | INT | β |