π§ TA Unified Model Switcher
One dropdown to switch models without rebuilding the workflow
- model_1
- clip_1
- vae_1
- model_name_1
- model_2
- clip_2
- vae_2
- model_name_2
- model_3
- clip_3
- vae_3
- model_name_3
- model
- clip
- vae
- active_model
The fastest way to break a shared workflow is to tell someone "replace the checkpoint node with a different one." TA Unified Model Switcher exists so nobody has to: you build the graph once with three model slots, and a single dropdown picks which slot is live. Everything else - the sampler, the text encoders, the save nodes - stays wired to the switcher's outputs and never changes.
The model_choice dropdown (edited via the browser UI at http://localhost:8188/ta_model_choices/ui) lists the configured options - the shipped defaults read "Z-Image Diffusion", "Z-Image GGUF", "Qwen Diffusion", "FLUX Diffusion", and "Checkpoint", which is a pretty honest map of the modern model menu. Each choice maps to one of three input slots, and each slot takes the standard four wires: model, clip, vae, and model_name (the pack's TA_MODEL_NAME string type). Outputs mirror those - model, clip, vae, and active_model - so whatever slot you pick flows out on the same four wires.
The mechanism is where it stops being a simple switch and starts being clever: lazy evaluation. check_lazy_status tells ComfyUI which inputs the active slot actually needs, and ComfyUI only executes the loaders behind those inputs. Switch from slot 1 (Z-Image diffusion) to slot 2 (Z-Image GGUF) and the slot-1 loader is skipped entirely - no wasted model loads, no VRAM juggling of models you're not using. That's the difference between a switcher and a three-way merge that loads everything at once.
Why this pattern matters for real workflows: you get one graph that can generate with a distilled turbo model when you're iterating fast and a bigger model when you're after final quality - just flip the dropdown. The active_model output feeds the pack's filename generator, so your output files name themselves after whatever model the switcher is currently routing. It pairs naturally with the pack's preset system: model presets define what each slot loads, and the switcher decides which slot is live.
Install. No Python dependencies; pack install:
cd ComfyUI/custom_nodes
git clone https://github.com/tmode-1960/TA-ComfyUI-Nodes-Pack
or ComfyUI Manager (search "TA ComfyUI Nodes Pack"), restart, under TA Nodes/loaders. The choice editor lives at http://localhost:8188/ta_model_choices/ui.
Gotchas. Each slot is just a set of input wires - you still need loaders behind them, and if slot 2's GGUF choice requires ComfyUI-GGUF and you haven't installed it, switching to slot 2 errors even though slot 1 works fine. The lazy-evaluation skip only applies to inputs that are genuinely unneeded, so wire each slot to its own loader and let the switcher prune. And the v2.x breaking change: TA v1 workflows must be rebuilt before any of this will load.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| model_choice | COMBO | Z-Image Diffusion | Editor: http://localhost:8188/ta_model_choices/ui |
| model_1opt | MODEL | β | |
| clip_1opt | CLIP | β | |
| vae_1opt | VAE | β | |
| model_name_1opt | TA_MODEL_NAME | β | |
| model_2opt | MODEL | β | |
| clip_2opt | CLIP | β | |
| vae_2opt | VAE | β | |
| model_name_2opt | TA_MODEL_NAME | β | |
| model_3opt | MODEL | β | |
| clip_3opt | CLIP | β | |
| vae_3opt | VAE | β | |
| model_name_3opt | TA_MODEL_NAME | β |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| model | MODEL | β |
| clip | CLIP | β |
| vae | VAE | β |
| active_model | TA_MODEL_NAME | β |