Faishme Debug
An exec() Inside Your Graph — Handy, and Exactly as Dangerous as It Sounds
- value
- output
Faishme Debug is a Python interpreter sitting on your canvas. You feed it any value, type some Python into the commands box, and it runs that code against the value, then passes a (possibly transformed) result out the other side. It's the pack's escape hatch for when a workflow needs a quick computation no dedicated node exists for. It's also, quite literally, an arbitrary code-execution node - the same category of thing that caused the ComfyUI malware scares. Useful, but treat it accordingly.
How it works
The mechanism is three lines of Python under the hood. The node creates a small scope containing your value, runs whatever you typed through exec(), and returns whatever you left in a specific slot:
output = {"value": value}
exec(commands) # your code runs here, with `value` and `output` in scope
return (output["value"],)
So the pattern is: your code reads value, writes output["value"] = ..., and that becomes the output wire. Want to double a tensor batch? output["value"] = value * 2. Want to print diagnostics? print(value) writes to the ComfyUI console. Want to count items? output["value"] = len(value). It's Python, so anything you can do in Python you can do here - reshape, slice, call libraries, whatever.
Inputs and outputs
- value - any type (
*), so it accepts IMAGE, STRING, tensors, lists, whatever your graph is carrying. - commands - multiline Python, run against
value. - output - any type, whatever you assigned to
output["value"].
It's flagged as an output node, so it can terminate a branch.
The security reality
This is where I stop being casual. exec() on arbitrary strings is the exact mechanism behind the malicious custom nodes that compromised machines - install a node, it runs code on your box, no sandbox. This node is that mechanism, just exposed honestly as a tool. For the record: the pack is the author's own, the code is open and small, and there's nothing malicious in it. But the rule that applies to every exec node applies here harder: never run a workflow that loads a Faishme Debug (or anything like it) from someone you don't trust, and never paste commands you can't read. If a stranger's shared workflow contains one of these with a filled-in commands box, treat it like a hostile binary.
Installing it
Standard for the pack - Manager, search "ComfyUI_faishme", or:
cd ComfyUI/custom_nodes
git clone https://github.com/AkashKarnatak/ComfyUI_faishme
Restart ComfyUI. No extra dependencies for this node; it's pure Python.
Where people get burned
Beyond the security angle, the practical gotcha is that errors in your commands string surface as confusing tracebacks in the ComfyUI console, not as a friendly widget message. And because the node passes through Any, a type mistake downstream won't show until the next node complains. Use it for quick checks, keep the code short, and don't build your whole pipeline on it - it's a debug tool, and it behaves like one.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| value | * | — | |
| commands | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| output | * | — |