Nodes/Mickmumpitz-Nodes/Unbundle by Name
ComfyUI Node

Unbundle by Name

When your workflow has 40 bundles and you can't tell them apart

By mickmumpitz·Created 8 months ago·Updated 10 days ago· 47
Unbundle by Name
  • 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
source_bundle
saved_meta{}

Bundle nodes are great until you have ten of them. Then the question stops being "how do I tidy my wires" and becomes "which of these ten identical cables is the one carrying my latents?" Unbundle by Name is the pack's answer: instead of wiring an Unbundle to a specific Bundle, you give your Bundle a name and let this node find it.

It's the sibling of the plain Unbundle in Mickmumpitz-Nodes (the pack behind Mickmumpitz's consistent-character and long-form video workflows), and it exists for the case plain Unbundle can't handle gracefully - big workflows with multiple bundles, especially when they live in different subgraphs.

How it works

The trick is that the Bundle node has a name widget. Unbundle by Name exposes a source_bundle string field, and when you hit queue, the pack's prompt handler steps in. It scans the submitted prompt for a Bundle node whose name matches source_bundle, finds it, and injects the link into this node's bundle input - a connection you never actually drew on the canvas.

The reason that works across subgraphs (which is the whole point) is that ComfyUI's frontend flattens subgraphs into a single prompt dict before submitting it to the server. So the handler sees every Bundle in every subgraph as one flat list, and the name lookup reaches across boundaries that a visible wire couldn't cross.

Once the link is injected, it behaves exactly like the plain Unbundle: unpack the values, retype the wildcard outputs from the source Bundle's metadata, pad the rest with None.

The inputs that matter

  • source_bundle - the name you gave the Bundle node you want to split. It's matched as an exact trimmed string.
  • bundle - technically required in the schema but effectively populated by the handler; you don't wire it.
  • saved_meta - the optional metadata string; leave it alone.

Outputs are output_1 through output_32, wildcard-typed and renamed by the JS extension to match the source bundle.

When to reach for it

Use it when you've got multiple named bundles and plain Unbundle would force you to draw a wire across a busy subgraph boundary - or when the Bundle you want to split is inside a subgraph you'd rather not open. Give the Bundle a memorable name ("character_pipe"), drop an Unbundle by Name with that same string, and you're done.

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. Light deps, no models.

Gotchas

Names must match exactly - trailing spaces or a typo in source_bundle and the handler finds nothing, leaving every output None and the next node down exploding with a type error. Keep Bundle names unique; if two Bundles share a name, the handler's lookup walks the prompt and the last one seen wins, which will surprise you eventually. And because this relies on a submit-time handler, previewing on a stale prompt (before you've re-queued) won't show the wiring. Change a name, re-queue, then read the outputs.

CategoryMickmumpitz/Utils

Inputs (3)

NameTypeDefaultDescription
source_bundleSTRING
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*