| model | MODEL | | β |
| positive | CONDITIONING | | β |
| negative | CONDITIONING | | β |
| latent_image | LATENT | | β |
| stage_a | KINBURG_SAMPLER_CFG | | First stage β a 'Sampler Settings' bundle. Wire a second one into 'stage_b' for two-stage sampling (a chain of Sampler Settings also works and is flattened into stages, leftβright). NOTE: 'seed_mode' / 'seed_step' on the Settings node are Ouroboros-loop dials and are ignored here β only 'seed' is used. |
| handoff | COMBO | continuous | How stage 2+ picks up from stage 1.
β’ continuous (recommended) β ONE schedule is built and each stage runs a slice of it; later stages add NO fresh noise and resume exactly where the previous one stopped. The run is one honest traversal of one noise trajectory with different samplers/cfg/eta per segment. The shared curve takes its scheduler + denoise from STAGE A (a later stage's own denoise is ignored; a different scheduler is spliced in β see the report).
β’ restart β the classic 'two KSamplers' pattern: every stage builds its own schedule and adds its own noise, so stage 2+ NEEDS denoise<1 or it will destroy stage 1's image. A different effect (img2img refine), not a better or worse one. |
| step_split | COMBO | stage steps | WHERE the boundary between the stages falls. The last three are the same decision in different units β pick whichever unit you're thinking in.
β’ stage steps β each stage runs exactly the 'steps' it declares; the curve is their sum (unless total_steps overrides it).
β’ at step β cut total_steps at 'handoff_step': stage 1 gets that many steps, the rest gets the remainder. Same unit as above, but the boundary is on THIS node, so you can sweep it without editing the Sampler Settings.
β’ at percent β the same cut as a percentage OF THE STEPS: 60% of 30 steps β 18 / 12. (It divides steps, not the sigma range.)
β’ at sigma β the cut lands where the NOISE LEVEL crosses 'handoff_sigma'. Use it when the stages run different schedulers, or to keep the boundary in the same place as you change the step count: step numbers aren't comparable across schedules, noise levels are.
The last three ignore the 'steps' set inside the Sampler Settings nodes. |
| total_steps | INT | 00β10000 | Length of the shared schedule. 0 = auto (the sum of the stages' own 'steps').
In the 'stage steps' split, setting this LONGER than the sum leaves the tail of the curve unwalked, so the result keeps residual noise on purpose (reported). Shorter than the sum β the last stages get clipped. |
| handoff_step | INT | 00β10000 | 'at step' split only: how many steps the FIRST stage runs; everything left goes to the rest. 0 = halfway. Clamped so both sides always get at least one step. |
| split_percent | FLOAT | 600β100 | 'at percent' split only: the share OF THE STEPS given to the FIRST stage (60 β 18/12 out of 30). Both sides always get at least one step. |
| handoff_sigma | FLOAT | 0.500β1000 | 'at sigma' split only: hand over to the next stage once the noise level has fallen to this sigma.
The scale is MODEL-dependent: flow-matching models (Flux / SD3 / Krea) run 1.0 β 0, so the useful range is 0..1 and the 0.5 default sits mid-trajectory; SD / SDXL run from about 14.6, where you'd want single digits instead. The report prints the curve's actual range and the sigma the split landed on, so one run tells you the scale you're working in. |
| stage_bopt | KINBURG_SAMPLER_CFG | | Second stage β another 'Sampler Settings' bundle. Leave empty to run stage A alone (a plain single-pass sampler). |
| model_negativeopt | MODEL | | Second model for the UNCONDITIONAL (negative) pass β for checkpoints shipped as a model + uncond-model pair, such as Ideogram. The dual-model guider is built PER STAGE from that stage's conditioning and cfg, so 'positive_b' and per-stage cfg keep working (wiring a ready-made 'Dual Model CFG Guider' into 'guider' instead would freeze both). NOTE: at cfg 1.0 the guider skips the unconditional pass entirely and this model does nothing β use a cfg above 1. |
| guideropt | GUIDER | | Escape hatch for ANY custom guider (Dual CFG, CFG++, a hand-rolled oneβ¦). It carries its own model, conditioning and cfg, so this node's 'positive' / 'negative' / 'positive_b' and every stage's cfg are IGNORED while it's wired (the report says so). The sigma curve is built from the guider's own model. Takes precedence over 'model_negative'. For the common Ideogram case use 'model_negative' instead β it keeps the per-stage prompts working. |
| sigmasopt | SIGMAS | | External noise schedule, replacing the one this node builds. 'total_steps' and every stage's scheduler and denoise are then IGNORED (reported) β the curve is given. Splitting still works exactly the same: all four 'step_split' modes just slice the supplied curve, so you can pair any scheduler node with staged sampling. |
| model_bopt | MODEL | | Optional model for stage 2+ β a different LoRA stack or a refiner. It must share the noise schedule of the main model (same family): in 'continuous' handoff the shared curve is always built from the MAIN model, since that's the space the in-flight latent's noise level lives in. |
| positive_bopt | CONDITIONING | | Optional positive conditioning for stage 2+ β e.g. polish on a shorter prompt, or without the style tokens. Falls back to 'positive'. |
| negative_bopt | CONDITIONING | | Optional negative conditioning for stage 2+. Falls back to 'negative'. |
| verboseopt | BOOLEAN | true | Print the split report (curve, per-stage step ranges and sigma boundaries, warnings) to the console. The same text is always on the 'report' output. |