Saya Hires Trio Router Shared Prompt RESCUE
One conditioning, five models, four hires stages — pick the combo
- positive
- negative
- main_model
- main_vae
- dual_sampling_model
- dual_sampling_vae
- support1_model
- support1_vae
- usdu1_model
- usdu1_vae
- usdu2_model
- usdu2_vae
- positive
- negative
- base_model
- base_vae
- mid_model
- mid_vae
- final_model
- final_vae
- last_model
- last_vae
This node answers a very specific "rescue" problem in the author's multi-pass workflows: you've got one shared positive/negative conditioning, and you've got a pile of models and VAEs loaded into the graph - but each of your four hires stages wants a different one of them. Rather than hand-wiring four KSamplers to four different model sources and praying you grabbed the right wire, this router takes the pool in once and lets you pick which model/VAE combo each hires stage runs, with the same conditioning passed to all of them.
The "Trio" in the name is loose - it actually routes across up to five model sources. The schema asks you to connect:
main_model/main_vaedual_sampling_model/dual_sampling_vaesupport1_model/support1_vaeusdu1_model/usdu1_vae(upscale-denoise-upscale slots)usdu2_model/usdu2_vae
plus your shared positive and negative conditionings.
What you actually set
Below those sockets sit four stage blocks - base, mid, final, and last hires (rendered as ━━ BASE HIRES ━━ style separator labels in the UI). Each block has two dropdowns:
*_source- which of the five models runs that stage (mainby default). Options:main,dual_sampling,support1,usdu1,usdu2.*_vae- which VAE decodes it. Defaultnonemeans "use the same VAE as the source model." Otherwise you can force one of the other slots' VAEs, or pick a standalone custom VAE.
There are also three custom_vae_1/2/3 dropdowns at the top, listing VAEs from your models/vae folder. You pick a custom VAE there, then reference it from any stage's *_vae dropdown. Note that in saved workflow files these choices are URL-encoded (AAA%20Anime%20VAE%20SDXL%20v2.safetensors instead of spaces) - the node resolves both forms, but don't be alarmed if a JSON file looks like that.
If a requested model or VAE can't be resolved, it falls back to the main model/VAE rather than hard-failing - which is a lifesaver mid-hires, though it does mean a typo can silently sample with the wrong model. If your output suddenly doesn't match expectations, check whether you actually selected the source you meant.
Outputs
Ten outputs: your positive and negative passed straight through, then for each stage a *_model and *_vae pair - base_model/base_vae, mid_model/mid_vae, final_model/final_vae, last_model/last_vae. Wire each pair into that stage's sampler (and the shared conditioning into all of them). Nothing is loaded or patched here; it's pure routing, so it's cheap and safe to place anywhere.
This one is deep in author-specific territory - the five-source pool, the "usdu" slots, four sequential hires stages - so if your workflow doesn't resemble the author's, the node's value drops fast. But if you're building a multi-stage hires pass and want the model/VAE selection for four stages in one visible place instead of four separate loaders, this is exactly the tidy-up you're looking for.
Install: ComfyUI Manager search saya-comfy-couple-plus, or clone https://github.com/alphaziod/saya-comfy-couple-plus into custom_nodes and restart. numpy and Pillow are the only deps; nothing to download. WIP pack - back up workflows before updating, and expect the occasional port reshuffle.
Inputs (28)
| Name | Type | Default | Description |
|---|---|---|---|
| positive | CONDITIONING | — | |
| negative | CONDITIONING | — | |
| main_model | MODEL | — | |
| main_vae | VAE | — | |
| dual_sampling_model | MODEL | — | |
| dual_sampling_vae | VAE | — | |
| support1_model | MODEL | — | |
| support1_vae | VAE | — | |
| usdu1_model | MODEL | — | |
| usdu1_vae | VAE | — | |
| usdu2_model | MODEL | — | |
| usdu2_vae | VAE | — | |
| ━━ CUSTOM VAE ━━ | STRING | ━━ CUSTOM VAE ━━ | — |
| custom_vae_1 | COMBO | 3 options: AAA%20Anime%20VAE%20SDXL%20v2.safetensors, Dark%20VAE%20SDXL%20Weak.safetensors, crystalVAESDXL_vaeV3.safetensors | |
| custom_vae_2 | COMBO | 3 options: AAA%20Anime%20VAE%20SDXL%20v2.safetensors, Dark%20VAE%20SDXL%20Weak.safetensors, crystalVAESDXL_vaeV3.safetensors | |
| custom_vae_3 | COMBO | 3 options: AAA%20Anime%20VAE%20SDXL%20v2.safetensors, Dark%20VAE%20SDXL%20Weak.safetensors, crystalVAESDXL_vaeV3.safetensors | |
| ━━ BASE HIRES ━━ | STRING | ━━ BASE HIRES ━━ | — |
| base_source | COMBO | main | 5 options: main, dual_sampling, support1, usdu1, usdu2 |
| base_vae | COMBO | none | 9 options: none, main, dual_sampling, support1, usdu1, usdu2, +3 |
| ━━ MID HIRES ━━ | STRING | ━━ MID HIRES ━━ | — |
| mid_source | COMBO | main | 5 options: main, dual_sampling, support1, usdu1, usdu2 |
| mid_vae | COMBO | none | 9 options: none, main, dual_sampling, support1, usdu1, usdu2, +3 |
| ━━ FINAL HIRES ━━ | STRING | ━━ FINAL HIRES ━━ | — |
| final_source | COMBO | main | 5 options: main, dual_sampling, support1, usdu1, usdu2 |
| final_vae | COMBO | none | 9 options: none, main, dual_sampling, support1, usdu1, usdu2, +3 |
| ━━ LAST HIRES ━━ | STRING | ━━ LAST HIRES ━━ | — |
| last_source | COMBO | main | 5 options: main, dual_sampling, support1, usdu1, usdu2 |
| last_vae | COMBO | none | 9 options: none, main, dual_sampling, support1, usdu1, usdu2, +3 |
Outputs (10)
| Name | Type | Description |
|---|---|---|
| positive | CONDITIONING | — |
| negative | CONDITIONING | — |
| base_model | MODEL | — |
| base_vae | VAE | — |
| mid_model | MODEL | — |
| mid_vae | VAE | — |
| final_model | MODEL | — |
| final_vae | VAE | — |
| last_model | MODEL | — |
| last_vae | VAE | — |