Context Switch Big (rgthree)
Context Switch Big (rgthree)
- CONTEXT
- MODEL
- CLIP
- VAE
- POSITIVE
- NEGATIVE
- LATENT
- IMAGE
- SEED
- STEPS
- STEP_REFINER
- CFG
- CKPT_NAME
- SAMPLER
- SCHEDULER
- CLIP_WIDTH
- CLIP_HEIGHT
- TEXT_POS_G
- TEXT_POS_L
- TEXT_NEG_G
- TEXT_NEG_L
- MASK
- CONTROL_NET
Context Switch Big is the branching switch for Context Big bundles. Same behavior as the regular Context Switch - feed it several context wires and it passes along the first one that isn't empty, so you can fork a workflow with a mute instead of a rewire - but it carries the extended context, the one with sampler settings, SDXL text pairs, a mask, and a control net alongside the basics. If your workflow rides on Context Big wires and you need to branch between two of them, this is the matching switch.
Why you'd reach for it
If you've built a complex graph on Context Big - threading model, clip, vae, conditioning, steps, cfg, sampler, scheduler, SDXL text, mask, and control net all down one wire - then you want a switch that speaks that whole vocabulary. The plain Context Switch would only carry the standard fields through; Context Switch Big preserves every extra field of the big bundle across the branch. So a base-vs-upscale fork, or a "generate cheap preview then optionally run the expensive pass" toggle, keeps all your settings intact through the switch.
And the key virtue is the same as every rgthree switch: it picks by emptiness, not by index. A selector-style switch runs every input and discards the losers, burning compute. This one takes the first non-empty context and lets you make the others empty by muting - so the branches you didn't take never execute. On a workflow heavy enough to be using Context Big in the first place, that saved GPU time is the whole reason to bother.
The muting mechanic (and mute vs. bypass)
Switches here are driven by muting, and muting in ComfyUI runs backward: the engine starts at the output nodes and walks back, pulling in only what feeds them. So you don't stop a branch by muting its front - you make its output disappear, by muting toward the output end, and the switch falls through to the next live input. rgthree's Fast Muter turns this into a one-click dashboard.
One trap worth stating outright: mute, don't bypass. A muted node outputs None, which is the empty context the switch skips. A bypassed node passes its input straight through - handing the switch a real, non-null context that it will then pick. If the switch keeps landing on a branch you meant to disable, you almost certainly bypassed it when you needed to mute it.
Inputs and outputs
The inputs are dynamic - connect several Context Big wires in order of preference and the node grows slots as needed, so there's no fixed named-input list.
The output is the full big-context spread: a CONTEXT wire (RGTHREE_CONTEXT) plus every field exploded - MODEL, CLIP, VAE, POSITIVE, NEGATIVE, LATENT, IMAGE, SEED, STEPS, STEP_REFINER, CFG, CKPT_NAME, SAMPLER, SCHEDULER, CLIP_WIDTH, CLIP_HEIGHT, the four SDXL TEXT fields, MASK, and CONTROL_NET. Carry the CONTEXT wire onward, or tap any single field directly off the switch.
Installing it
Context Switch Big ships in rgthree-comfy. Install via ComfyUI Manager (search rgthree's ComfyUI Nodes) or clone it:
cd ComfyUI/custom_nodes
git clone https://github.com/rgthree/rgthree-comfy.git
Restart ComfyUI. No models, no heavy dependencies - the pack is graph and UI code.
Common issues
Beyond the mute-not-bypass trap above, the usual one is muting the wrong end and getting an error instead of a clean skip - mute toward the output side of the branch you want gone.
Also: use Context Switch Big only when you're actually carrying big-context fields. If your bundles are just the basics, the plain Context Switch is less cluttered and does the same branching. They're interoperable, so there's no cost to picking the smaller one when it fits.
And the pack-wide caveat: if the node renders wrong, check whether ComfyUI's Nodes 2.0 frontend is enabled. The Vue rewrite broke several rgthree nodes and the standing workaround is to keep it off.
Inputs (0)
No inputs
Outputs (23)
| Name | Type | Description |
|---|---|---|
| CONTEXT | RGTHREE_CONTEXT | — |
| MODEL | MODEL | — |
| CLIP | CLIP | — |
| VAE | VAE | — |
| POSITIVE | CONDITIONING | — |
| NEGATIVE | CONDITIONING | — |
| LATENT | LATENT | — |
| IMAGE | IMAGE | — |
| SEED | INT | — |
| STEPS | INT | — |
| STEP_REFINER | INT | — |
| CFG | FLOAT | — |
| CKPT_NAME | — | |
| SAMPLER | euler,euler_cfg_pp,euler_ancestral,euler_ancestral_cfg_pp,heun,heunpp2,exp_heun_2_x0,exp_heun_2_x0_sde,dpm_2,dpm_2_ancestral,lms,dpm_fast,dpm_adaptive,dpmpp_2s_ancestral,dpmpp_2s_ancestral_cfg_pp,dpmpp_sde,dpmpp_sde_gpu,dpmpp_2m,dpmpp_2m_cfg_pp,dpmpp_2m_sde,dpmpp_2m_sde_gpu,dpmpp_2m_sde_heun,dpmpp_2m_sde_heun_gpu,dpmpp_3m_sde,dpmpp_3m_sde_gpu,ddpm,lcm,ipndm,ipndm_v,deis,res_multistep,res_multistep_cfg_pp,res_multistep_ancestral,res_multistep_ancestral_cfg_pp,gradient_estimation,gradient_estimation_cfg_pp,er_sde,seeds_2,seeds_3,sa_solver,sa_solver_pece,ddim,uni_pc,uni_pc_bh2 | — |
| SCHEDULER | simple,sgm_uniform,karras,exponential,ddim_uniform,beta,normal,linear_quadratic,kl_optimal | — |
| CLIP_WIDTH | INT | — |
| CLIP_HEIGHT | INT | — |
| TEXT_POS_G | STRING | — |
| TEXT_POS_L | STRING | — |
| TEXT_NEG_G | STRING | — |
| TEXT_NEG_L | STRING | — |
| MASK | MASK | — |
| CONTROL_NET | CONTROL_NET | — |