Nodes/comfyui_AcademiaSD/Academia Switch ยท Models ๐Ÿงฉ
ComfyUI Node

Academia Switch ยท Models ๐Ÿงฉ

Repoint every loader in your workflow with one click

By AcademiaSDยทCreated about a year agoยทUpdated a day agoยท 76
Academia Switch ยท Models ๐Ÿงฉ
    • mode_name
    • mode_index
    โ—„switch_data{}โ–บ

    Say your workflow has a checkpoint loader, three LoRA loaders and a VAE, and switching "styles" means re-pointing all five every time. You could keep a Fast Switch ยท Models node per loader - that's the two-slot approach. Academia Switch ยท Models is the other philosophy: instead of owning its own slots, it rewrites the widgets of loaders you already have on the canvas. Add a row for the checkpoint loader's ckpt_name, a row for each lora_name, and one click on a mode re-points the whole row. No cables, no duplicate loader chains, nothing gets deleted.

    How it works

    A mode is just a column of saved values. Each row names a target - a specific node in the graph plus one of its widgets - and stores a value for every mode. Click + Add model and you get a picker of candidate widgets across the current graph: model-name combos (things ending in .safetensors, .ckpt, .ggufโ€ฆ) float to the top because that's what you want 95% of the time, but it'll happily target a numeric strength slider, a text field, even a boolean toggle. It deliberately ignores buttons, hidden widgets, and other switch nodes so you can't point a switch at itself.

    When you apply a mode, the node writes each stored value into its target widget and fires the widget's callback - that last part matters, because many loaders refresh their other dropdowns in response, so dependent combos stay consistent. It loads nothing on its own; it just tells the loaders already wired into your graph what to show. That's why it works for checkpoints, LoRAs, text encoders, or any combo, with zero ComfyUI type juggling.

    The ๐Ÿ”— sync dropdown is the killer feature: set it to auto (or pick a specific Academia Switch ยท Groups node) and this node mirrors that node's modes and follows its active mode. Now one click on the Groups matrix flips both group bypass states and all your loader selections together.

    Inputs and outputs

    As with its sibling, switch_data is the serialized state widget you don't hand-edit. The two outputs are genuinely useful for the same reason as the Groups node - a mode is a thing you might want to react to:

    • mode_name (STRING) - the active mode's name
    • mode_index (INT) - the active mode's position in the list

    Setup flow

    Add the node, hit + Add model, pick a loader and its widget, then - this is the part people miss - set the value for each mode, or set the canvas up how you want one mode to look and press ๐Ÿ“ธ Capture to record the current values into it. Repeat for mode B, and you're done: applying a mode rewrites everything it has a row for.

    Install and gotchas

    All four switch nodes share one pack, comfyui_AcademiaSD. Install via ComfyUI Manager ("Academia SD") or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/AcademiaSD/comfyui_AcademiaSD
    

    Restart and hard-refresh the browser. No pip dependencies or model downloads involved.

    Two ways it bites. First, rows reference target nodes by id and widget name, so delete a loader after adding its row and the mode just logs "target(s) missing" and skips it - prune stale rows. Second, it captures what you tell it to: if you edit a loader by hand, the change isn't tracked until you re-capture that mode. Keep the habit of hitting Capture after you settle on a look, and the node stays honest about what each mode means.

    CategoryAcademiaSD/Switch

    Inputs (1)

    NameTypeDefaultDescription
    switch_dataSTRING{}Serialized state of the switch. Managed by the node UI.

    Outputs (2)

    NameTypeDescription
    mode_nameSTRINGโ€”
    mode_indexINTโ€”