Vantage-Easy-Controls
Named groups with on/off toggles, no more manual muting
Group muting is a problem everyone solves badly until a pack solves it properly. ComfyUI's own group node has a mute toggle that dims everything inside it, and that's it - no nesting, no per-node overrides, no way to say "off means bypass, not mute". rgthree's Fast Groups Muter and Bypasser are the canonical dashboard over groups that already exist. This node is a different shape: one control panel where you define the hierarchy and assign individual nodes into it.
How it works
Put one on the canvas, click the ⚙ Configure button in its title bar, and you get a hierarchy editor: groups, nested subgroups, and two assignment columns per group.
Each group has a searchable Name (ID) picker and two lists. Follow toggle means the node is on when the group is on. Opposite toggle means the node is on when the group is off - which is how you swap in an alternative path rather than just disabling one. Adding a node to one column removes it from the other within that group; only selected nodes appear in the columns, so the thing stays readable at forty nodes.
Then you pick each group's off mode. This is the distinction that matters most:
- Bypass (mode 4) - the node is skipped and compatible inputs route to outputs, so data keeps flowing.
- Mute (mode 2) - the node stops executing, no routing.
If a control "turns off" a group and data still comes out the other side, that's bypass. It's not a bug; it's the thing half of us actually wanted, and the other half needed mute. The README's troubleshooting table lists exactly this as the first thing to check.
Nesting, and the rules that actually bite
Parent Off gates the nodes assigned in its descendants, using the parent's off mode. Nodes assigned directly in the parent keep their own Follow/Opposite behaviour even if a descendant also lists them. Child toggle preferences are remembered, so switching a parent back On restores which children were on rather than enabling all of them.
Each parent can also constrain its immediate children: default (independent), max one (enabling one child switches its siblings off), and always one (one child must stay on; the last active one refuses to switch off). That's how you build a radio-button selector over four prompt styles.
Assigning a subgraph node controls the nodes inside it, nested subgraphs included - so a reused pipeline can go behind one toggle without opening it up.
Emit State, and why there are no sockets listed
The node's only field is states, a JSON string holding the configuration - it saves with the workflow, not in a sidecar file. It has no fixed outputs: tick Emit State for a group or subgroup and a BOOLEAN output socket appears for it, one per checked item. Names get sanitised - spaces and punctuation become underscores, leading digits get a prefix, collisions get a suffix - so Image Edit becomes Image_Edit.
Those outputs report effective state. A child whose preference is On emits False while an ancestor is Off, then flips back to True when the ancestor is enabled. That's the whole reason the socket exists: it lets a graph branch on "is this part of the workflow actually live", not just "did I tick a box". Feed it into a Bool Value Switch and you can change what the workflow does, not only which nodes run.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/vantagewithai/Vantage-NodesV2.git
Restart ComfyUI, hard-refresh the browser, and search "Easy Controls" or browse Vantage/Controls. ComfyUI Manager should also carry the pack as Vantage-NodesV2; the clone is the documented route.
No dependencies to install - no requirements file, no declared packages, everything comes from ComfyUI. The hard requirement is the frontend: the configure dialog and the title-bar gear are built on ComfyUI's newer title-button and widget APIs. On an older build you'll have the node and no way to configure it, which reads like a broken download. The README also says the pack is tested in both classic node mode and Nodes 2.0 - worth noting given how many organisation packs got caught out by that rewrite.
Troubleshooting
A child won't switch on. An ancestor is Off, or its parent is enforcing Max one / Always one.
Off still passes data. The group's off mode is Bypass. Switch it to Mute.
Configuration didn't apply. Save in the dialog; Cancel discards, and restoring a workflow rebuilds the controls without re-firing toggle actions.
Output wires vanished from a saved workflow. Known and documented - fixes preserve existing wires but can't recreate connections that were missing from the saved file. Reload an earlier save or reconnect and save again.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| states | STRING | [] | — |
Outputs (0)
No outputs