Doss Workflow Timer and Alarm
A stopwatch on the canvas that beeps when the render is actually done
Long renders are a game of chicken with your attention span. You tab out, come back, and either it's done or it's 40% through. Doss Workflow Timer and Alarm is the node that tells you which: a live stopwatch drawn right on the canvas, plus an optional chime when the workflow genuinely finishes.
The key word is genuinely. The node hooks ComfyUI's frontend execution events - execution_start flips it to Running, execution_success to Complete, execution_error to Error, execution_interrupted to Canceled. It deliberately does not treat that mid-run "executing with a null node" event as completion, which is exactly the bug that makes cheap timers flash "done" while your sampler is still churning. The status line shows Ready → Running → Complete so you always know what state you're in.
Here's the thing you need to accept up front: this node has zero wire connections. None. It's a display widget, not part of the data flow - you just drop it on the canvas and it starts working the next time you queue. Beginners (guilty) will try to plug something into it; there's nowhere to plug.
The settings that matter
All of its settings are widgets, not inputs:
timer_label(default "Workflow Timer"),show_timer_label,show_status,show_millisecondsfont_size(12–96),font_color,background_color,background_opacity(0–1),border_color,border_radius(0–32)- The alarm trio:
alarm_enabled,alarm_sound(PingorBeep),alarm_volume(0–100)
The ones you'll actually touch: font_size if the default 28 is too small to read from across the room, and the alarm settings. Defaults matter here - alarm_enabled is on and volume is 70, so this node beeps by default. If that drives you mad, disable it or set volume to 0. Color swatches include transparent for fill and border; a transparent background skips the card fill, a transparent border skips the stroke.
There's also a hide_node_ui toggle for "display-only mode": it shrinks the card, hides the Customize button, lets you drag the card from anywhere on it, and keeps double-click-to-customize working.
How the alarm works
The sound is generated in the browser with the Web Audio API - a square-wave ping at 880 Hz, or a two-tone sine beep - so there are no audio files to download and nothing to install. Because it's browser audio, if the alarm never plays, check whether the tab is muted or the browser is blocking autoplay; give the page a click once and Web Audio usually unblocks. It won't play at all if the alarm is disabled or volume is 0.
Installing it
ComfyUI Manager, search "Doss Node Suite", or:
cd ComfyUI/custom_nodes
git clone https://github.com/JamesDanielDoss/Doss-Node-Suite.git
Restart ComfyUI. It's frontend-only, so it's cheap: the backend just runs a noop per execution, and there are no dependencies or model files. The timer only runs while ComfyUI is actually executing a prompt, so it won't time your queue sitting idle. And like any widgets, your label, colors, and alarm settings save into the workflow JSON, so they travel with a workflow you share.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| timer_label | STRING | Workflow Timer | — |
| show_timer_label | BOOLEAN | true | — |
| show_status | BOOLEAN | true | — |
| show_milliseconds | BOOLEAN | false | — |
| hide_node_ui | BOOLEAN | false | — |
| font_size | INT | 2812–96 | — |
| font_color | STRING | #ffffff | — |
| background_color | STRING | #111111 | — |
| background_opacity | FLOAT | 0.850–1 | — |
| border_color | STRING | #3b82f6 | — |
| border_radius | INT | 80–32 | — |
| alarm_enabled | BOOLEAN | true | — |
| alarm_sound | COMBO | Ping | 2 options: Ping, Beep |
| alarm_volume | INT | 700–100 | — |
Outputs (0)
No outputs