- exists
This is the simplest node in the petty-paint pack, and there's nothing wrong with that. PettyPaintNot takes a boolean and returns its inverse: true becomes false, false becomes true. One input, one output, no settings. It's a logic gate, and in a node graph - where you're routing booleans through conditionals, switches, and skip inputs - a clean way to flip a signal is genuinely handy.
The pack is the ComfyUI-side integration for Petty Paint, Andrew Porter's web canvas that reimagines doodles through Stable Diffusion, and it leans on booleans for control flow: skip flags, file-exists checks, conditional branches. A Not is the glue that turns "should I skip" into "should I run."
How it works
value is a BOOLEAN input, forced-input - so you're expected to wire it from somewhere, not type it in (though the default false means it works unconnected too). The node computes not value and returns it. There's also an IS_CHANGED that keys off the input value, which is just ComfyUI's way of saying "this node re-executes whenever its input changes" - exactly what you want from a gate in an interactive graph.
The output is named exists rather than something logical like not or inverted. Don't read too much into it - it's a naming quirk from the pipeline it was built for. The behavior is a plain boolean NOT.
The inputs and outputs
value- BOOLEAN; the input to invert.- Output:
exists- BOOLEAN; the inverted value.
The classic pattern: a File Exists-style check outputs true when a file is present; run that through Not and you get "file is missing" - which is exactly the signal you'd feed to a skip flag or a "generate this next" branch. That's the whole use case, and it does it without ceremony.
Installing it
Same pack, same install - ComfyUI Manager, search "petty-paint-comfyui-node":
cd ComfyUI/custom_nodes
git clone https://github.com/mephisto83/petty-paint-comfyui-node
Restart ComfyUI. Declared dependency is Flask==2.1.2; no models, nothing to download.
Common issues
There's almost nothing to trip over - it's one boolean flip. The one thing to keep straight: the output is named exists, which is a confusing label if you're reading your graph cold (it's the inverse of whatever "exists" you thought you had). If you find yourself squinting at it, that's the node doing its job, not your mistake. And since the input is forced, remember ComfyUI won't let you just type a value into the widget if something else drives it - use a boolean-constant node if you need a hardcoded true or false.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| value | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| exists | BOOLEAN | — |