Loom Sigmas Out
Carry your sampling schedule through the graph
- loom
- LOOM
- SIGMAS
- exists
When people talk about a sampling "schedule," this is the wire that carries it. Loom Sigmas Out pulls a SIGMAS object out of a c4f-wire-loom bundle. In ComfyUI's advanced sampling, sigmas are the array of noise levels a sampler descends through step by step - generated by nodes like SplitSigmas or the scheduler side of the advanced sampler chain. It's the object that encodes how many steps you take and how aggressively each one denoises, which makes it exactly the kind of thing you want defined in one place and reused in several.
That's the classic loom pattern, and sigmas fit it beautifully: build the schedule once, stash it in the bundle, and every branch of a multi-pass workflow - base pass, refiner, upscale stage - reads the same SIGMAS instead of each branch re-deriving its own. The README's whole pitch for the pack is subgraphs that modify a stream and pass it along; this node is how a sampler subgraph asks the loom "what's the schedule?" and gets one consistent answer.
How it works
Identical mechanics to the other typed Out nodes: a labeled lookup into the loom dict, with the type prefix applied for you. Empty label reads SIGMAS; label = "refiner" reads SIGMAS_refiner.
loom(required) - the loom to pull from.label(optional, default"") - blank for the default schedule, or name it if you're carrying a base schedule and a separate refiner schedule.- Outputs:
LOOM(passthrough),SIGMAS(the schedule, orNoneif missing),exists(boolean).
exists matters more than it looks. If the loom doesn't hold SIGMAS, you get None and False back with no error - and the failure only detonates later when the sampler tries to walk a None schedule. Route exists into a default and you've turned a subtle break into a visible one.
The gotchas
The house rules of the pack apply. Don't write SIGMAS in the label - the prefix is added automatically, so that would look up SIGMAS_SIGMAS and miss. Use the same short label you gave the matching Loom Sigmas In. And the label is snapshotted when the wire is first attached; rename things after and the Out node won't catch up until you re-attach.
One thing to keep straight: SIGMAS is a specific ComfyUI object type, not a number. If you're used to thinking of steps as a single integer, that's the KSampler world; this is the advanced-sampling world where the schedule is a first-class object that flows around. The loom treats it like any other wire, which is the point - you stop wiring schedules all over the graph.
Install
The pack ships no requirements.txt, no model downloads, no API keys - it's a frontend extension over pure Python:
cd ComfyUI/custom_nodes
git clone https://github.com/Codes4Fun/c4f-wire-loom
then restart ComfyUI, or install c4f-wire-loom via ComfyUI Manager.
Troubleshooting
Noneoutput - label mismatch (mind the automaticSIGMAS_prefix) or no matching Loom Sigmas In feeding the loom.existswill tell you.- Two schedules, same name - that's what
labelis for. A second schedule without a distinct label just overwrites the first in the loom. - Nodes 2.0 drag quirk - the README warns that on Nodes 2.0, dragging a collapsed loom node by its arrow can also toggle collapse; the author's workaround is in the frontend code, so keep the pack updated.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| loom | LOOM | — | |
| labelopt | STRING | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| LOOM | LOOM | — |
| SIGMAS | SIGMAS | — |
| exists | BOOLEAN | — |