AIHub Expose Scheduler
Same idea as the sampler expose, for the noise schedule — and it'll accept any string
- SCHEDULER
AIHub Expose Scheduler is the sibling of AIHubExposeSampler: it lets the external AIHub client pick the noise scheduler for your workflow, and its SCHEDULER output wires into the scheduler input of a KSampler. The dropdown ships with the standard nine - simple, sgm_uniform, karras, exponential, ddim_uniform, beta, normal, linear_quadratic, kl_optimal - and the tooltip adds a genuinely useful wrinkle: the default "can be any string."
That last bit is the difference that matters. The scheduler field is essentially open - a client isn't locked to the nine presets. If your workflow's client knows about a scheduler ComfyUI accepts that isn't in the list, it can send it and the node will happily pass it through. Practically, that means this node is more permissive than its sampler twin, and also slightly easier to trip over: an unknown string from a buggy client will flow downstream and only fail where the sampler actually parses it.
Everything else is the familiar expose pattern. An AIHub client (over the pack's websocket, port 8111) sends the value when it runs the workflow; in the bare web UI the node just holds its default. The inputs you'll actually touch:
- value - the default scheduler, ideally one your workflow is proven with.
karrasis the crowd-pleaser for SD-style models;sgm_uniformis what many modern checkpoints expect. - unaffected_by_model_scheduler - same "model defaults" logic as the sampler node. Exported models can carry a
default_scheduler, and the pack will substitute it when the user picks a model throughAIHubExposeModel. Check this box to make your exposed value stick regardless. - advanced - hide it under the client's advanced panel.
- id / label / tooltip / index - the standard plumbing.
The README's warning from the sampler node applies verbatim here too: "differences on how the different nodes treat SCHEDULER values can cause issues within WebUI but not during actual execution." A scheduler name that looks wrong in some web panel is usually fine on a real run - the thing to distrust is a value that isn't a real scheduler name at all.
Install & gotchas
ComfyUI Manager → search ComfyUI-aihub-workflow-exposer, or:
cd ComfyUI/custom_nodes
git clone https://github.com/otavanopisto/ComfyUI-aihub-workflow-exposer
then restart. No requirements.txt, no extra dependencies or model downloads - the pack runs on ComfyUI's bundled stack. Keep the ComfyUI/aihub/... folders and an AIHubWorkflowController with a unique id in the workflow.
One honest caveat: if your workflow never wants the scheduler touched, skip this node entirely - the model-defaults system will still apply a sane scheduler from the exported model config. Expose the scheduler only when the client genuinely needs to pick it. And if you're pairing it with AIHubExposeSampler, keep the two "unaffected" flags consistent; an "unaffected" scheduler riding on top of a model-driven sampler makes for confusing behavior you'll debug for an hour.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| id | STRING | scheduler | A unique custom id for this workflow. |
| label | STRING | Scheduler | This is the label that will appear in the field. |
| tooltip | STRING | An optional tooltip | |
| value | COMBO | The default value for the scheduler to use, can be any string | |
| advanced | BOOLEAN | false | If set to true, this option will be hidden under advanced options for this workflow. |
| index | INT | 0 | This value is used for sorting the input fields when displaying; lower values will appear first. |
| unaffected_by_model_scheduler | BOOLEAN | false | If set to true, this scheduler value will not be affected by the model's default scheduler |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| SCHEDULER | simple,sgm_uniform,karras,exponential,ddim_uniform,beta,normal,linear_quadratic,kl_optimal | — |