πͺ βΈοΈ Saturn Decision
Is this draft worth the expensive half?
- cancel
Most workflows have a cheap half and an expensive half. A first pass that takes eight seconds, then a hires pass, a detailer, or a video render that takes eight minutes. Normally you find out whether the cheap half was any good after you've paid for the expensive one. This node inserts a stop sign between them: the run pauses, you look at the intermediate result, and you click Continue, Cancel, or Stop Workflow.
How it works
When execution reaches this node, it registers a wait on that node's id, tells the frontend to light up the buttons, and then blocks the executing thread. Crucially, it doesn't block blindly - it polls every half-second and checks ComfyUI's interrupt flag, so hitting the normal cancel/stop button in the UI unblocks the node cleanly instead of leaving a zombie thread holding your GPU.
- Continue β the
canceloutput returnsFalse. - Cancel β
cancelreturnsTrue. - Stop Workflow β the node cancels the current queue item, interrupts model processing, and raises ComfyUI's interrupt exception so the run dies immediately.
And here's the useful part: because cancel is a real value produced during this run, you can wire it into a switch node downstream. Continue (False) routes execution into the expensive branch. Cancel (True) routes it into a passthrough - the cheap result you already have gets saved, and the costly half never runs. That's a "should I keep going" gate, not just a stop button.
Two smaller mechanics worth knowing: disable short-circuits the whole thing and returns False immediately, and the wait is interruptible rather than fire-and-forget, so a decision node that never gets clicked doesn't wedge the server - it wedges the run, which is a different and recoverable thing.
Inputs and outputs
disable- bypass the gate entirely; the node behaves as if you'd clicked Continue.send_os_notification- fires a native desktop toast when the pause happens. On Windows it's a PowerShell toast, on macOS anosascriptnotification, on Linuxnotify-send. Handy for the "walk away from the machine" workflow.timeout- seconds to wait before auto-continuing.-1(the default) means wait forever; the maximum is 3600.
One output: cancel, a BOOLEAN.
Install
ComfyUI Manager β search SaturnNodes, or:
cd ComfyUI/custom_nodes
git clone https://github.com/KOFiblto/ComfyUI-SaturnNodes
Restart ComfyUI. The pack's requirements.txt is Pillow, numpy and piexif - nothing extra for this node. The Linux notification path shells out to notify-send, so if you're on a bare container or without a notification daemon, the toast silently doesn't appear (it logs the failure rather than erroring). Category is πͺ SaturnNodes/Utils.
Where people get burned
You queued a batch and now you're clicking. A decision node fires once per queued item. Queue twenty and you'll sit there clicking twenty times. Set disable on, or give timeout a sane value, before you batch anything.
timeout of -1 means the run waits indefinitely. Nothing crashes; the GPU just sits idle while the job holds its queue slot. If you've forgotten it's there, the fix is the normal cancel button - the node's interrupt polling means that works.
Editing the canvas while paused doesn't change the run. The prompt was serialized when you hit Queue; your live edits apply to the next run. The only thing your click changes is which branch downstream of the decision executes. So don't pause expecting to rewire the graph - pause expecting to route it.
The desktop toast doesn't arrive on Linux. notify-send has to exist and a notification daemon has to be listening. Cosmetic only; the pause still works.
Cancel and Stop Workflow are different. Cancel lets the workflow finish down the other branch - you get outputs. Stop Workflow kills the batch and you get nothing past that point. If you want the cheap half saved, use Cancel.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| disable | BOOLEAN | false | β |
| send_os_notification | BOOLEAN | false | β |
| timeout | INT | -1-1β3600 | β |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| cancel | BOOLEAN | β |