ComfyUI Node

Preset Selector 10

Switching full LoRA+prompt setups without the spaghetti

By chikiu-san·Created 2 months ago·Updated 2 months ago· 0
Preset Selector 10
  • model
  • clip
  • model_low
  • high_model
  • low_model
  • positive
  • negative
  • selected_index
  • selected_name
preset_index0
preset_0_namePreset 0
preset_0_high_lora
preset_0_high_strength1.00
preset_0_low_lora
preset_0_low_strength1.00
preset_0_positive
preset_0_negative
preset_1_namePreset 1
preset_1_high_lora
preset_1_high_strength1.00
preset_1_low_lora
preset_1_low_strength1.00
preset_1_positive
preset_1_negative
preset_2_namePreset 2
preset_2_high_lora
preset_2_high_strength1.00
preset_2_low_lora
preset_2_low_strength1.00
preset_2_positive
preset_2_negative
preset_3_namePreset 3
preset_3_high_lora
preset_3_high_strength1.00
preset_3_low_lora
preset_3_low_strength1.00
preset_3_positive
preset_3_negative
preset_4_namePreset 4
preset_4_high_lora
preset_4_high_strength1.00
preset_4_low_lora
preset_4_low_strength1.00
preset_4_positive
preset_4_negative
preset_5_namePreset 5
preset_5_high_lora
preset_5_high_strength1.00
preset_5_low_lora
preset_5_low_strength1.00
preset_5_positive
preset_5_negative
preset_6_namePreset 6
preset_6_high_lora
preset_6_high_strength1.00
preset_6_low_lora
preset_6_low_strength1.00
preset_6_positive
preset_6_negative
preset_7_namePreset 7
preset_7_high_lora
preset_7_high_strength1.00
preset_7_low_lora
preset_7_low_strength1.00
preset_7_positive
preset_7_negative
preset_8_namePreset 8
preset_8_high_lora
preset_8_high_strength1.00
preset_8_low_lora
preset_8_low_strength1.00
preset_8_positive
preset_8_negative
preset_9_namePreset 9
preset_9_high_lora
preset_9_high_strength1.00
preset_9_low_lora
preset_9_low_strength1.00
preset_9_positive
preset_9_negative

The pitch is one sentence: Preset Selector 10 holds ten complete setups - two LoRAs each, their strengths, and a positive/negative prompt pair - and hands you back applied models plus encoded conditioning, all chosen by a single integer. Set the slots once, then flip between characters with one dial instead of muting and unmuting a stack of LoRA loaders and text encoders.

If you've ever built a character-rotation workflow, you know the alternative: a dozen LoraLoaders and CLIP Text Encode nodes that you have to keep in sync by hand, then bypass in blocks. This collapses that into one node whose slots you switch with an index. It's not a LoRA manager in the rgthree Power Lora Loader sense - that node is about stacking many LoRAs and reading trigger words off files. This one is about bundling whole setups and swapping between them, prompts included.

How it works

The mechanism is short, and it explains the slightly odd "HIGH/LOW" naming. The node does preset_index % 10, reads that slot, applies the preset's HIGH LoRA to your model input, and applies the LOW LoRA either to the same model or to the optional model_low input when you connect one. Then it encodes the slot's positive and negative prompts through your clip and outputs conditioning that's ready to wire into a sampler.

Why two LoRAs per slot? The names are borrowed from Wan 2.2, which denoises in two stages that use two separate UNet models - a high-noise pass for motion and composition, a low-noise pass for detail - and each stage wants its own LoRA. Connect your high-noise base to model, your low-noise base to model_low, and one slot drives both samplers with one prompt. That's a genuinely useful workflow trick: it's exactly how people run character LoRAs on Wan 2.2, one _HIGH and one _LOW file per character.

Leave model_low unconnected and both LoRAs simply stack onto model - which is how you'll use it for plain SDXL or Flux image work. "High" and "low" are really just "LoRA A" and "LoRA B" unless you're on the dual-model setup.

The LoRA dropdowns are built from your models/loras folder at startup, with None prepended so any slot can be left empty.

The inputs that matter

Ten slots means a wall of widgets, but per slot you only really set five things:

  • preset_index - the dial. Any integer works; the node wraps it modulo 10, so 10 → 0, 11 → 1. It ships with a control_after_generate dropdown, so set it to increment and every queue run hops to the next preset.
  • preset_N_high_lora / low_lora - the two LoRA dropdowns. Pick None to skip one.
  • preset_N_high_strength / low_strength - LoRA weight, default 1.0, range −10 to 10.
  • preset_N_positive / negative - the prompt pair, encoded for you.

preset_N_name is just a label for your own sanity. On the way out you get high_model and low_model (into your samplers), positive and negative (into the sampler's conditioning), plus selected_index and selected_name if you want to know which slot is live downstream.

Installing it

No dependencies, no model downloads - the pack is plain Python on ComfyUI's own SDK. In ComfyUI Manager, search preset_selector_custom_node (or Install via Git URL), then restart. Manual route:

cd ComfyUI/custom_nodes
git clone https://github.com/chikiu-san/preset_selector_custom_node

Restart ComfyUI and it shows up under Add Node → presets → Preset Selector 10.

Common issues

  • LoRA missing from the dropdown - the list is read once at startup. Add files to models/loras and restart.
  • Node shows as missing after an update - the pack renamed its internal IDs from the old "Igoon*" names, so workflows saved on the previous version won't auto-map. Re-add the node and re-save.
  • Prompts won't auto-fill - each slot can persist its prompt/strengths/name to a per-user library (user/preset_selector_library.json) keyed by the exact (high_lora, low_lora) pair, but only for pairs you've explicitly saved with the "💾 Save all slots to library" button. An unsaved pair leaving the widgets untouched is expected, not a bug.
  • The preset seems one off - control_after_generate fires after a run, so the index you're looking at is the one the next run uses. That's stock ComfyUI behavior rather than a bug here, but it bites everyone once; the global "widget control mode: before" setting fixes the whole class of confusion if it drives you mad.
Categorypresets

Inputs (74)

NameTypeDefaultDescription
modelMODEL
clipCLIP
preset_indexINT00–999999
preset_0_nameSTRINGPreset 0
preset_0_high_loraCOMBO1 options: None
preset_0_high_strengthFLOAT1.00-10–10
preset_0_low_loraCOMBO1 options: None
preset_0_low_strengthFLOAT1.00-10–10
preset_0_positiveSTRING
preset_0_negativeSTRING
preset_1_nameSTRINGPreset 1
preset_1_high_loraCOMBO1 options: None
preset_1_high_strengthFLOAT1.00-10–10
preset_1_low_loraCOMBO1 options: None
preset_1_low_strengthFLOAT1.00-10–10
preset_1_positiveSTRING
preset_1_negativeSTRING
preset_2_nameSTRINGPreset 2
preset_2_high_loraCOMBO1 options: None
preset_2_high_strengthFLOAT1.00-10–10
preset_2_low_loraCOMBO1 options: None
preset_2_low_strengthFLOAT1.00-10–10
preset_2_positiveSTRING
preset_2_negativeSTRING
preset_3_nameSTRINGPreset 3
preset_3_high_loraCOMBO1 options: None
preset_3_high_strengthFLOAT1.00-10–10
preset_3_low_loraCOMBO1 options: None
preset_3_low_strengthFLOAT1.00-10–10
preset_3_positiveSTRING
preset_3_negativeSTRING
preset_4_nameSTRINGPreset 4
preset_4_high_loraCOMBO1 options: None
preset_4_high_strengthFLOAT1.00-10–10
preset_4_low_loraCOMBO1 options: None
preset_4_low_strengthFLOAT1.00-10–10
preset_4_positiveSTRING
preset_4_negativeSTRING
preset_5_nameSTRINGPreset 5
preset_5_high_loraCOMBO1 options: None
preset_5_high_strengthFLOAT1.00-10–10
preset_5_low_loraCOMBO1 options: None
preset_5_low_strengthFLOAT1.00-10–10
preset_5_positiveSTRING
preset_5_negativeSTRING
preset_6_nameSTRINGPreset 6
preset_6_high_loraCOMBO1 options: None
preset_6_high_strengthFLOAT1.00-10–10
preset_6_low_loraCOMBO1 options: None
preset_6_low_strengthFLOAT1.00-10–10
preset_6_positiveSTRING
preset_6_negativeSTRING
preset_7_nameSTRINGPreset 7
preset_7_high_loraCOMBO1 options: None
preset_7_high_strengthFLOAT1.00-10–10
preset_7_low_loraCOMBO1 options: None
preset_7_low_strengthFLOAT1.00-10–10
preset_7_positiveSTRING
preset_7_negativeSTRING
preset_8_nameSTRINGPreset 8
preset_8_high_loraCOMBO1 options: None
preset_8_high_strengthFLOAT1.00-10–10
preset_8_low_loraCOMBO1 options: None
preset_8_low_strengthFLOAT1.00-10–10
preset_8_positiveSTRING
preset_8_negativeSTRING
preset_9_nameSTRINGPreset 9
preset_9_high_loraCOMBO1 options: None
preset_9_high_strengthFLOAT1.00-10–10
preset_9_low_loraCOMBO1 options: None
preset_9_low_strengthFLOAT1.00-10–10
preset_9_positiveSTRING
preset_9_negativeSTRING
model_lowoptMODEL

Outputs (6)

NameTypeDescription
high_modelMODEL
low_modelMODEL
positiveCONDITIONING
negativeCONDITIONING
selected_indexINT
selected_nameSTRING