Brekel Queue ETA
The node that answers 'so when will this batch be done?'
Queue 40 prompts at 40 seconds each and you have 25 minutes to spend doing anything else. ComfyUI's sidebar tells you how many items are left, not whether that is ten minutes or an hour and a half. Brekel Queue ETA does, learned from your own machine rather than guessed from a progress bar.
What it actually is
A display node. BrekelQueueETA has no inputs, no outputs and never executes - its function is a noop reporting zero return types. So it cannot break a workflow or show up as a missing dependency in someone else's graph, and leaving one parked in the corner of every canvas costs nothing. They all read the same stats.
The pack around it is a grab-bag of plumbing - prompt enhancers, a resolution selector, image load/save with metadata, a LoRA loader - from Brekel, better known for his Kinect-era motion capture tools. None of it samples pixels; it is utility-layer stuff, which is where this node sits too.
How the estimate works
The interesting part is that it is not a UI trick. At startup the pack wraps ComfyUI's own PromptQueue.get and task_done, timing every prompt from the moment it leaves the queue until it is marked done - the exact span ComfyUI prints as "Prompt executed in". All of it runs server-side, so closing the tab doesn't lose the countdown.
Workflows are identified by a SHA-1 fingerprint of the nodes that actually run - everything upstream of the outputs, their class types and their connections. Widget values are excluded, so changing the seed or the prompt text stays in the same bucket. Each bucket keeps its last ten run times and the estimate is their median: the first run of a session and a fully cached re-run are both outliers, and a median shrugs them off.
Only successful runs are recorded; interrupted and failed prompts are ignored. A workflow that has never finished a run shows a – and a + next to the time left, meaning "at least this much". Stats live in brekel_queue_eta.json in ComfyUI's user folder and survive restarts.
What you see on screen
There's nothing to wire up - add it and queue something. After the first prompt of a workflow finishes, the panel shows how many prompts are left with the estimated time and wall-clock ETA, a progress bar counted from the last time the queue was empty, and a table with one row per workflow type: queued count, median run time, runs recorded, anything queued sorted first. UI-queued runs are labelled with the workflow file name, API-queued ones with a short hash.
A Reset stats button (click twice to confirm) forgets everything, and right-clicking the node resets one workflow. Every finished prompt also prints a line to the console - [Brekel Queue ETA] my_workflow: 17.43s (median 17.90s over 6 runs) | 12 left, ~3m 35s, ETA 14:32:10 - which is what you actually want when ComfyUI runs headless.
Shut down when the queue is done
Tick the box and when the queue empties a five-minute countdown starts, with a Cancel shutdown button on the node. Windows gets shutdown /s /t 300; on Linux it runs shutdown -h +5, so the shutdown command has to be permitted for the user running ComfyUI.
Two caveats bite. It is never remembered - off after every restart, re-tick each time - and queueing new work during the countdown calls it off, re-arming when that work finishes. The queue also counts as done when it is empty, so a failed last prompt still shuts the machine down. On Windows, save your other work first.
Installing it
ComfyUI Manager → Install Custom Nodes → search Brekel, restart. Or by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/Brekel/ComfyUI-Brekel.git
cd ComfyUI-Brekel && pip install -r requirements.txt
One thing worth knowing: that requirements.txt is bitsandbytes and accelerate, and they exist for the pack's Prompt Enhancer (LLM) node, not this one. The queue ETA module imports nothing but the standard library, so a missing bitsandbytes is somebody else's problem - it will not stop this node working.
Where people get it wrong
Change steps, resolution or batch size inside the same workflow and the fingerprint doesn't move, so the old median sticks around and the ETA lags until ten new runs land - reset that workflow's stats if it's badly off. And a queue of workflows that have never run shows a minimum (+) instead of a real ETA, because there is genuinely nothing to predict from yet.
One last thing: the console message The queue is already being timed by another copy of this node pack means the pack is installed twice. The first copy does the work, the second backs off - registering the same routes twice would stop ComfyUI from starting.
Inputs (0)
No inputs
Outputs (0)
No outputs