Sigmaboy Turbo
Nine hand-tuned sigmas for your 8-step Qwen-Image run
- sigmas
The problem it's aimed at
You're running Qwen-Image 2.1 with a Turbo LoRA at eight steps and CFG 1.0. Good - you've given the model the two things distillation cares about: the step count it was trained for, and guidance baked into the weights so CFG can sit at 1.0. What's left is the noise schedule, and stock ComfyUI hands you the same generic presets it hands everything else. Distilled models are trained against a specific spacing of noise levels, so a scheduler that redistributes denoising effort differently is feeding the model noise levels it never saw. On a flow-matching model like Qwen-Image it usually doesn't explode; it just goes soft - texture to mush, geometry half-resolved.
The pitch is narrow: stop picking a scheduler from a dropdown and use a curve someone tuned by eye on exactly that model. One slider, three hardcoded profiles.
Honest framing: single author, October 2026, no discussion footprint yet. Third-party sigma curves are where sampler tuning happens in 2026 - same genre as RES4LYF's beta57 - but these are baked in and narrow. A promising starting point, not a settled default.
How it works: nine numbers and a straight-line blend
Three fixed sigma arrays live in the Python source; here are two, straight from the file:
BASE: 1.0, 0.9995, 0.9974, 0.9899, 0.9669, 0.9048, 0.7509, 0.4043, 0.0
HARD: 1.0, 0.9970, 0.9845, 0.9420, 0.8540, 0.6900, 0.3800, 0.0800, 0.0
Nine values mean eight steps plus the terminal zero that ends every ComfyUI schedule. The interesting column is the second to last: BASE walks into the final step at sigma 0.4043, HARD arrives at 0.08. That's the whole difference. HARD removes much more noise per step early, commits to composition early, then uses the tail for detail; BASE keeps correcting structure later. Turn the slider up and you're telling the model to make up its mind sooner.
The aggression widget blends linearly across 1.00–3.00: 1.0 is BASE exactly, 3.0 is HARD exactly. A third SOFT profile and a below-1.0 branch exist in the source, but the widget floor is 1.0, so you can't reach them - the README's "interpolates between three tuned sigma profiles" is, in your hands, base to hard.
The two controls and the one output
aggression is the only thing you set. Leave it at 1.0 first, compare against simple, then walk it up in 0.1 steps. Most of the useful range sits around 1.1–1.6; 3.0 is a different, harder-looking image, not a better one. node_id_hidden is frontend bookkeeping - it carries the node's own id so the backend can push a status event back to the UI. Ignore it.
The output is a single sigmas (SIGMAS). It goes into anything with a SIGMAS socket: SamplerCustom, SamplerCustomAdvanced, or as a drop-in replacement for BasicScheduler in a graph you already have. KSampler does not accept SIGMAS - if your sampler only has steps and scheduler dropdowns, this node can never affect it. That's the number one "I installed it and nothing happened" moment.
Because the schedule carries eight steps, its length is the step count - you get eight whatever the sampler's steps box says. Which matches the README's recommendation: Euler Ancestral, eight steps, CFG 1.0.
Install
ComfyUI Manager, search Sigmaboy (that's the registered display name), or by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/Rimor-dev/ComfyUI-Sigmaboy
Then restart. No requirements.txt, dependencies = [] in the pyproject - the only imports are torch, numpy and comfy_api.latest, all already present. Bring Qwen-Image 2.1 and the Turbo LoRA yourself; the bundled workflow also needs Comfyroll's CR Prompt Text and a Rimor_PreviewNode from another Rimor pack, so expect missing-node warnings.
Where it bites
Red IMPORT FAILED box on startup. It's written against the newer V3 node API (comfy_api.latest); on an older ComfyUI that import fails and the pack won't load. Update ComfyUI.
The slider didn't render, so you get a plain number widget. The custom slider is injected by web/sigmaboy.js; a stale frontend cache is the usual culprit - hard-refresh (Ctrl+F5) and restart.
You can't tell if it did anything. It prints the nine sigmas in green every run - check that line, then rerun the same seed with simple and compare.
3.0 made it worse. Expected - at full aggression the last step starts at sigma 0.08, so there's little left to correct with. Back the slider off.
"Tested on Krea2 Turbo / Flux2 Klein / Z-Image Turbo." The author's words; the curves were plainly tuned around Qwen-Image first. On another model, start at 1.0 and A/B it before you trust it.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| aggression | FLOAT | 1.001–3 | 1.0 = base profile. >1.0 more aggressive. |
| node_id_hidden | STRING | 0 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| sigmas | SIGMAS | — |