Convenience
The Utility-MegaPack Convenience node is ComfyUI's duct tape
- 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
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 thiscondition(boolean) - drivesgate_passthrough, which returns your value when true andNonewhen falsekey- names a counter or timer, so you can run several independentlyvalues_json/payload_json- JSON lists/bundles for the pin selector and preset opsimage_a/image_b- the two imagescompare_side_by_sidestitches into one horizontal strip
Outputs are five wildcard sockets (out_1–out_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.
Inputs (25)
| Name | Type | Default | Description |
|---|---|---|---|
| mode | COMBO | compare_side_by_side | 14 options: compare_side_by_side, counter_inc, debug_print, gate_passthrough, multi_split, pin_selector, +8 |
| theme | COMBO | (use pack default) | 17 options: (use pack default), (use ComfyUI default), cyberpunk, minimalist, glassmorphic, retro_terminal, +11 |
| valueopt | * | — | |
| indexopt | INT | 00–4 | — |
| value_0opt | * | — | |
| value_1opt | * | — | |
| value_2opt | * | — | |
| value_3opt | * | — | |
| value_4opt | * | — | |
| conditionopt | BOOLEAN | true | — |
| keyopt | STRING | default | — |
| stepopt | INT | 1 | — |
| resetopt | BOOLEAN | false | — |
| labelopt | STRING | DEBUG | — |
| values_jsonopt | STRING | ["a","b","c"] | — |
| nameopt | STRING | default | — |
| payload_jsonopt | STRING | {} | — |
| image_aopt | IMAGE | — | |
| image_bopt | IMAGE | — | |
| noteopt | STRING | — | |
| v0opt | STRING | — | |
| v1opt | STRING | — | |
| v2opt | STRING | — | |
| v3opt | STRING | — | |
| v4opt | STRING | — |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| out_1 | * | — |
| out_2 | * | — |
| out_3 | * | — |
| out_4 | * | — |
| out_5 | * | — |