Nodes/Jovimetrix/DELAY (JOV) βœ‹πŸ½
ComfyUI Node

DELAY (JOV) βœ‹πŸ½

Pause your workflow, hold your data, then let it through

By AmoranoΒ·Created 3 years agoΒ·Updated 12 months agoΒ· 397
DELAY (JOV) βœ‹πŸ½
  • πŸ“₯
  • πŸ“€
◄⏱0β–Ί
β—„ENABLEtrueβ–Ί

DELAY (JOV) βœ‹πŸ½ does one thing, and does it on purpose: it stops your workflow for a set amount of time, holds whatever data you feed it, and then lets it through. It's ComfyUI's version of a sleep() - a pause node with a pass-through payload - and it's the kind of thing you don't need until you suddenly, specifically, do.

Why would you ever want to pause generation? A few real cases: you're polling an external service (an API result that needs a few seconds to land) and don't want to hand-build a retry loop; you're doing a live/reactive setup where a beat of dead air matters; or you're choreographing multiple parallel branches to finish in sequence. It's also a genuinely useful debugging tool - a deliberate pause between stages turns "the whole thing ran at once and I can't see what happened" into "the whole thing ran at once, but I can watch stage one."

The inputs

Three optional inputs:

  • πŸ“₯ - the data to hold until the timer completes. This is what makes it a pass-through: whatever you plug in comes out the other side (πŸ“€) after the wait. Plug nothing in and it's just a pause.
  • ⏱ (INT, default 0, min βˆ’1) - how long to delay. 0 means no delay; the author's own tooltip says exactly that. Negative values fall back to the maximum delay, which has been extended to enormous lengths (the update log mentions "150+ days"), so a negative value is effectively "wait until someone stops me."
  • ENABLE (BOOLEAN, default true) - the master switch. The tooltip calls it "Enable or disable the screensaver," which is the author's quirky way of describing the hold; toggle it off to bypass the pause entirely without deleting the node.

During the wait, the node periodically checks for an interrupt message, so you can cancel a long delay from the UI instead of killing the whole run - that's in the node's own description and it's a nicer failure mode than most pause hacks you'll improvise.

How it works

The node blocks on a timer loop, sending progress updates while it waits, and returns whatever was on the input port when the timer completes. Nothing about the data is modified - it's held in memory, not processed. The whole thing is CPU-side and costs nothing except wall-clock time, so it's safe to leave in a workflow.

Installing it

Part of Jovimetrix:

  • ComfyUI Manager - search "Jovimetrix", install.
  • Manual - git clone https://github.com/Amorano/Jovimetrix.git into custom_nodes/, then pip install -r requirements.txt.

No models. Dependencies: numpy, OpenCV, Pillow, matplotlib, cozy_comfyui. Needs ComfyUI 0.1.3+.

The honest take

This is a niche node, and the README-level reality is that most people never need it - but the people who need it really need it. The trap is forgetting the default: 0 means "no delay," so if you drop the node in and nothing pauses, check the timer before suspecting a bug. And a warning: an accidentally-large delay with the ENABLE toggle on will sit there looking hung - the progress bar is your friend, and the interrupt message is your exit. Jovimetrix's update log shows the delay node has been iterated on (CSS fixes, timer extension, tooltip cleanup), which is a sign it has a real if small user base. It's not the node you'll put in every workflow - it's the one you'll remember when a workflow needs a beat.

CategoryJOVIMETRIX πŸ”ΊπŸŸ©πŸ”΅/UTILITY

Inputs (3)

NameTypeDefaultDescription
πŸ“₯opt*The data that should be held until the timer completes.
⏱optINT0How long to delay if enabled. 0 means no delay.
ENABLEoptBOOLEANtrueEnable or disable the screensaver.

Outputs (1)

NameTypeDescription
πŸ“€*P