Loom VAE In
Carry the decoder with the model, not beside it
- loom
- vae
- LOOM
The VAE wire is the one you set up first and forget until something renders with wrong colors and you realize the model and VAE were loaded from different sources. Loom VAE In bundles a VAE into a LOOM stream so it rides along with the model and clip it belongs to.
Why you'd reach for it
If you're building a model-selection graph - the pattern the c4f-wire-loom README's LongCat demo uses - the checkpoint, its clip, and its VAE want to travel as one unit. Push all three into the same loom (MODEL, CLIP, VAE), and the subgraph that does the sampling pulls out a matched set every time. Swap the selected checkpoint and you get its matching VAE automatically, instead of a latent that was decoded by the wrong decoder.
The cleanest use is grouping: one "model" loom holds the whole load-set, and your sampler and VAE-decode subgraphs just consume the loom. The VAE stops being a loose wire you have to route past every node.
How it works
The standard typed loom insert:
key = f"VAE_{label}" if label else "VAE"
new_loom[key] = vae
return (new_loom,)
Empty label → key VAE; a label like taesd → VAE_taesd. The matching Loom VAE Out uses the same label to find it. Drag a VAE slot onto a collapsed Loom Split hub and the frontend auto-creates the node with the label pre-filled.
The inputs that matter
- vae (VAE): from a checkpoint loader, a dedicated VAE loader, or a VAE like TAESD.
- label (string): the key. Leave empty for the primary VAE; name it if you route a second decoder (say, a fast preview VAE) through the same loom.
- loom (LOOM, optional): the bundle to extend.
Output is a single LOOM, wired onward to Loom Split or Loom Join, with the VAE pulled back out via Loom VAE Out where you decode.
Installing
Same pack, same steps. ComfyUI Manager → search "c4f-wire-loom" → install → restart, or:
cd ComfyUI/custom_nodes
git clone https://github.com/Codes4Fun/c4f-wire-loom
Nothing to download - no model files, no extra Python packages. The node just moves objects around in memory.
Where it bites
Same stream rules as everywhere else: the VAE only reaches subgraphs downstream of the Loom In. And because bare VAE is the default key, dropping a second VAE into the loom without a label silently replaces the first - that's how you end up decoding with the wrong VAE and no error to tell you. Keep one unlabeled, label any extras. The usual Nodes 2.0 arrow-drag collapse quirk applies, though the pack's workaround keeps it mostly cosmetic.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| loomopt | LOOM | — | |
| vaeopt | VAE | — | |
| labelopt | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| LOOM | LOOM | — |