Queue on remote (start of chain)
Kicks off NetDist's advanced multi-GPU chain
- workflow
- remote_chain
RemoteQueueSimple is fine for two GPUs. Past that, ComfyUI_NetDist has a second pattern the README calls "advanced" - meant for setups with more than two GPUs where each machine needs its own batch size and address, rather than one node doing everything. RemoteChainStart is where that chain begins.
The idea: instead of a single node holding the workflow, trigger, batch, and seed all at once, you split that job apart. This node packages the workflow plus the shared trigger/batch/seed settings into a token, and you attach a RemoteQueueWorker for each additional GPU downstream, each with its own remote_url and batch_override. It's the same author's pack, city96 - the ComfyUI-GGUF person - this is the older, unrelated distributed-execution side of his work.
How it works
Where RemoteQueueSimple reads the live graph automatically, this node needs the workflow handed to it explicitly as JSON - usually straight from LoadCurrentWorkflowJSON, or a previously-saved one via LoadDiskWorkflowJSON. That JSON, plus the trigger/batch/seed settings, becomes a remote_chain token you pass to the first RemoteQueueWorker, which forwards it (and can override the batch) to the next one, and so on down the line until RemoteChainEnd closes it out.
The upside the README calls out directly: because the workflow travels as its own JSON payload rather than being read live off "final_image," you can set a worker's outputs to any instead of the default final_image - meaning the remote workflow doesn't need a FetchRemote node baked in at all, it just runs whatever it runs.
The inputs and outputs that matter
workflow(JSON, required) - the graph to send down the chain. Feed this fromLoadCurrentWorkflowJSONfor a live snapshot, orLoadDiskWorkflowJSONfor a saved one.trigger(on_change/always) - same firing-condition control asRemoteQueueSimple; flip toalwaysif a change you made isn't reaching the workers.batch(1-8, default 1) - the default batch size every downstream worker inherits, unless a worker's ownbatch_overridesets something else.seed(0 to ~1.8×10¹⁹, default 0) - the shared seed base for the chain.
Output: remote_chain (REMCHAIN) - feed straight into the first RemoteQueueWorker.
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. Just the one dependency for the entire pack.
Common issues & troubleshooting
The whole chain silently does nothing. The README's own note on this pattern: it "needs a fake image input to trigger" - nothing in this branch is an IMAGE type, so if nothing downstream actually depends on the chain's output, ComfyUI never bothers executing it. Wire a blank/dummy image into whatever's needed to force the branch to run.
Every worker seems to reuse the same result. That's the shared seed by design - the README calls this pattern "a bit jank" for exactly this reason. Randomize the seed per run rather than fixing it if you're seeing repeats across machines.
workflow input rejects what you fed it. It needs to be an actual queueable graph JSON, not a hand-edited or partial file - malformed JSON here is the most common reason a chain builds fine but produces nothing when queued.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| workflow | JSON | — | |
| trigger | COMBO | 2 options: on_change, always | |
| batch | INT | 11–8 | — |
| seed | INT | 00–18446744073709550000 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| remote_chain | REMCHAIN | — |