Nodes/ComfyUI_NetDist/Queue on remote (worker)
ComfyUI Node

Queue on remote (worker)

The per-GPU link in NetDist's multi-machine chain

By city96·Created 3 years ago·Updated 2 years ago· 507
Queue on remote (worker)
  • remote_chain
  • remote_chain
  • remote_info
remote_urlhttp://127.0.0.1:8288/
batch_override0
enabledtrue
outputsfinal_image

If RemoteQueueSimple is NetDist's answer for two GPUs, RemoteQueueWorker is the version for when you've got three, four, or more. It's the middle link in what the README calls the "advanced" pattern: RemoteChainStart packages the workflow, then you chain one RemoteQueueWorker per extra machine, each pointed at its own address with its own batch size, before RemoteChainEnd closes it out.

ComfyUI_NetDist is city96's pack for splitting execution across separate ComfyUI processes over HTTP - no shared memory, no real tensor parallelism, just one instance handing off a job to another and polling for the result. city96 is better known these days for ComfyUI-GGUF, the quantized-model loader; this is older, unrelated territory.

How it works

Each RemoteQueueWorker receives a remote_chain token (carrying the workflow, trigger, batch, and seed decided upstream), forwards the job to its own remote_url, and passes remote_chain onward so you can bolt on another worker for the next machine. Because the workflow now travels as JSON instead of being read live off the graph, a worker can set outputs to any rather than the default final_image - meaning the remote workflow doesn't need a FetchRemote node built into it at all, this side just grabs whatever the run actually produced.

The inputs and outputs that matter

  • remote_chain (REMCHAIN, required) - has to come from RemoteChainStart, or the previous worker in the chain. There's no other source for this type.
  • remote_url (default http://127.0.0.1:8288/) - point this at the specific GPU or machine this worker targets; every worker in a chain needs its own.
  • batch_override (0-8, default 0) - a per-worker batch size, overriding the chain's default; 0 falls back to whatever RemoteChainStart set.
  • enabled (true / false / remote) - kill switch for this individual worker.
  • outputs (final_image / any) - as above, controls whether this worker needs a final_image node matched on the remote side or just grabs whatever ran.

Outputs: remote_chain (pass to the next worker, or into RemoteChainEnd), and remote_info (feed to FetchRemote if you kept outputs on final_image and want that image back in this graph).

How to install it

Via ComfyUI Manager: search ComfyUI_NetDist. Manually:

cd ComfyUI/custom_nodes
git clone https://github.com/city96/ComfyUI_NetDist
pip install requests

Restart ComfyUI. requests is the pack's only dependency.

Common issues & troubleshooting

This node does nothing on its own. It needs RemoteChainStart upstream - remote_chain has no other source. If you're building this from scratch, start there, not here.

Chain builds but never fires. Same trap the README calls out for the whole advanced pattern: it "needs a fake image input to trigger" if nothing downstream actually depends on the chain's result. Wire a blank/dummy image in somewhere to force execution.

Mismatched GPUs, uneven speed. This is the actual reason people reach for the advanced pattern instead of RemoteQueueSimple - pairing, say, a fast card with a slower secondary one. batch_override on the slower worker's node is how you give it fewer images per round instead of an even split; real users pairing mismatched cards (a 4060 Ti with a spare 3060, in one report) have gotten a genuine, if modest, speedup this way.

Duplicate images across workers. Comes from a shared seed not being randomized - same issue as chained RemoteQueueSimple nodes, and the same fix.

Categoryremote/advanced

Inputs (5)

NameTypeDefaultDescription
remote_chainREMCHAIN
remote_urlSTRINGhttp://127.0.0.1:8288/
batch_overrideINT00–8
enabledCOMBOtrue3 options: true, false, remote
outputsCOMBOfinal_image2 options: final_image, any

Outputs (2)

NameTypeDescription
remote_chainREMCHAIN
remote_infoREMINFO