Split sigmas at timestep
The MoE swap point as a schedule primitive
- sigmas
- model
- high noise sigmas
- low noise sigmas
- split at
This is the plumbing version of what the Wan MoE KSampler does inside its own box. That node is an all-in-one, it swaps Wan 2.2's high-noise and low-noise experts for you and never shows its work. SplitSigmasAtT is for people who don't want the all-in-one, who build their own graph out of SamplerCustom / SamplerCustomAdvanced and want to keep full control over solvers, guiders, and everything else. It does one small, precise job: it cuts a sigma schedule in two at the timestep where the high-noise expert should hand off to the low-noise one.
Why this exists
Wan 2.2 A14B is a two-expert Mixture of Experts, and the correct place to switch from the composition expert to the detail expert is where the signal-to-noise ratio hits 1:1, a diffusion timestep (0.875 for T2V, 0.900 for I2V), not a step number. In the custom-sampling world you normally get a single sigma schedule out of BasicScheduler, feed it to one sampler, and that's that. To run the two experts properly you need that schedule broken into a "high-noise part" and a "low-noise part" at the right point. Eyeballing the split by index is exactly the guessing game the whole pack exists to kill. This node does the cut for you, at the timestep, correctly.
It lives in the same family as ComfyUI's built-in SplitSigmas and SplitSigmasDenoise (category sampling/custom_sampling/schedulers), but instead of splitting at a step index or a denoise fraction, it splits at a timestep, which is the unit that actually matters for the MoE handoff.
How it fits in a workflow
The shape is: BasicScheduler produces your SIGMAS → SplitSigmasAtT cuts them into two → each half drives its own SamplerCustomAdvanced, the high-noise sigmas with the high-noise model, the low-noise sigmas with the low-noise model, chained so the second continues the first. That's the manual, fully-controllable equivalent of the MoE KSampler, and it's the setup you want if you're reaching for res4lyf solvers, custom guiders, or any other custom-sampling machinery the all-in-one node doesn't expose.
The inputs and outputs that matter
sigmas(SIGMAS) - the full schedule you want to split, straight from whatever scheduler node you're using.boundary(default 0.875) - the swap timestep. 0.875 for Wan 2.2 T2V, 0.900 for I2V, same values as everywhere else in the pack.model(optional) - pass your model in and the node can map theboundarytimestep onto the actual sigma value for that model's noise schedule, which is what makes the cut land in the right place. It's optional, but wire it in, timestep-to-sigma mapping is model-dependent and you want it right.
Three outputs:
high noise sigmas- the first slice, feed this to the sampler runningmodel_high_noise.low noise sigmas- the second slice, feed this to the sampler runningmodel_low_noise.split at(INT) - the step index where the cut fell. This is genuinely useful on its own: it's the answer to "which step does the automatic swap actually happen on?" for your current steps/scheduler/shift combo. Drop a preview on it while you dial in a workflow.
How to install it
- ComfyUI Manager - search KSampler for Wan 2.2 MoE (the pack title), install, restart.
- Manual -
cd ComfyUI/custom_nodes && git clone https://github.com/stduhpf/ComfyUI-WanMoeKSampler, then restart ComfyUI.
No extra dependencies, no model downloads for the node itself, you bring the two Wan 2.2 experts. The repo ships example workflows, and honestly the fastest way to understand the split-and-two-samplers wiring is to open one rather than build it from a blank canvas.
Common issues & troubleshooting
The split lands in a weird place, or errors on the timestep. Wire the model input in. Without it the node can't convert your boundary timestep to the matching sigma for your specific model, and the cut can drift. This is the single most common thing to miss, because the input is optional and easy to leave dangling.
One half of the schedule is empty. That means the boundary fell outside your actual sigma range, usually a boundary that doesn't match the task (a T2V value on an I2V schedule, or vice versa) or a very low step count where the timestep maps before your first or after your last step. Check the split at output, if it reads 0 or your full step count, the cut collapsed to one side.
You wanted the simple life. If you're not doing anything custom with the sampling graph, you don't need this node at all, just use the Wan MoE KSampler and let it handle the split internally. SplitSigmasAtT is the tax you pay for full control, only pay it if you're using the control.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| boundary | FLOAT | 0.8750–1 | — |
| sigmas | SIGMAS | — | |
| modelopt | MODEL | Used to determine the model type. Assumes FLOW model by default if not provided |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| high noise sigmas | SIGMAS | — |
| low noise sigmas | SIGMAS | — |
| split at | INT | — |