Scheduler Selector (inspire) (Citron Image Saver)
The AYS and OSS schedules, selectable and recordable
- scheduler
- scheduler_name
If you run ComfyUI-Inspire-Pack's KSampler (inspire) - the one with the extra noise-schedule tricks bolted on - you already know its scheduler dropdown is longer than the stock one. This is that list, in a value node: sixteen entries, one selection, two outputs. The point is the same as the plain scheduler selector, except those non-core names were previously impossible to record honestly, because you had to type them into the save node by hand.
How it works
One input, scheduler, offering the nine standard schedules (simple, sgm_uniform, karras, exponential, ddim_uniform, beta, normal, linear_quadratic, kl_optimal) plus the Inspire additions:
AYS SDXL,AYS SD1,AYS SVD- "align your steps", a hand-tuned step schedule per model family rather than a formula.GITS[coeff=1.2]- the generalised implicit timestep schedule; the coefficient is baked into the name, which is a quirk you'll want to copy exactly.OSS FLUX,OSS Wan,OSS Chroma- optimal-step schedules aimed at those specific architectures.
Outputs are scheduler, a combo typed against that same sixteen-name list ("scheduler (ComfyUI + Inspire Pack Schedulers)"), and scheduler_name, a STRING for the save node's scheduler_name input.
Two honest caveats. The list is hardcoded in this pack - it does not check whether Inspire Pack is installed. So the dropdown happily offers OSS FLUX on a machine with no Inspire Pack, and if you wire that value into the stock KSampler, queueing fails validation with a "value not in list" error because core Comfy has never heard of it. These names are only meaningful fed into the Inspire megasampler. And the list is a snapshot: if the upstream pack adds a schedule, this dropdown won't show it until the Citron pack updates.
Why bother with a fixed list at all? Because it pairs the two places a schedule name has to be identical - the sampler and the metadata. On a real workflow, that matters more than it sounds: AYS SDXL versus karras is a decision you'll iterate on, and after four runs you want the file to say which one won. It also means you can convert the Inspire sampler's scheduler widget to an input and drive it from here, keeping the whole parameter set in one place.
If you're using Inspire for the AYS schedules specifically, the pairing that tends to work is AYS plus a low step count - the schedules are laid out for the step counts their authors tuned, so 12–20 steps is the zone. Try it against simple at the same count before assuming it's better.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/citronlegacy/ComfyUI-CitronNodes
# restart ComfyUI
The README still marks ComfyUI Manager support as "coming soon" and the repo's packaging metadata is placeholder, so clone manually. piexif is the only pip dependency; without it the pack fails to import wholesale:
pip install piexif
You also need ComfyUI-Inspire-Pack installed separately for the sampler that consumes these values. This node doesn't install it, check for it, or ship any of its code.
Common issues
- "Value not in list" when queueing. You're feeding an Inspire-only schedule into the stock KSampler. Use the Inspire sampler, or drop back to the plain scheduler selector.
- The schedule I set isn't what ran. The sampler's own widget is the one that matters. Convert it to an input and drive it from here, or you're running two lists again.
- A new Inspire schedule doesn't appear. Hardcoded list - update the Citron pack, and expect a lag behind upstream.
- Saved file records nothing for scheduler. The
scheduler_nameoutput isn't wired to the saver. The combo output alone won't update metadata.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| scheduler | COMBO | scheduler |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| scheduler | simple,sgm_uniform,karras,exponential,ddim_uniform,beta,normal,linear_quadratic,kl_optimal,AYS SDXL,AYS SD1,AYS SVD,GITS[coeff=1.2],OSS FLUX,OSS Wan,OSS Chroma | scheduler (ComfyUI + Inspire Pack Schedulers) |
| scheduler_name | STRING | scheduler name (STRING) |