ComfyUI Node

Ino Relay

Force execution order without touching your data — the traffic-cop node

By nobandegani·Created about a year ago·Updated 2 months ago· 6
Ino Relay
  • execute
  • relay
  • execute
  • relay

ComfyUI runs a node the moment its inputs are ready. That's usually what you want - until it isn't, and a file-helper node fires before the generation it depends on has actually finished, because nothing connected them. Ino Relay is the fix: it passes through two values of any type, untouched, and its real job is ordering. The description is honest about it: "Passes through two values of any type. Useful for controlling execution order."

It's the simplest node in the pack and one of the most underrated. There's a whole category of ComfyUI pain that's really just "node ran too early," and a relay is the standard patch.

How it works

Two inputs, two outputs, zero processing. execute passes straight through to execute, and relay to relay - whatever you plug in comes out the other side identical. The trick is what you do with the passthrough: wire something slow into execute (or wire the relay into a path that forces ordering), and anything that consumes the relay's output can't run until the thing feeding execute has completed. You're using data flow to express dependency - which is exactly how ComfyUI thinks.

Because both ports accept any type (COMFY_MATCHTYPE_V3), you can relay an image, a model, a string, whatever. No enabled toggle on this one, no config - it's a pure utility.

Inputs and outputs

  • execute - the "trigger" passthrough; plug in the long-running upstream here to force ordering.
  • relay - the "payload" passthrough; the value you actually want forwarded.

Outputs mirror them: execute and relay, both the same types they came in as.

Where it wires in

The pattern that saves people: you have a download or file-op node that must finish before a generation starts, but there's no natural data connection between them. Run the slow op into execute on one side, and have the generation's trigger come from a chain that includes the relay's output - the generation waits, the relay never alters a byte. The same idea gates batches, waits for an S3 upload before deleting a local file, or just makes a workflow's order legible.

Installing it

Part of ComfyUI-InoNodes. ComfyUI Manager → search "ComfyUI Ino Nodes" → install → restart. Manual:

cd ComfyUI/custom_nodes
git clone https://github.com/nobandegani/ComfyUI-InoNodes
cd comfyui_ino_nodes
pip install -r requirements.txt

Restart after. No keys, no dependencies beyond the pack core.

Common issues

The honest caveat: a relay enforces ordering only along the paths you actually wire. If the thing you want to delay isn't connected to the relay's outputs, nothing is guaranteed - people wire a relay, see no change, and assume it's broken. It isn't; the dependency just wasn't expressed. Also remember it doesn't wait for anything on its own - both inputs must be present for it to run, so if you feed execute from a slow node, execution of the relay (and everything downstream of it) waits on that node completing. That's the whole point, and it's the closest thing ComfyUI has to a "please just run this first" button.

CategoryInoExtraNodes

Inputs (2)

NameTypeDefaultDescription
executeCOMFY_MATCHTYPE_V3
relayCOMFY_MATCHTYPE_V3

Outputs (2)

NameTypeDescription
executeCOMFY_MATCHTYPE_V3
relayCOMFY_MATCHTYPE_V3