Nodes/comfy_remote_run/RemRun JSON Sync
ComfyUI Node

RemRun JSON Sync

The Same Trick, Without the Async

By LatentRat·Created 2 years ago·Updated 9 months ago· 12
RemRun JSON Sync
  • input_0
  • input_1
  • input_2
  • input_3
  • input_4
  • input_5
  • input_6
  • input_7
  • input_8
  • input_9
  • *
  • *
  • *
  • *
  • *
  • *
  • *
  • *
  • *
  • *
remote_urlhttp://127.0.0.1:8189/
total_timeout90.0
request_timeout45.0
serializationfancy_safetensors
JSON
max_size_mb32
gzip_compressionfalse
gzip_level9
lazily_transferfalse
skip_lazy_transfer_under_mb0.3
responsebinary
ws_compressionfalse
forward_progress_messageson
is_changedfalse

This is RemRun JSON's sibling, and the difference is one word in the name. Same inputs, same outputs, same remote-execution machinery - but where RemRun JSON runs its websocket wait asynchronously via asyncio, RemRun JSON Sync just blocks until the remote run finishes. That's the entire distinction.

Which one should you use? Honestly, for most people it doesn't matter. Both nodes sit in ComfyUI's execution thread, both return the same deserialized outputs, and the practical difference is invisible unless you're doing something where the async version's non-blocking behavior matters - and if you're at that level, you already know which side of that trade you want.

What it's for

The Sync variant is the one the pack's main Input node picks when you set its run_sync option. Under the hood, RemRun Input Graph(s) expands into a RemRun JSON node - async by default, Sync when you asked for it. So you'll meet this node as a generated step inside a larger workflow, or when you want a plain, synchronous building block for scripting: send JSON, block, get result. No asyncio plumbing to reason about, one less way for a run to surprise you.

The inputs

Identical to RemRun JSON: remote_url, total_timeout, request_timeout, serialization, the required JSON string, then max_size_mb, gzip_compression, gzip_level, lazily_transfer, skip_lazy_transfer_under_mb, response, ws_compression, forward_progress_messages, is_changed. Ten wildcard inputs, ten wildcard outputs. Set remote_url, paste the workflow into JSON, run.

The one behavioral warning: synchronous means blocking. A remote job that hangs will hold execution for as long as total_timeout allows, and with the default 90 seconds that's a frozen-feeling UI. If you're going to send big video workflows through the Sync node, raise total_timeout deliberately - or reach for the async RemRun JSON instead and let the node scheduler do its thing.

Install is the same shared pack on both machines, websockets plus requests, no models:

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

Restart, and it's in the Remote Run menu under "RemRun JSON Sync". If you only ever use the Input node, you may never add this one yourself - that's fine. It's here for when you want the raw synchronous control.

CategoryRemote Run

Inputs (24)

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
JSONSTRING
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
is_changedoptBOOLEANfalse

Outputs (10)

NameTypeDescription
**
**
**
**
**
**
**
**
**
**