Nodes/comfy_remote_run/RemRun Input Graph(s) Output
ComfyUI Node

RemRun Input Graph(s) Output

The Same Node, But as a Destination

By LatentRat·Created 2 years ago·Updated 9 months ago· 12
RemRun Input Graph(s) Output
  • input_0
  • input_1
  • input_2
  • input_3
  • input_4
  • input_5
  • input_6
  • input_7
  • input_8
  • input_9
  • _ignore_
  • out_0
  • out_1
  • out_2
  • out_3
  • out_4
  • out_5
  • out_6
  • out_7
  • out_8
  • out_9
remote_urlhttp://127.0.0.1:8189/
total_timeout90.0
request_timeout45.0
serializationfancy_safetensors
max_size_mb32
gzip_compressionfalse
gzip_level9
lazily_transferfalse
skip_lazy_transfer_under_mb0.3
responsebinary
ws_compressionfalse
forward_progress_messageson
run_outputs_connected_to_inputsignore
inputs_when_locallazy
is_changedauto
run_syncfalse

Read the article on RemRun Input Graph(s) first, because this node is literally the same class with one flag flipped. Same inputs, same outputs, same remote-execution machinery. The only difference: OUTPUT_NODE is set to True.

What that changes, in ComfyUI terms, is that this node counts as a terminal for execution. When the graph runs, execution stops and waits here instead of just passing through. For this pack that's a meaningful distinction: it marks the remote run as the point of the workflow - "run everything upstream of me on the other machine, and this is where that work lands."

When you'd use it over the plain Input node

Reach for this when the remote run is the end of the branch and there's nothing interesting left to do locally. The README's offload pattern is a good example: if the whole point is to decode the VAE on the big machine and just preview the result, the Input Graph(s) Output node is the natural sink. It makes ComfyUI treat the remote execution as the "output node" of the graph, which matters for how prompts are constructed and when the queue considers the job done.

The plain Input node is the right call when you're splitting a workflow in the middle - run the sampler locally, then ship the decode upstream of the node and continue with upscaling or previews locally afterward. The Output variant is for when the remote does the heavy lifting and the local side is mostly the front door.

The inputs

Identical to RemRun Input Graph(s): remote_url, total_timeout, request_timeout, serialization, then the tuning set - max_size_mb, gzip_compression, gzip_level, lazily_transfer, skip_lazy_transfer_under_mb, response, ws_compression, forward_progress_messages, run_outputs_connected_to_inputs, inputs_when_local, is_changed, run_sync. Ten wildcard inputs (input_0 through input_9), ten wildcard outputs (out_0 through out_9).

The only input you'll actually set on a first run is remote_url. Everything else inherits the same sensible defaults as the Input node: fancy_safetensors serialization, 90-second total timeout, binary response.

Gotchas worth knowing

Because it's an output node, a remote run that hangs will hold the whole queue for as long as total_timeout allows - a hung VAE decode on the far side looks like a frozen ComfyUI to the local machine. Raise the timeout for big video jobs, and remember both instances need the pack installed, because the subgraph this node ships over contains the pack's internal Serializer/Deserializer nodes. No models to download, install is the standard Manager or git clone:

cd ComfyUI/custom_nodes
git clone https://github.com/LatentRat/comfy_remote_run

Restart, and it shows up as "RemRun Input Graph(s) Output" in the Remote Run menu.

CategoryRemote Run

Inputs (27)

NameTypeDefaultDescription
remote_urlSTRINGhttp://127.0.0.1:8189/ComfyUI instance URL
total_timeoutFLOAT90.00–86400Timeout for everything total (sending prompt and running) in seconds. 0 to disable.
request_timeoutFLOAT45.00.1–86400Prompt & data post timeout in seconds
serializationCOMBOfancy_safetensors3 options: safe_torch_pt, unsafe_torch_pt, fancy_safetensors
input_0opt*
input_1opt*
input_2opt*
input_3opt*
input_4opt*
input_5opt*
input_6opt*
input_7opt*
input_8opt*
input_9opt*
max_size_mboptINT320–8192
gzip_compressionoptBOOLEANfalse
gzip_leveloptINT91–9
lazily_transferoptBOOLEANfalse
skip_lazy_transfer_under_mboptFLOAT0.30–10240Even when lazily transferring inputs is enabled still always transfer inputs smaller than this size in MB directly.
responseoptCOMBObinary2 options: base64_result, binary
ws_compressionoptBOOLEANfalse
forward_progress_messagesoptCOMBOon2 options: on, off
run_outputs_connected_to_inputsoptCOMBOignore2 options: ignore, run
inputs_when_localoptCOMBOlazy2 options: lazy, disconnected
is_changedoptCOMBOauto run_every_time: Always treat as changed and re-run remote prompt every time. auto: When inputs_when_local is set to "disconnected" this should fix it not re-rerunning if the inputs changed. default_behaviour: Only rerun when inputs changed, this will not work correctly when inputs_when_local is "disconnected" as it can't detect changes then.
run_syncoptBOOLEANfalse
_ignore_optINTERNAL

Outputs (10)

NameTypeDescription
out_0*
out_1*
out_2*
out_3*
out_4*
out_5*
out_6*
out_7*
out_8*
out_9*