Nodes/ComfyUI-Enhancement-Utils/System Notification
ComfyUI Node

System Notification

ComfyUI will ping you the second the workflow finishes

By phazei·Created 5 months ago·Updated 22 days ago· 33
System Notification
  • any
  • passthrough
messageYour workflow has completed.
modealways

You've queued a long render, you're three browser tabs deep, and you have no idea whether it's done. System Notification solves that by firing a real OS-level notification the instant execution reaches it. It's the quiet cousin of the Play Sound node in the same pack - no audio, just a popup that appears even when you're not looking at the ComfyUI tab. Drop it at the end of a long workflow and you can finally stop babysitting.

It comes from phazei/ComfyUI-Enhancement-Utils, and like Play Sound it's a clean V3-API rewrite of the old pythongosssss Custom-Scripts node. Modern comfy_api, subgraph-safe, and part of a pack that also bundles a resource monitor, graph arranger, and node profiler - so you're not pulling in a whole legacy extension just for one alert.

How it works

The notification is created in your browser using the standard Notification API - the same one websites use - triggered by client-side JS when the node's onExecuted fires. The first time you add the node to a graph, the browser asks for notification permission; grant it once and ComfyUI can ping you from then on. The server just forwards your message text and passes the data through. Like Play Sound, the node forces re-execution every run, so the alert never gets swallowed by caching.

The inputs that matter

  • message - the notification body. Default: "Your workflow has completed." If you're running a multi-step pipeline, set it to something descriptive so the popup tells you which stage finished.
  • any - connect any output here to trigger the notification. This is your trigger wire; the data passes through unchanged.
  • mode - always notifies on every execution, or on empty queue to wait until the whole queue drains. For batch work, on empty queue is the setting that makes the notification actually useful - one ping at the end instead of thirty.
  • passthrough - the single output, your any input unchanged and type-matched, so it won't break anything wired downstream.

Installing it

In ComfyUI Manager, search "Enhancement Utils" and install the pack. Manually:

cd ComfyUI/custom_nodes
git clone https://github.com/phazei/ComfyUI-Enhancement-Utils.git
cd ComfyUI-Enhancement-Utils
pip install -r requirements.txt

Restart ComfyUI. The node lives under utils.

Where people get burned

  • If you click "Deny" on the permission prompt, you get silence forever - until you re-enable notifications for that site in your browser's site settings. There's no in-ComfyUI toggle that overrides the browser's decision.
  • It only fires from the tab that's running ComfyUI. Close the tab and nothing pings. Play Sound has the same limitation, for the same reason: these are client-side conveniences, not server-side alerts.
  • Don't stack it inside a loop. In always mode it fires every time the node executes - inside a batch that means a notification per item, which is not the calm alert you wanted. Use on empty queue and put it at the end of the pipeline.
Categoryutils

Inputs (3)

NameTypeDefaultDescription
messageSTRINGYour workflow has completed.The notification body text.
anyCOMFY_MATCHTYPE_V3Connect any output here to trigger the notification and pass the data through.
modeCOMBOalways'always' notifies every execution. 'on empty queue' only notifies when the queue is empty.

Outputs (1)

NameTypeDescription
passthroughCOMFY_MATCHTYPE_V3Passes the 'any' input through unchanged.