Allma Muter (false = mute)
Ctrl+M as a node, up to ten branches at once
- values
Every ComfyUI user learns the two keyboard shortcuts within a week: Ctrl+M mutes a node, Ctrl+B bypasses it. But muting by hand means reaching for the node, one at a time, in a graph that's already too big to navigate. Allma Muter (false = mute) turns that into a control surface: point it at the branches you want to switch off, flip toggles, and the muting happens for you - ten branches from one node.
What it's really doing
Here's the subtle part, and it's why this node exists at all. Muting edits the graph, and the graph is frozen the moment you queue a run. A boolean changes a value. Nothing built-in bridges the two - ExecutionBlocker kills the entire consuming node rather than skipping one input, ComfySwitchNode demands both branches wired, and no native node produces "nothing" to feed the off branch. Allma Muter's trick: it mutes the branch in the browser, before the graph is submitted, by setting the upstream node's mute state - exactly what Ctrl+M does, but scriptable per branch.
The wiring pattern is what surprises people first: nothing passes through. Wire any output into a slot, a toggle appears for it, and the real wire still runs straight from the source to whatever consumes it. This node only points at the branch it governs, which is why it has no outputs - and why it never executes. With nothing downstream it's pruned before the graph runs, which is exactly right for a control surface.
There's a master enabled switch that sets every branch toggle at once, and each branch keeps its own on_1 … on_10 toggle. One catch on those toggles: a wire into them has to come from a literal boolean - a boolean primitive, or a subgraph input promoted from one. The value is read in the browser, before the graph queues, because a value travelling on a link doesn't exist until the graph is already running. A boolean some node computes can't be known in time, so the last clicked state wins. And muting takes the branch cleanly out: nodes you muted by hand are never woken up again by the muter - only the ones it put to sleep come back.
Muter vs Bypasser
They look identical and differ in one judgment call. Muting removes a node from the graph, so whatever it fed sees an unconnected input - right for a branch that should simply not be there, like a reference image you're leaving out of this run. Allma Bypasser keeps the node in place and passes its input through to its output, so the chain stays whole - right for a stage you're stepping over, like an upscaler in the middle of a pipeline that still has to hand its frames on.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/OliveiraNickolas/AllmaNodes
Restart. No pip install, no backend, no models - pure logic in the Allma/logic category. If you load an old workflow with an Allma Gate node, that's this node's old name; it's been renamed to Muter (more below in the Gate article). The pack is new and untested at scale, but the mechanism is simple enough that the main risk is your own wiring - double-check that the branch you're muting doesn't feed an output node through another path, or the muter will look like it did nothing.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| enabled | BOOLEAN | true | Master switch. Flipping it sets every branch toggle at once; each branch can still be set on its own afterwards. |
| values | COMFY_AUTOGROW_V3 | — | |
| on_1opt | BOOLEAN | true | This branch on its own. A wire here must come from a literal boolean — it is read before the graph runs. |
| on_2opt | BOOLEAN | true | This branch on its own. A wire here must come from a literal boolean — it is read before the graph runs. |
| on_3opt | BOOLEAN | true | This branch on its own. A wire here must come from a literal boolean — it is read before the graph runs. |
| on_4opt | BOOLEAN | true | This branch on its own. A wire here must come from a literal boolean — it is read before the graph runs. |
| on_5opt | BOOLEAN | true | This branch on its own. A wire here must come from a literal boolean — it is read before the graph runs. |
| on_6opt | BOOLEAN | true | This branch on its own. A wire here must come from a literal boolean — it is read before the graph runs. |
| on_7opt | BOOLEAN | true | This branch on its own. A wire here must come from a literal boolean — it is read before the graph runs. |
| on_8opt | BOOLEAN | true | This branch on its own. A wire here must come from a literal boolean — it is read before the graph runs. |
| on_9opt | BOOLEAN | true | This branch on its own. A wire here must come from a literal boolean — it is read before the graph runs. |
| on_10opt | BOOLEAN | true | This branch on its own. A wire here must come from a literal boolean — it is read before the graph runs. |
Outputs (0)
No outputs