Loom Sampler Out
For when your sampler is an object, not a setting
- loom
- LOOM
- SAMPLER
- exists
If you're reaching for this node, you're past the default KSampler and into advanced sampling territory. Loom Sampler Out pulls a SAMPLER object out of a c4f-wire-loom bundle. The SAMPLER type is the one produced by nodes like SamplerCustomAdvanced - it's not a sampler name like "euler" or "dpmpp_2m", it's an actual sampler object you can pass around, reuse, and chain. When you're building a refiner pipeline or a custom sampling loop, you want that object available wherever the sampler subgraph needs it, and the loom is a clean way to ship it around without a hundred wires crossing the canvas.
This is squarely a "bundle the whole sampler subgraph and reuse it" node. The pack's README shows exactly that pattern: one prompt subgraph feeding multiple model/sampler subgraphs, with the sampling configuration carried inside a loom so each subgraph just reads what it needs. If your workflow has one sampler feeding several model branches - turbo pass, refiner, upscale stage - stashing the SAMPLER in the loom means you configure it once and every branch agrees on what sampling is.
How it works
It's the same dictionary lookup as every typed Loom Out, with the type prefix handled for you. Empty label looks up SAMPLER; label = "refiner" looks up SAMPLER_refiner.
loom(required) - the loom to read from.label(optional, default"") - leave blank for the default sampler, name it if you're juggling more than one.- Outputs:
LOOM(passthrough),SAMPLER(the object, orNoneif missing),exists(boolean).
The exists output is worth wiring somewhere when the sampler's optional - if the loom doesn't hold a SAMPLER yet, you get None and a False flag instead of a silent crash three nodes later.
The gotchas
Same family as the other typed Out nodes. Don't put the type name in the label - label = "SAMPLER" looks up SAMPLER_SAMPLER and returns None. Keep it short and matching what you put on the Loom Sampler In side. And the label doesn't live-update: rename the wire after attaching and the Out node keeps looking for the old key until you re-attach.
One thing to know about SAMPLER specifically: it's a niche type, so if the loom is empty or the wrong subgraph is feeding it, the None won't show up as a red error immediately - it'll surface when the downstream sampler node tries to use it. Check exists first.
Install
The pack has no requirements.txt, no model downloads, no API keys - it's a frontend extension plus 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 - mismatched label (remember the automaticSAMPLER_prefix) or no Loom Sampler In feeding the loom.existstells you which.- Two sampler objects colliding - give the second one a distinct label; otherwise the In node overwrites the first.
- 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 patched the workaround in the frontend, so keep the pack current.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| loom | LOOM | — | |
| labelopt | STRING | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| LOOM | LOOM | — |
| SAMPLER | SAMPLER | — |
| exists | BOOLEAN | — |