Nodes/koo-nodes-pack/KoO On/Off Manager
ComfyUI Node

KoO On/Off Manager

A Frontend-Only Mute Button

By kooailab·Created 15 days ago·Updated 4 days ago· 0
KoO On/Off Manager
      ◄target_node_ids►
      ◄modemute►

      Big workflows have a problem ComfyUI never solved elegantly: you want to turn off half the graph without disconnecting nine wires. The stock answer is ctrl-B, one node at a time, and remembering to turn them all back on. The KoO On/Off Manager takes a different swing - give it a list of node IDs, hit the button, and it mutes or bypasses all of them at once.

      It's the most honest node in the pack about what it is: frontend-only. The Python side is a stub with two widgets and a noop function that returns nothing. There's no runtime logic, no state in the graph, no execution hook. The behaviour lives entirely in the matching JavaScript extension, which reads /properties on the workflow and flips nodes on the LiteGraph canvas.

      That distinction matters for what you can expect from it - and it has real consequences covered below.

      How it works

      Two widgets:

      • target_node_ids - a multiline text field of node IDs, one per line. The frontend parses this into a set.
      • mode - mute or bypass.

      In bypass mode the target nodes are set to LiteGraph's bypass state, so data flows through them unchanged - a KSampler you bypassed passes its latent straight on. In mute mode they're muted, which is ComfyUI's mode-2/never-execute state: the node doesn't run and downstream inputs go unconnected. Which you want depends entirely on whether the rest of the graph can survive a hole where that node used to be.

      Nothing outputs. RETURN_TYPES = (), no sockets at all - it's a control surface sitting on your canvas, and the UI is the interface, not the graph.

      The honest catch

      Because it's frontend-only, it does nothing on an API submission. Queue through the UI and your browser JS flips the nodes before the prompt is built, so the run respects it. POST the workflow to /prompt from a script, or run it on a headless box, or share the image and let someone load the workflow elsewhere, and the toggle state is whatever the saved file says - the manager itself never executes and never applies anything.

      The second catch follows from the first: the mute/bypass states are properties of the nodes, not of the manager. If someone opens your workflow and reads it, the manager's target_node_ids list is a label for what should be off, not an enforced truth. Two sources of truth, one of which is javascript.

      If that sounds like a design flaw, it's better read as a scope decision - a frontend toggle can't desync from the graph in a way that breaks a run, because it isn't in the graph. The downside is that the classic ComfyUI plumbing question "does this node control data flow?" has the answer "no, and it never claimed to."

      When it's actually great

      Iterating on a large graph. You've got a base pass, three optional refinement branches, and two upscale paths. Name the branch heads, paste their IDs into one manager node, and you can flip whole sections on and off between runs without hunting for nodes visually. Much faster than ctrl-B five times and hoping you got them all.

      Node IDs are the annoying part. Get them from the node's title bar context menu (there's a "Properties" entry showing the ID) or from the saved workflow JSON. Multi-select-plus-copy doesn't reliably give you IDs, so expect a minute of clicking when you set this up.

      Bypass is the right mode for most chains: a bypassed refinement pass passes the image through, so the rest of the workflow still runs and you're just skipping a step. Mute is for nodes whose absence is fine - a preview, a logger, a save side-branch.

      Installing it

      cd ComfyUI/custom_nodes
      git clone https://github.com/kevintronchin-blip/koo-nodes-pack
      

      Restart ComfyUI and hard-refresh the browser - the entire node is frontend, so a cached JS bundle gives you two useless text fields. Dependencies are the four ComfyUI already provides (torch, numpy, Pillow, aiohttp); no models, nothing to download. It's filed under utils/KoO, lowercase, which is why it sorts at the bottom of the add-node menu.

      This one genuinely needs the Legacy / LiteGraph renderer: it manipulates LiteGraph node modes directly, and the pack's docs state the nodes 2.0 frontend skips the hooks these controls rely on. Under Nodes 2.0 you'll get the widgets and no behaviour. Registry/Manager listing at v1.0.3 awaits moderation approval; use the source ZIP route if Manager search is empty.

      Troubleshooting

      The buttons don't do anything. Renderer, or stale browser cache. Check both before re-installing.

      Nothing turns off when you queue. Confirm you're queueing from the UI, not submitting the workflow over the API.

      A node turned off and won't turn back on. The manager stores the set of IDs it flipped; if you edited the workflow's nodes in between, the ID can be stale. Clear the list and re-enter it.

      Categoryutils/KoO

      Inputs (2)

      NameTypeDefaultDescription
      target_node_idsSTRING—
      modeCOMBOmute2 options: mute, bypass

      Outputs (0)

      No outputs