Dictionary Bus Edit
Swap One Part of a Bundle Mid-Workflow, Keep the Rest
- dict_bus
- dict
- model
- clip
- vae
- image
- latent
- list
- DICT_BUS
The problem with bundling everything into one wire is that eventually you need to change one thing in the bundle. That's exactly what the Dictionary Bus Edit node is for. It takes a DICT_BUS, lets you replace any subset of its components - the dictionary, model, CLIP, VAE, image, latent, or list - and hands back a new bus where everything you didn't touch is unchanged. A bus stops being a one-way ride and becomes something you can revise mid-graph.
How it works
The bus is a fixed-order tuple, and Edit is a surgical version of Unpack-then-repack. For each of the seven optional inputs, the rule is brutally simple: if you connect something, it replaces that slot in the new bus; if you leave it unwired, the original value is carried over. It literally checks if dict is not None else orig_dict for each slot.
What that means in practice: you only wire the one thing you're changing. Pull a bus from a loader, run the output model through a merge or a second processing step, feed the new model back into this node along with the original bus, and the resulting bus has the swapped model and everything else intact. Same trick for a new dictionary, a new VAE, an image you want to bundle for the next stage.
The single required input is the dict_bus itself - you can't create a bus here, only edit an existing one (use DictBus for that). The single output is a new DICT_BUS.
Why it beats Unpack
For a one-off grab, Unpack is simpler: take the bus apart, use what you need. But the moment you want to modify something and keep carrying the state, Edit is the cleaner move. Unpack forces you to re-bundle everything by hand to continue the chain - Edit lets you change one element and keep the bus flowing forward in a single wire. It's the node that makes long bus chains practical, because each stage can hand the state along after a surgical tweak.
Installing it
Same pack, nothing extra:
cd ComfyUI/custom_nodes
git clone https://github.com/JEONG-JIWOO/ComfyUI_Eugene_Nodes
Restart ComfyUI (or ComfyUI Manager → "Eugene Nodes"). No pip dependencies, no model downloads.
Where people get burned
The None trap is the one to remember. "Unconnected" and "I want this slot cleared" are the same thing to this node - an unconnected input keeps the original, so you can't use Edit to blank out a component. If you genuinely need a slot emptied, the bus itself only carries None for slots that were empty at creation, so plan for that upstream.
Also keep the tuple order in mind if you're mixing this with Unpack: the slots here are dict, model, clip, vae, image, latent, list - the same order everywhere in the pack. Wire to the wrong input and you'll see a type error at the far end rather than here.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| dict_bus | DICT_BUS | — | |
| dictopt | DICT | — | |
| modelopt | MODEL | — | |
| clipopt | CLIP | — | |
| vaeopt | VAE | — | |
| imageopt | IMAGE | — | |
| latentopt | LATENT | — | |
| listopt | LIST | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| DICT_BUS | DICT_BUS | — |