🔀 Cyber Switch
Mute a branch of your graph without killing everything downstream of it
- input
- output
Cyber Switch is a universal signal gate: one input socket of any type, one enable boolean, one output. Flip it ON and the input passes through untouched. Flip it OFF and None goes down the wire - but the rest of the graph keeps running. That last clause is the whole design, and it's the opposite of how ComfyUI's built-in bypass works, so it's worth understanding before you wire it in.
Why OFF isn't just "off"
If you've used bypass in ComfyUI, you've seen the blunt version: the branch is skipped, everything downstream is skipped too, and the graph re-executes only what still has a live path. That's fine for removing a node, but it's wrong for muting one. Say you have a Conditioning branch that adds detail to a base prompt, feeding a sampler's optional input. You want to try the run without that detail - but you still want the sampler to run, just without the branch's contribution.
That's what Cyber Switch does. OFF puts None on the output. A consumer that took the signal on an optional input still executes - it just receives nothing. A node that genuinely needs a real LATENT or IMAGE will, of course, raise on the None - but it raises naming itself, not the switch, so the error is actually traceable. This is the null-output placeholder pattern: the branch is muted from inside the data flow rather than by bypassing nodes.
One more edge case the pack handled honestly: ON with nothing connected to input. That's not muting, it's a misconfigured graph - a silent pass-through would be undiagnosable, so the node returns an ExecutionBlocker with a message that says exactly what happened ("switch is ON but nothing arrived on input"). Everything downstream gets skipped and you get a named notice instead of mysterious dead branches.
What it is and isn't
It's an ANY-type (*) node, which is what lets one switch carry images, latents, models, strings, whatever - the type system hands the socket to the node and says "you make sense of it," and here "making sense of it" is just passing it along. It's not an A/B selector - there's no second input to choose between, and no fallback logic that walks inputs looking for a non-null one. If you want to pick between two model loaders, that's a different node. This one is a gate: single signal in, gated signal out.
Where it earns its keep
Two genuinely useful patterns. First, workflow variants: keep one workflow file with a couple of switches on optional branches, and flip enable to toggle features (detail conditioning, a ControlNet branch, a reference image path) without deleting or bypassing nodes. Second, A/B testing a contribution: toggle one switch between runs and compare outputs. It's the kind of utility that feels trivial until you've rebuilt a graph five times to test one optional input.
The main thing to remember: OFF keeps consumers alive only when their input is optional. If you put a switch in front of a mandatory socket and flip it, expect the downstream node to error - that's the documented behavior, not a bug. Design your mute points on optional inputs.
Install is pack-standard: ComfyUI Manager search FiL_Design_ImageMind, or git clone https://github.com/FiL-Design-Ai/FiL_Design_ImageMind into custom_nodes/, pip install -r requirements.txt, restart. ComfyUI 0.3.60+ required (V3 node API).
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| enable | BOOLEAN | true | ON (True) passes the input signal through. OFF (False) sends `None` downstream, and the rest of the graph keeps running. |
| inputopt | * | Any incoming data signal (Image, Latent, Model, String, etc.). |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| output | * | The passed-through signal when ON. When OFF, `None` goes out instead. |