Academia Switch ยท Models ๐งฉ
Repoint every loader in your workflow with one click
- mode_name
- mode_index
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 namemode_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.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| switch_data | STRING | {} | Serialized state of the switch. Managed by the node UI. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| mode_name | STRING | โ |
| mode_index | INT | โ |