ComfyUI Node

Convenience

The Utility-MegaPack Convenience node is ComfyUI's duct tape

By IxMxAMAR·Created 4 months ago·Updated about a month ago· 0
Convenience
  • value
  • value_0
  • value_1
  • value_2
  • value_3
  • value_4
  • image_a
  • image_b
  • out_1
  • out_2
  • out_3
  • out_4
  • out_5
modecompare_side_by_side
theme(use pack default)
index0
conditiontrue
keydefault
step1
resetfalse
labelDEBUG
values_json["a","b","c"]
namedefault
payload_json{}
note
v0
v1
v2
v3
v4

ComfyUI's built-in Reroute has a nasty habit: it's type-pinned, so you can't always drag that IMAGE wire through a clean reroute without it sulking. The Convenience node from the Utility-MegaPack fixes that and then keeps going - it's one node with a mode dropdown that hides fourteen small graph-plumbing tools behind it. Universal reroute, a 1→5 splitter, a switch, a gate, a counter, a timer, a debug printer, presets, a side-by-side compare, a value select, a pin selector, and a note. It's the pack's duct tape, and it's the node I'd reach for first if you've never opened this pack before.

This is part of IxMxAMAR's Utility-MegaPack, a security-audited utility bundle that crams 175+ operations across eight nodes. All eight share the same trick, which you'll see everywhere once you know it: one node, one mode dropdown, and the irrelevant widgets hide themselves as you switch. The Convenience node's real selling points are reroute_any (passes literally any type through - the wildcard socket is what makes it different from core's Reroute) and multi_split (send one value out all five sockets so you can fan out without a spider's web of wires).

How it works

Every op registers its own input schema, and they all live in the node's optional inputs. ComfyUI sends every widget value to one process method; the mode you picked decides which registered operation runs. Outputs you don't use get padded with type-appropriate defaults, so a mode that only fills out_1 leaves the other four sockets as harmless empty values rather than erroring.

The handful of inputs a beginner actually sets:

  • index (0–4) - the switch, value select, and pin selector pick from this
  • condition (boolean) - drives gate_passthrough, which returns your value when true and None when false
  • key - names a counter or timer, so you can run several independently
  • values_json / payload_json - JSON lists/bundles for the pin selector and preset ops
  • image_a / image_b - the two images compare_side_by_side stitches into one horizontal strip

Outputs are five wildcard sockets (out_1out_5); only the ones your mode fills are live, so wire the one that matters.

Installing it

It ships with the whole pack - no separate install:

cd ComfyUI/custom_nodes
git clone https://github.com/IxMxAMAR/ComfyUI-Utility-MegaPack

Then restart ComfyUI and find every node under the Utility-MegaPack/ menu. ComfyUI Manager works too: search for "Utility-MegaPack" under Install Custom Nodes. Dependencies are the light side of custom-node life - numpy, Pillow, requests, simpleeval, Jinja2, PyYAML, cryptography - and there are no model files to download. pip install -e . from the pack root installs the Python deps if you'd rather do it that way.

Where people get tripped up

Counters and timers are in-memory and keyed by name, so they reset the moment you restart ComfyUI - don't build anything that needs to survive a reboot. Presets are the opposite: preset_save writes a named JSON file to ~/.cache/comfyui-utility-megapack/presets (or wherever UTILITY_MEGAPACK_PRESET_DIR points), so those persist. And remember the gate returns None when its condition is false - a "nothing" value, not a copy of the input, so downstream nodes need to tolerate that. One light aside: there's a theme widget at the bottom of every node in the pack. It's purely cosmetic (client-side JS), so if your node suddenly turns magenta, that's not a bug in your workflow.

CategoryUtility-MegaPack

Inputs (25)

NameTypeDefaultDescription
modeCOMBOcompare_side_by_side14 options: compare_side_by_side, counter_inc, debug_print, gate_passthrough, multi_split, pin_selector, +8
themeCOMBO(use pack default)17 options: (use pack default), (use ComfyUI default), cyberpunk, minimalist, glassmorphic, retro_terminal, +11
valueopt*
indexoptINT00–4
value_0opt*
value_1opt*
value_2opt*
value_3opt*
value_4opt*
conditionoptBOOLEANtrue
keyoptSTRINGdefault
stepoptINT1
resetoptBOOLEANfalse
labeloptSTRINGDEBUG
values_jsonoptSTRING["a","b","c"]
nameoptSTRINGdefault
payload_jsonoptSTRING{}
image_aoptIMAGE
image_boptIMAGE
noteoptSTRING
v0optSTRING
v1optSTRING
v2optSTRING
v3optSTRING
v4optSTRING

Outputs (5)

NameTypeDescription
out_1*
out_2*
out_3*
out_4*
out_5*