Bundle Set
Write one key into a bundle without touching the rest
- bundle
- value
- bundle
Bundle Pack is the sledgehammer: pack a pile of values at once. Bundle Set is the scalpel: take an existing bundle, write or overwrite exactly one key, and pass the result along. It's how you add values to a bundle downstream of where it was created, which is what turns the bundle system from a "pack once at the top" trick into a "build a settings object as it flows through the graph" pattern.
How it works
Three inputs: a required bundle to update, a key string (default value1), and a value of any type to store at that key. One output: the updated bundle. That's the whole node.
Two details make it behave well:
- It doesn't mutate the input. The tooltip is explicit: "A new copy is returned - the original is not modified." ComfyUI values flow forward, and this node respects that. If you read the bundle elsewhere, your read is unaffected by this Set on a different branch. No aliasing surprises.
- Dot notation works here too. Write to
settings.widthand it creates or updates the nested path. Combined with the same dot-path support in Bundle Get, you can reach into nested structures on both ends without unpacking. Pack acameraobject, then Setcamera.fovlater when a user changes a slider.
This is the node that lets different sections of a big workflow contribute to one shared bundle. One area adds the seed, another injects the width, a third stamps a flag - each with its own Bundle Set on the wire, each a small, readable node.
Where it fits in the Bundle family
- Bundle Pack - create the bundle, rename slots to set keys, pack many values at once, optionally merge an existing bundle.
- Bundle Set - one key at a time, downstream, non-destructively.
- Bundle Get - read one key (or nested path).
- Bundle Unpack - explode everything back into individual outputs.
If you only need to set one value and the bundle already exists, Set is cleaner than running another Pack to merge. If you're building a bundle from scratch with a dozen values, Pack is less tedious.
Install
Part of Nifty Nodes for ComfyUI. Manager: search "Nifty Nodes for ComfyUI" → Install → restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/Stibo/comfyui-nifty-nodes
Restart ComfyUI. Pure Python, no models, no special dependencies. MIT-licensed, v3-API native, new pack (v2.1.0, mid-2026) - keep it updated.
Gotchas
The two classic trips: forgetting that the key is a literal string (typo → silent None on the Get side, because a missing key doesn't error), and assuming Set modifies the bundle in place. It doesn't - you must pass the output bundle forward, not keep reading the old one. If a downstream node is fed from before the Set, it never sees the new value. That's how data flow works everywhere in ComfyUI, but bundles make it easier to forget.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| bundle | BUNDLE | The bundle to update. A new copy is returned — the original is not modified. | |
| key | STRING | value1 | Key to write in the bundle. Use dot notation for nested keys, e.g. 'settings.width'. |
| value | * | Value to store at the given key. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| bundle | BUNDLE | — |