ND Unpack Parameters
One wire in, a named output per field out
- params
- out_1
- out_2
- out_3
- out_4
- out_5
- out_6
- out_7
- out_8
- out_9
- out_10
- out_11
- out_12
- out_13
- out_14
- out_15
- out_16
- out_17
- out_18
- out_19
- out_20
- out_21
- out_22
- out_23
- out_24
- out_25
- out_26
- out_27
- out_28
- out_29
- out_30
- out_31
- out_32
- out_33
- out_34
- out_35
- out_36
- out_37
- out_38
- out_39
- out_40
- out_41
- out_42
- out_43
- out_44
- out_45
- out_46
- out_47
- out_48
- out_49
- out_50
- out_51
- out_52
- out_53
- out_54
- out_55
- out_56
- out_57
- out_58
- out_59
- out_60
- out_61
- out_62
- out_63
- out_64
ND Pack Parameters is only half of a bundle system - this is the other half, and it's the half that decides whether your graph stays readable. A bundle you can't cleanly open is just a wire with secrets in it.
What it is
ND Unpack Parameters takes one ND_PARAMS wire and produces one output per field, named and typed after the field. It has a fixed-looking schema of 64 generic outputs (out_1 … out_64) in the API, but in the UI you'll see the real thing: plug in a bundle and the node dissolves into exactly the outputs that bundle carries. A Character Builder bundle gives you Description, General, Face, Hair, and so on, down to Negative. Every one of those is typed, so ComfyUI will refuse to connect Hair into an IMAGE socket, which is a small daily mercy.
The mechanism is worth one paragraph because it explains every weird case. Unpack doesn't get told what's inside the bundle by the bundle - it traces its input wire back to the node that produced it and asks the browser-side registry what that node provides. Pack has a registry of consumers (which inputs it should show for a given downstream node); provider nodes like Character Builder and Load Images register their fields. That's the whole design, and it's why Unpack follows wires through reroutes and across subgraph boundaries: it's resolving a graph, not reading data.
The inputs and outputs that matter
params(ND_PARAMS, required) - the bundle you're opening. Converting this to an input isn't the point; just wire the bundle in.names(STRING, default[]) - browser-written, same as on Pack. It's the resolved list of field names to slots. Not something you edit.
Outputs: one per field, typed, named after the field. Which specific names you get depends entirely on what fed the bundle. From ND Load Images you get Image 1 Parameters, Image 2 Parameters, … and each of those is itself a bundle, so you open it with a second Unpack to reach image, mask, keep_proportion, the block's slider value and enabled.
That nesting is the one thing that annoys newcomers - two Unpacks to reach an image - and it's also the thing that makes a twenty-image loader usable. One Unpack for "which block", a second for "what about it". Flattened, you'd have a hundred pins.
When the outputs don't appear
Bundles nest, and the matryoshka structure is by design, but the resolution has a limit. If the source of the wire is a node the browser can't recognise - another pack's bundle type, or a boundary it can't trace through - you get the generic out_1, out_2 names instead of meaningful ones. That usually means the wire came from somewhere the registry doesn't know about: an API-format prompt loaded into the UI, or a bundle produced inside a custom node with no registered fields.
Install
Part of Neural Dreamer Nodes (v1.1.0, MIT, no Python dependencies - dependencies = [] in pyproject.toml, no models to download).
cd ComfyUI/custom_nodes
git clone https://github.com/neural-dreamer/ComfyUI-NeuralDreamer-Nodes.git
Restart, then refresh the browser tab. ComfyUI Manager: search "Neural Dreamer Nodes". Pack and Unpack come in together - you can't have one without the pack.
Common issues
It shows one output and nothing else. The input wire isn't connected, or the bundle came from an unknown source. Wire it to a Pack first, then watch the outputs appear.
I can't find the node. Drag a parameters wire out into empty space - Pack (from an input) and Unpack (from an output) are the first suggestions in the node search. That's deliberate: pack and unpack are the gestures, not something you type into a list.
The output I need is a bundle. Unpack it again. Load Images' per-block fields are bundles, and any Pack field can be one.
Renamed a Pack input and the Unpack didn't follow. Refresh the tab. The names are written by the browser at edit time, not recomputed on the fly; a stale tab can hold old field lists.
Fields look empty at runtime. Unpack will happily hand you a None field - that's what the pack puts there for an input that wasn't connected or a value a gate dropped. Check the Pack side with ND Show Any As Text before assuming the Unpack lost something.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| params | ND_PARAMS | — | |
| namesopt | STRING | [] | — |
Outputs (64)
| Name | Type | Description |
|---|---|---|
| out_1 | * | — |
| out_2 | * | — |
| out_3 | * | — |
| out_4 | * | — |
| out_5 | * | — |
| out_6 | * | — |
| out_7 | * | — |
| out_8 | * | — |
| out_9 | * | — |
| out_10 | * | — |
| out_11 | * | — |
| out_12 | * | — |
| out_13 | * | — |
| out_14 | * | — |
| out_15 | * | — |
| out_16 | * | — |
| out_17 | * | — |
| out_18 | * | — |
| out_19 | * | — |
| out_20 | * | — |
| out_21 | * | — |
| out_22 | * | — |
| out_23 | * | — |
| out_24 | * | — |
| out_25 | * | — |
| out_26 | * | — |
| out_27 | * | — |
| out_28 | * | — |
| out_29 | * | — |
| out_30 | * | — |
| out_31 | * | — |
| out_32 | * | — |
| out_33 | * | — |
| out_34 | * | — |
| out_35 | * | — |
| out_36 | * | — |
| out_37 | * | — |
| out_38 | * | — |
| out_39 | * | — |
| out_40 | * | — |
| out_41 | * | — |
| out_42 | * | — |
| out_43 | * | — |
| out_44 | * | — |
| out_45 | * | — |
| out_46 | * | — |
| out_47 | * | — |
| out_48 | * | — |
| out_49 | * | — |
| out_50 | * | — |
| out_51 | * | — |
| out_52 | * | — |
| out_53 | * | — |
| out_54 | * | — |
| out_55 | * | — |
| out_56 | * | — |
| out_57 | * | — |
| out_58 | * | — |
| out_59 | * | — |
| out_60 | * | — |
| out_61 | * | — |
| out_62 | * | — |
| out_63 | * | — |
| out_64 | * | — |