Loom Clip Out
The read side of a bundled text encoder
- loom
- LOOM
- CLIP
- exists
The CLIP wire is easy to forget about until your conditioning stops matching your model. Loom Clip Out is the node that pulls a text encoder back out of the loom stream, right where you encode your prompt - paired with Loom Clip In on the load side.
Why you'd reach for it
The clean model-grouping pattern is: load the checkpoint, and push the MODEL and CLIP into the same loom under their own keys. Then in the prompt subgraph, Loom Clip Out pulls the clip out and feeds CLIP Text Encode. When you swap the selected checkpoint, the model and its clip swap together - no dangling clip wire, no conditioning that was encoded by the wrong text encoder.
It's the read half of "the clip travels with the model," and it's what keeps the prompt subgraph from being tangled up with the model-loading subgraph. They talk through the loom, not through a wire stretched across the whole canvas.
How it works
Standard loom lookup:
key = f"CLIP_{label}" if label else "CLIP"
if key not in loom:
return (loom, None, False)
return (loom, loom[key], loom[key] != None)
Reading doesn't remove - the clip stays in the loom, so multiple prompt subgraphs can each pull it out.
The outputs that matter
- CLIP: the text encoder under that label, or
Noneif it isn't in the loom. - exists (BOOLEAN):
Trueonly if the key exists. Wire it somewhere visible to catch a missing clip early. - LOOM: the loom, passed through unchanged.
Inputs are loom (LOOM, required) and label (string), matching the Loom Clip In that stored it. Keep the label empty if you use a single standard clip - it'll sit under CLIP and both nodes agree by default.
Installing
Part of c4f-wire-loom. ComfyUI Manager → search "c4f-wire-loom" → install → restart, or:
cd ComfyUI/custom_nodes
git clone https://github.com/Codes4Fun/c4f-wire-loom
No downloads, no extra deps.
Where it bites
The classic failure: Loom Clip Out returns None and your CLIP Text Encode silently has nothing to work with. exists going False means the label doesn't match or the clip was pushed into the loom after this node runs. The less obvious one: if your model subgraph pushes CLIP in but this node lives in a different stream branch that never received the loom, it can't see it - the loom has to actually flow to where you read it. Nodes 2.0's arrow-drag collapse quirk applies pack-wide, with the workaround shipped.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| loom | LOOM | — | |
| labelopt | STRING | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| LOOM | LOOM | — |
| CLIP | CLIP | — |
| exists | BOOLEAN | — |