Loom Model Out
Pull the selected model back out where it matters
- loom
- LOOM
- MODEL
- exists
If Loom Model In is how a model gets into the stream, Loom Model Out is how it gets back out - the node your sampler subgraph actually plugs into. Same mechanism as every loom out node: give it a label, get the model, and get a boolean that tells you whether it was even there.
Why you'd reach for it
The model-combo-box pattern from the c4f-wire-loom README's LongCat demo doesn't work without this. A model subgraph loads several checkpoints, a widget picks one, and Loom Model In pushes it into the loom. Down in the sampler subgraph, Loom Model Out pulls it out and feeds the KSampler. Change the selection up top, and the sampler gets the new model - no re-wiring anywhere in between.
It's also how you reach the nested-loom trick: pull the inner upscale loom out of the main loom, then a Loom Model Out with the upscale label on that inner loom gets you the upscaler model without its key colliding with the main checkpoint's.
How it works
It's a lookup, not a removal. The loom is passed through untouched, and the node returns three outputs:
key = f"MODEL_{label}" if label else "MODEL"
if key not in loom:
return (loom, None, False)
return (loom, loom[key], loom[key] != None)
That's the part people miss: taking a model out of the loom does not delete it from the stream. The loom output keeps flowing with the model still inside, so multiple Loom Model Out nodes can read the same model in different subgraphs.
The outputs that matter
- MODEL: the model stored under that label, or
Noneif it isn't there. - exists (BOOLEAN):
Trueonly if the key exists in the loom. Use it to gate logic - "run the upscale branch only if an upscale model is in the loom." - LOOM: the unchanged loom, passed through for the next stage.
The input is the loom (LOOM, required) plus a label (string) that must match what Loom Model In used.
Installing
Same pack as always. ComfyUI Manager → search "c4f-wire-loom" → install → restart, or:
cd ComfyUI/custom_nodes
git clone https://github.com/Codes4Fun/c4f-wire-loom
No models to download, no extra Python deps.
Where it bites
The failure mode is a label mismatch, and exists is the tell: if it comes back False, the label doesn't match anything in the loom - you typed MODEL_upscale in one place and upscale in the other, or the Loom Model In sits after this node in the stream so the loom never had it. Check the label spelling and the node order before suspecting anything exotic. The Nodes 2.0 arrow-drag collapse quirk applies pack-wide, with the built-in workaround.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| loom | LOOM | — | |
| labelopt | STRING | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| LOOM | LOOM | — |
| MODEL | MODEL | — |
| exists | BOOLEAN | — |