Nodes/ComfyUI_Eugene_Nodes/Dictionary Bus Edit
ComfyUI Node

Dictionary Bus Edit

Swap One Part of a Bundle Mid-Workflow, Keep the Rest

By JEONG-JIWOO·Created 2 years ago·Updated 8 months ago· 2
Dictionary Bus Edit
  • 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.

Categorydictionary/bus

Inputs (8)

NameTypeDefaultDescription
dict_busDICT_BUS
dictoptDICT
modeloptMODEL
clipoptCLIP
vaeoptVAE
imageoptIMAGE
latentoptLATENT
listoptLIST

Outputs (1)

NameTypeDescription
DICT_BUSDICT_BUS