Remote Trigger
Read the loop's odometer and decide whether to keep going
- bool
- tick_index
Remote Trigger (class AsyncOutputRemoteTrigger) is the read-side of the AsyncOutput pack's remote-control pair. Remote Collect counts every time a loop ticks; this node reads that count for the same key_id and compares it against your conditions using a comparison operator. The result is a boolean that says "loop done" or "loop not done" - the value you wire into a switch or a blocker to stop generating once the loop has run its course.
What makes it feel "remote" is that the two nodes don't have to be near each other. You can advance the count in one branch of the graph (or from another workflow entirely - the counter is process-global) and gate the loop here. It's the same count-and-fire idea as AsyncOutputEmitter, but with the count and the comparison split into separate nodes and a richer set of operators: ==, <, >, <=, >=, !=. That's the flexibility the emitter's exact / greater_than_or_equal pair can't give you.
How it works
It reads ASYNC_OUTPUT_REMOTE_CONTROL_DATA[key_id]. If the key doesn't exist yet, it returns false and -1 (nothing has ticked). Otherwise it evaluates count <op> conditions for your chosen mode and returns the boolean alongside a tick_index. Enable tick_output and it also maintains a per-key tick counter (ASYNC_OUTPUT_REMOTE_CONTROL_TICK_DICT) that hands back the current tick index - useful for downstream logic that needs to know which iteration it's on, not just whether the loop is done. reset deletes both the count and the tick record.
The inputs that matter
key_id(STRING) - must match the Remote Collection node's key.conditions(INT, default 1) - the number you're comparing the count against.mode- the comparison operator (==,<,>,<=,>=,!=), default==.- Optional:
tick_output(BOOLEAN) - turn on to get a running tick index;reset(BOOLEAN) - clear this key's state.
Outputs: bool (BOOLEAN) - the comparison result, and tick_index (INT) - the current tick, -1 when there's nothing to report or tick output is off.
Installing it
No dependencies, no model files. ComfyUI Manager → search "AsyncOutput" → install and restart, or:
cd ComfyUI/custom_nodes
git clone https://github.com/teddy1565/ComfyUI-AsyncOutput
It's under AsyncOutput/Deprecated(ComfyUI NOT Turing complete)/RemoteControl.
Where people get burned
The usual suspects: a mismatched key_id returns false forever with no error, and the default auto-reset wipes the counter before the trigger ever sees it if the collect and trigger don't run inside the same queue pass. Note also this node is an output node (OUTPUT_NODE = True), so it shows up as a terminal in the graph - don't be surprised it renders as an endpoint rather than mid-pipeline. And the standing pack caveat applies: all this state dies with the process, so a restart silently resets the loop to "fresh," and if your loop logic assumed otherwise you'll get a surprise.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| key_id | STRING | — | |
| conditions | INT | 1 | — |
| mode | COMBO | == | 6 options: ==, <, >, <=, >=, != |
| tick_outputopt | BOOLEAN | — | |
| resetopt | BOOLEAN | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| bool | BOOLEAN | — |
| tick_index | INT | — |