LoadBase64FromRemote
Pull images back from another ComfyUI server, no shared drive needed
- base64
So you've got a second machine that can render faster than your main one, and you're tired of running its browser separately and copying files back by hand. LoadBase64FromRemote is the "bring it home" half of the comfyui-remote-tools pack: you give it a workflow for the remote server, it runs that workflow over the network, and it hands you back the remote node's base64 image output as a string, right inside your local graph. If you've ever wanted to split work between boxes without them sharing a disk, this is the DIY version of that.
It's a genuinely lightweight mechanism, and worth understanding before you wire it up. The node POSTs your remote workflow to http://<address>/prompt - the exact same API the ComfyUI web UI uses - then opens a WebSocket on ws://<address>/ws and waits for the run to finish. Two details matter. First, before dispatching, it renames the target node id to N@<randomjobid>, which is a known ComfyUI trick: a node id with an @ suffix is treated as a fresh node, so the remote server re-executes it instead of serving a cached result. Second, when the executed message arrives, it grabs output[remote_node_output], JSON-encodes it, and returns it. That's the whole thing - base64 over HTTP, no filesystem, no shared folder.
The inputs are mostly strings, and three of them do all the work:
- remote_address - host and port only, no scheme, no trailing slash. The default
127.0.0.1:8188only works for a server on the same machine; for another box it's192.168.1.50:8188or whatever your LAN IP is. - remote_node_id - the id of the node in the remote workflow whose output you want. In the prompt JSON, node ids are the keys.
- remote_node_output - the output field to read, default
base64Images. The remote node has to actually emit a field with that name, or you get[]. - remote_prompt - the remote workflow as JSON. This is where beginners get burned: it must be the API-format prompt object, not the whole saved
.jsonwith itsuisection, and every node id you reference has to exist in it.
The single output is base64, a STRING holding a JSON-encoded list like ["data:image/png;base64,iVBOR..."]. Feed it into anything downstream that accepts base64 image strings - that's the wire into the rest of your graph.
The natural setup is master/worker: SendBase64ToRemote ships a job to the worker box, and this node fetches the result back into your main graph so you can keep post-processing locally. If what you actually want is a fleet of machines load-balanced for batch rendering, the serious tool is NetDistro - this pack is the "I have exactly one other box and I'd rather not set up an entire cluster" option.
Installing is painless, and rare in that it downloads no models and needs nothing heavy:
# ComfyUI Manager: search "comfyui-remote-tools" and install, then restart
cd ComfyUI/custom_nodes
git clone https://github.com/linshier/comfyui-remote-tools
# restart ComfyUI
Its requirements.txt asks for websocket-client and a line that says request (a typo for requests, which every ComfyUI install already has). The code actually imports requests and websocket, both of which are common enough to be a non-issue.
Where people get burned:
- Invalid JSON in remote_prompt -
json.loadsfails and the node errors immediately. Paste it into a JSON validator first if you're unsure. - Wrong node id or output name - nothing matches, the loop ends, and you silently get
[]. There's no error telling you the name was wrong. - Firewall / unreachable address - you'll see a connection failure on the POST. The remote has to be reachable on port 8188.
- No auth, plain HTTP - this node sends no credentials. ComfyUI's
/promptendpoint is unauthenticated by default, so anyone who can reach that port can run arbitrary workflows. Don't point this at a box that's exposed to the internet (the ecosystem has a whole PSA literature about exactly this). - It can hang - the WebSocket receive loop has no timeout. If the remote dies mid-job, the node waits forever; kill the execution and re-run.
One more thing to know: the pack is a small, low-maintenance utility (last touched in 2024, v0.1). That's fine - it only leans on ComfyUI's stable /prompt and /ws API, so it doesn't need constant updates. It just works, quietly, until you ask it to do something clever.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| remote_address | STRING | 127.0.0.1:8188 | — |
| remote_node_id | STRING | 1 | — |
| remote_node_output | STRING | base64Images | — |
| remote_prompt | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| base64 | STRING | — |