Random LoRA Folder to Model Selector
Folder roulette, applied for you
- model
- clip
- exclude_loras_from_node
- MODEL
- CLIP
- applied_loras
- trigger_words
- help_text
The Folder Selector and its "to Model" twin solve the same problem: draw random LoRAs from your folder structure and stop curating a shortlist. This one is the folder version that applies the winners straight into your MODEL and CLIP instead of handing you a lora_stack. Pick folders, get a model with mystery LoRAs baked in, complete with their trigger words on the side so you're not flying blind.
If the folder selector is the "explore my library" node, this is the "explore my library without adding a Comfyroll node to the graph" version. The trade-off is you lose the ability to inspect the stack before it commits - the LoRAs go in as they're drawn.
How it works
Same machinery as RandomLoRAFolder, but with a different folder source: the dropdown list is built from ComfyUI's get_filename_list("loras"), which includes [root] plus every subfolder it knows about (via extra_model_paths.yaml if you use one). Each of the ten slots picks lora_count files at random from its folder, samples a strength per file within that slot's min/max range, and applies each one via ComfyUI's built-in LoraLoader.load_lora.
Seeding works like the rest of the pack: refresh_loras off means the same folder choices re-roll the same winners; on means fresh every run. force_refresh_cache clears the trigger-word cache. exclusive_mode On reduces everything to a single winner across all collected entries.
Inputs that matter
model,clip- required inputs; the pipeline getting the LoRAs.folder_path_1…folder_path_10- dropdowns of[root]and your lora subfolders.lora_count_1… - draws per folder (up to 99 per slot, though realistic counts stay low).min/max_strength_N- per-slot strength range.refresh_loras,force_refresh_cache,exclusive_mode- the usual three.exclude_loras_from_node- aLORA_LIST(from the pack'sExcludedLoras) of files to skip by basename.extra_trigger_words- appended to the trigger output.
Outputs: MODEL, CLIP, applied_loras (name (strength) per applied file), trigger_words, and help_text.
Gotchas worth knowing
- Stacking overshoots fast. This applies every winner, and unlike a stack you can't easily pull one out after the fact. If you tell it to draw 5 from one folder and 4 from another with default strengths up to 1.0, you've got nine LoRAs fighting each other. Start with
lora_countat 1–2 per folder. - The dropdown reflects what ComfyUI knows, not just disk. Stability Matrix users in the author's thread hit a folder picker stuck on "None" because their shared models dir exposed
lora(singular) instead ofloras. Check your model paths config before blaming the node. - Wrong-base LoRAs are your problem, not the node's. Folder roulette happily draws Illustrious LoRAs for an SDXL checkpoint. The trigger words tell you what a file is for; it won't tell you it's for a different architecture.
Install
ComfyUI Manager (search "Santodan"), or:
cd ComfyUI/custom_nodes
git clone https://github.com/Santodan/santodan-custom-nodes-comfyui
Restart. No dependencies or downloads - it reads your existing loras folder, with one CivitAI metadata lookup per uncached file on first runs.
Inputs (47)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| clip | CLIP | — | |
| exclusive_mode | COMBO | 2 options: Off, On | |
| refresh_loras | BOOLEAN | false | — |
| force_refresh_cache | BOOLEAN | false | — |
| extra_trigger_wordsopt | STRING | — | |
| exclude_loras_from_nodeopt | LORA_LIST | — | |
| folder_path_1opt | COMBO | 2 options: None, [root] | |
| lora_count_1opt | INT | 11–99 | — |
| min_strength_1opt | FLOAT | 0.60-10–10 | — |
| max_strength_1opt | FLOAT | 1.00-10–10 | — |
| folder_path_2opt | COMBO | 2 options: None, [root] | |
| lora_count_2opt | INT | 11–99 | — |
| min_strength_2opt | FLOAT | 0.60-10–10 | — |
| max_strength_2opt | FLOAT | 1.00-10–10 | — |
| folder_path_3opt | COMBO | 2 options: None, [root] | |
| lora_count_3opt | INT | 11–99 | — |
| min_strength_3opt | FLOAT | 0.60-10–10 | — |
| max_strength_3opt | FLOAT | 1.00-10–10 | — |
| folder_path_4opt | COMBO | 2 options: None, [root] | |
| lora_count_4opt | INT | 11–99 | — |
| min_strength_4opt | FLOAT | 0.60-10–10 | — |
| max_strength_4opt | FLOAT | 1.00-10–10 | — |
| folder_path_5opt | COMBO | 2 options: None, [root] | |
| lora_count_5opt | INT | 11–99 | — |
| min_strength_5opt | FLOAT | 0.60-10–10 | — |
| max_strength_5opt | FLOAT | 1.00-10–10 | — |
| folder_path_6opt | COMBO | 2 options: None, [root] | |
| lora_count_6opt | INT | 11–99 | — |
| min_strength_6opt | FLOAT | 0.60-10–10 | — |
| max_strength_6opt | FLOAT | 1.00-10–10 | — |
| folder_path_7opt | COMBO | 2 options: None, [root] | |
| lora_count_7opt | INT | 11–99 | — |
| min_strength_7opt | FLOAT | 0.60-10–10 | — |
| max_strength_7opt | FLOAT | 1.00-10–10 | — |
| folder_path_8opt | COMBO | 2 options: None, [root] | |
| lora_count_8opt | INT | 11–99 | — |
| min_strength_8opt | FLOAT | 0.60-10–10 | — |
| max_strength_8opt | FLOAT | 1.00-10–10 | — |
| folder_path_9opt | COMBO | 2 options: None, [root] | |
| lora_count_9opt | INT | 11–99 | — |
| min_strength_9opt | FLOAT | 0.60-10–10 | — |
| max_strength_9opt | FLOAT | 1.00-10–10 | — |
| folder_path_10opt | COMBO | 2 options: None, [root] | |
| lora_count_10opt | INT | 11–99 | — |
| min_strength_10opt | FLOAT | 0.60-10–10 | — |
| max_strength_10opt | FLOAT | 1.00-10–10 | — |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | — |
| CLIP | CLIP | — |
| applied_loras | STRING | — |
| trigger_words | STRING | — |
| help_text | STRING | — |