ComfyUI Node

HoldUp

HoldUp waits on temperature or a timer

By usrname0·Created about a year ago·Updated 7 months ago· 5
HoldUp
  • input
  • *
use_waitTemperaturetrue
waitTemperature50
waitSeconds0

HoldUp is a pause button you can drop anywhere in a workflow. You wire whatever you want through it - a latent, an image, a model, a conditioning object, anything - and it holds on to it for a while before letting it through. It waits until your GPU has cooled to a temperature you pick, and/or for a fixed number of seconds. That's the whole job, and it does it cleanly.

Why would you want that? The author built it out of a "deep and abiding mistrust of the 12VHPWR connector" - the infamous power plug on RTX 40-series cards that made headlines for melting under sustained load. If you run big batch jobs back to back and your card sits at 80°C+ for an hour straight, the idea is to slip a cooling pause between generations. It's also just a handy throttle: people who've hit system crashes after a few hundred images in a row sometimes just need to slow the queue down, and a delay node does exactly that.

How it works

The mechanism is simple but there's one smart detail. The node reads GPU temperatures through the gputil library (which wraps nvidia-smi), checks the hottest card in the system, and while any GPU is above your target it sleeps two seconds and redraws a text progress bar in the terminal. It even tracks the peak temperature it saw at the start, so the progress bar doesn't jump backwards if the card spikes mid-cooldown. Once everything is at or below target, it moves on to the second phase: if you set waitSeconds, it counts down one per second with a little terminal readout, prints a timestamp, and hands your data back untouched.

The smart detail: it overrides IS_CHANGED to always return NaN. In ComfyUI that means the node is never treated as "cached" - the wait always runs, even on a re-run where nothing else changed. If it just returned the input, ComfyUI would happily skip it and your cooldown would silently never happen.

The inputs that matter

Three of the four inputs are things you'll actually touch:

  • use_waitTemperature (on by default) - master switch for the temperature-based wait. Turn it off and HoldUp becomes a pure delay node.
  • waitTemperature - target temp in °C, default 50, clamped to 45–90. That range is realistic for "cooled down enough to continue" on an air-cooled card; you can't set it below 45, so don't plan on idling it down to room temperature.
  • waitSeconds - the fixed delay, default 0, max 120. This runs after the temperature wait, so you can combine "cool to 55°C, then another 30s."

The input is the universal * type and the output is the same data unchanged - that's what makes it a passthrough you can splice into any connection. One honest caveat: the wait is synchronous, so it blocks the whole execution thread, not just one branch. That's almost certainly what you want, but don't use it to stagger parallel branches expecting them to run independently.

Installing it

Easiest path is ComfyUI Manager - search "HoldUp" and install; its only dependency is gputil, which Manager grabs for you. The pack is also on the Comfy Registry, so comfy node install holdup works if you use the CLI. Manually:

cd ComfyUI/custom_nodes
git clone https://github.com/usrname0/ComfyUI-HoldUp.git
cd ComfyUI-HoldUp
pip install -r requirements.txt

Then restart ComfyUI. That's it - no model files, no API keys, nothing heavy.

Where people get burned

Because temperature reads go through gputil, which talks to nvidia-smi, it only sees NVIDIA GPUs. On an AMD or Intel card, or a Mac, it finds no GPUs and skips the cooldown silently - the timer still runs, but the temperature logic does nothing. If your card never seems to "cool down" (or never waits at all), open the terminal: a gputil failure prints Error accessing GPU information... and bails out rather than blocking your workflow. Worth confirming nvidia-smi works on your machine before you trust this.

Also worth a reality check: at least one hardware-minded person on the r/comfyui thread where this was announced pointed out that aggressive start/stop cycling can arguably stress hardware more than steady load. The node is a safety blanket more than a proven longevity fix - use it if it gives you peace of mind or if throttling genuinely stabilizes long queues, not as a substitute for making sure your connector is actually seated.

Categoryutils

Inputs (4)

NameTypeDefaultDescription
input*
use_waitTemperatureBOOLEANtrue
waitTemperatureINT5045–90
waitSecondsINT00–120

Outputs (1)

NameTypeDescription
**