Nodes/c4f-wire-loom/Loom VAE Out
ComfyUI Node

Loom VAE Out

The node that turns your VAE wiring into a bus

By Codes4Fun·Created 3 months ago·Updated about a month ago· 0
Loom VAE Out
  • loom
  • LOOM
  • VAE
  • exists
label

If you've ever tried to split a big ComfyUI graph into subgraphs, you know the pain this node exists to kill: the VAE wire that has to snake through every subgraph boundary, plus a reroute every three pixels. Loom VAE Out is the read end of a "wire loom" - a shared bundle of connections that one part of the graph stuffs wires into and another part pulls them out of. Think rgthree Context nodes or reroutes' job of keeping a big workflow readable, except the loom is a stream you can modify as it flows, not just a pipe.

The pack is c4f-wire-loom by Codes4Fun, a one-author utility pack that adds a LOOM data type to ComfyUI. The whole thing has zero dependencies and no models - it's pure Python plus a bit of frontend JS, which is refreshingly rare in this ecosystem. It's genuinely a niche tool: reddit barely talks about it, but if you build reusable subgraphs (model switchers, prompt replacers, sampler presets), it's the difference between a graph you can read and a graph you can't.

How it actually works

Under the hood a loom is just a Python dict - keys are labels, values are whatever wire you put in. That's the whole trick. Loom VAE In writes to it, and this node reads out. Where people get burned is the key naming: for the type-specific nodes the key is VAE_<label> if you give a label, or plain VAE if you leave it empty. So a Loom VAE In with label hi-res stores at VAE_hi-res, and you need a Loom VAE Out with the same label to find it. The type prefix exists to stop a VAE label from colliding with an IMAGE or CONDITIONING label on the same loom.

One property that makes the loom model nice: Loom Out is a non-destructive read. It doesn't pull the wire out and delete it - it returns the same loom untouched, the wire, and an exists boolean. That means you can chain multiple Loom Out nodes off a single loom, and it's the mechanism behind the pack's "stream" pitch: take something out, modify it, push it back in via a Loom In further down, and everything downstream sees the modified version.

Inputs and outputs that matter

Inputs are just two:

  • loom (LOOM, required) - the loom you're reading from. Feed it from a Loom Split, a Loom Join, or a previous Loom Out's pass-through.
  • label (STRING, optional, default "") - which wire to grab. Empty means the base VAE key.

Outputs are three:

  • LOOM - the same loom passed through, so you can keep the bus flowing to the next node.
  • VAE - the wire you asked for, or None if the label isn't in the loom.
  • exists (BOOLEAN) - true when the wire was found. This one's quietly useful: wire it into a Switch node to fall back to a default VAE when a subgraph didn't provide one, instead of letting None blow up your sampler.

Installing it

Easiest way is ComfyUI Manager: search c4f-wire-loom (or "Wire Loom") and install. Manual route if you're not on Manager:

cd ComfyUI/custom_nodes
git clone https://github.com/Codes4Fun/c4f-wire-loom

Then restart ComfyUI. There's no requirements.txt, nothing to download, no model files - the node appears under utils/route in the node menu.

Gotchas

  • Label mismatch is the #1 failure. You'll know it because exists goes false and the VAE output is None. If you rename a primitive's widget, that name is only picked up at first attach - the README warns it never updates afterward.
  • The pack's drag-drop magic (drop a node's slot onto a loom and it auto-creates the matching Loom In/Out) relies on the legacy canvas. Under Nodes 2.0 the README admits dragging the collapse arrow also toggles collapse, so this pack is a reason to keep Nodes 2.0 off for now.
  • The author flags it as functional but "needs some optimization." It's a young pack - expect rough edges, not crashes.

Also worth knowing: looms nest. You can put a whole loom inside another loom, which is how you'd carry a separate upscale-model loom without label collisions. It's a small pack, but once you're building subgraphs, Loom VAE Out quietly becomes the node you reach for constantly.

Categoryutils/route

Inputs (2)

NameTypeDefaultDescription
loomLOOM
labeloptSTRING

Outputs (3)

NameTypeDescription
LOOMLOOM
VAEVAE
existsBOOLEAN