Conditional LoRA Applier (Creepybits)
A Rulebook That Picks Your LoRAs From the Prompt
- model
- clip
- MODEL
- CLIP
The Conditional LoRA Applier is the smartest node in the Creepybits pack, and the one most worth building a workflow around. It reads your prompt, checks it against a rulebook you write, and applies the matching LoRA - automatically. Say the word "portrait" and your portrait LoRA loads; mention "fantasy" and the fantasy style kicks in instead. You stop swapping LoRA loaders between runs and start describing what you want. The author calls it a "set-it-and-forget-it" workflow director, and for once the marketing matches the mechanism.
How the rulebook works
You get a big lora_definitions box with a helpful comment block already written in it. Each non-comment line is one rule:
portrait, face detail: Flux/Details/amateur_photo_v1.safetensors, 0.75, 1.0
cinematic scene, movie shot: MyLoRAs/Styles/retro_cinematic_v2.safetensors, 0.8, 0.9
Format: keyword1, keyword2 : relative_lora_path, model_strength, clip_strength. If any of the comma-separated keywords shows up anywhere in the prompt (case-insensitive by default), the LoRA is applied. Multiple rules can match, and multiple LoRAs stack. The path is relative to your loras folder, with forward slashes.
The remaining inputs:
modelandclip- the un-patched model and CLIP from your loaderprompt- the text the node scansdefault_lora_name- a dropdown, recursively scanned from your LoRA foldersdefault_lora_strength/default_clip_strength- applied only when no rule matchescase_sensitive- off by default; flip it if your keywords are ambiguous
Outputs are patched MODEL and CLIP, straight into your KSampler.
The logic, in plain terms
The node parses each rule line, does a substring search on the prompt, and if it finds a hit, it queues that LoRA for application. Then it applies every queued LoRA in order using ComfyUI's own LoraLoader under the hood - it's not reimplementing LoRA math, it's automating the loader you already use. The default LoRA is a fallback: it only applies when nothing in your rulebook matched, which makes it perfect for a house style.
Where people get burned
- Wrong paths. If a rule references a LoRA file that doesn't exist in your
lorasfolder, the node prints a warning and skips that rule - silently from the user's perspective. You'll see it in the console. - Strengths out of range. Keep model/clip strength within -2.0 to 2.0; the node parses them as floats and skips rules it can't parse.
- Comment lines. Lines starting with
#are ignored - keep your rulebook readable. - "None" vs empty. If
default_lora_nameis "None" and no rules matched, nothing is applied and you get your original model back. That's by design.
Installing it
It's part of the Creepybits pack:
cd ComfyUI/custom_nodes
git clone https://github.com/Creepybits/ComfyUI-Creepy_nodes.git
Restart ComfyUI, or install via ComfyUI Manager by searching "Creepy". No model downloads - your LoRAs are the ones you already own. The pack's requirements install on first launch.
The takeaway
This is a prompt-router that lives inside the model-patching stage, and it's genuinely good. The only real cost is the initial effort of writing your rulebook - a couple of minutes - and the payoff is not having to touch your LoRA wiring for the life of the workflow. If you build one workflow from this pack, build the one with this node in it.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| clip | CLIP | — | |
| prompt | STRING | — | |
| lora_definitions | STRING | # Define your LoRA rules here. # Format: keyword_phrase_1, keyword_phrase_2, ... : lora_full_relative_path, lora_strength, clip_strength # If ANY of the comma-separated keyword phrases are found in the prompt, the LoRA will be applied. # Example (use forward slashes for paths): # portrait, face detail: Flux/Details/amateur_photo_v1.safetensors, 0.75, 1.0 # cinematic scene, movie shot: MyLoRAs/Styles/retro_cinematic_v2.safetensors, 0.8, 0.9 # fantasy creature, mythical beast: Custom/Creatures/mythic_beast_lora.safetensors, 0.9, 0.9 # Use comma-separated values for strength. Default is 1.0 if omitted. # Keep strength between -2.0 and 2.0. # All keyword_phrases should be found anywhere in the prompt (case-insensitive by default). | — |
| default_lora_nameopt | COMBO | None | 1 options: None |
| default_lora_strengthopt | FLOAT | 1.00-2–2 | — |
| default_clip_strengthopt | FLOAT | 1.00-2–2 | — |
| case_sensitiveopt | BOOLEAN | false | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | — |
| CLIP | CLIP | — |