ComfyUI Node

Unbundle

Un-knotting the wire spaghetti in Mickmumpitz workflows

By mickmumpitz·Created 8 months ago·Updated 10 days ago· 47
Unbundle
  • bundle
  • output_1
  • output_2
  • output_3
  • output_4
  • output_5
  • output_6
  • output_7
  • output_8
  • output_9
  • output_10
  • output_11
  • output_12
  • output_13
  • output_14
  • output_15
  • output_16
  • output_17
  • output_18
  • output_19
  • output_20
  • output_21
  • output_22
  • output_23
  • output_24
  • output_25
  • output_26
  • output_27
  • output_28
  • output_29
  • output_30
  • output_31
  • output_32
saved_meta{}

There's a moment in every big ComfyUI build where the canvas stops being a graph and becomes pasta. Thirty wires crossing each other, none of them pointing where you expect. Mickmumpitz's answer - and it's a good one - is the Bundle/Unbundle pair: Bundle collapses up to 32 wires into one cable for transit, and Unbundle is the other end that splits them back out.

It lives in the Utils section of Mickmumpitz-Nodes, the pack behind the author's consistent-character and long-form video workflows. This node by itself does nothing - it's the counterpart that makes the Bundle node useful, and it's aimed squarely at the "this workflow is too big to read" problem that the ComfyUI ecosystem keeps producing.

How it works

On the way in, the Bundle node builds a single payload dict: the values of every connected slot plus the slot names and types, recorded at graph-design time by the pack's JS extension. That metadata is what makes the bundle survivable - the payload can be copied, pasted, and routed through Reroute nodes without losing track of which wire is which.

Unbundle is the decoder. It takes that payload, unpacks the values in order, and pads the rest with None up to its 32 output slots. Because the slots are wildcard-typed, the JS extension retypes and renames each output to match the source Bundle node when you connect it, walking through Reroutes to find the origin. So you see real names like prompt, latent, image on the outputs instead of output_1, output_2, …

Inputs and outputs that matter

  • bundle - the BUNDLE cable to split.
  • saved_meta - an optional hidden-ish string that carries the slot metadata; you shouldn't need to touch it.

Outputs are output_1 through output_32, wildcard-typed, and the JS renames them to match the source bundle.

Where you'd actually use it

Any workflow where the visual wiring is the bottleneck: subgraphs, shared node groups, or graphs you know other people will open and need to understand. Bundle the noisy wires going into a region, Unbundle on the other side, and the section in the middle becomes one clean line. If you only have one bundle, plain Unbundle is all you need; the pack's Unbundle by Name variant is for when you have many bundles and want to pick one by name instead of by wire.

Install

It ships in Mickmumpitz-Nodes:

cd ComfyUI/custom_nodes
git clone https://github.com/mickmumpitz/ComfyUI-Mickmumpitz-Nodes

then restart - or search "Mickmumpitz" in ComfyUI Manager. No models, light deps (numpy/Pillow/opencv-python).

The caveat

If an output comes out None, that's the signal a slot wasn't connected on the Bundle side - and whatever's downstream will throw its own confusing error. It's the price of the * wildcard type: the graph will let you mis-wire things that a typed socket would have caught. Used for tidiness it's great; used as a hiding place for bad wiring, it's a debugging trap.

CategoryMickmumpitz/Utils

Inputs (2)

NameTypeDefaultDescription
bundleBUNDLE
saved_metaoptSTRING{}

Outputs (32)

NameTypeDescription
output_1*
output_2*
output_3*
output_4*
output_5*
output_6*
output_7*
output_8*
output_9*
output_10*
output_11*
output_12*
output_13*
output_14*
output_15*
output_16*
output_17*
output_18*
output_19*
output_20*
output_21*
output_22*
output_23*
output_24*
output_25*
output_26*
output_27*
output_28*
output_29*
output_30*
output_31*
output_32*