System Notification
ComfyUI will ping you the second the workflow finishes
- any
- passthrough
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-alwaysnotifies on every execution, oron empty queueto wait until the whole queue drains. For batch work,on empty queueis the setting that makes the notification actually useful - one ping at the end instead of thirty.passthrough- the single output, youranyinput 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
alwaysmode it fires every time the node executes - inside a batch that means a notification per item, which is not the calm alert you wanted. Useon empty queueand put it at the end of the pipeline.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| message | STRING | Your workflow has completed. | The notification body text. |
| any | COMFY_MATCHTYPE_V3 | Connect any output here to trigger the notification and pass the data through. | |
| mode | COMBO | always | 'always' notifies every execution. 'on empty queue' only notifies when the queue is empty. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| passthrough | COMFY_MATCHTYPE_V3 | Passes the 'any' input through unchanged. |