Save Image to Cache
Stash the output in RAM and pull it over HTTP
- images
The fast way to get a finished image out of ComfyUI when you're driving it from an external app. Instead of writing the result to the output folder and dealing with the filesystem, this node parks the image in RAM and hands it back over plain HTTP. Acly's own note in the README: it's "typically faster than WebSocket, especially for large images." If you're building a tool and your outputs are chunky, this is the receive path you want.
It lives in the ComfyUI Nodes for External Tooling pack, the set Acly wrote so ComfyUI could be a headless backend for other software - the same plumbing under his widely-used Krita AI Diffusion plugin. The theme across the whole pack is "stop round-tripping images through disk," and this node is the high-throughput version of the receive side.
How it works
When the node runs, it stores the output image in memory and emits a JSON executed message over the WebSocket with "source": "http" and an image ID. Your client reads that ID and then does a normal HTTP GET /api/etn/image/{id} to download the actual bytes. The image sits in the cache for a few minutes, which is plenty of time to fetch it right after generation.
The split - notify over the socket, download over HTTP - is the whole trick. The WebSocket carries a tiny "it's ready, here's the id" message; the heavy PNG travels over a regular HTTP response, which is the transport that's actually good at moving big files. That's why it beats streaming the image bytes down the socket itself.
The inputs and outputs that matter
images(IMAGE) - the batch to cache. Wire your VAE Decode in. Batches are supported; each gets its own id in the message.format(defaultPNG) - the stored/served encoding. PNG is the default and the documented path; leave it be.
This is an output node, so it has no output sockets - its work is the side effect of caching and announcing the image. Treat it as a terminal in the graph, like Save Image. Nothing wires after it; your client does the rest by fetching the id.
How to install it
Install the pack once and you get every node. ComfyUI Manager: search ComfyUI Nodes for External Tooling, install, restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/Acly/comfyui-tooling-nodes.git
then restart. No model downloads, no heavy dependencies here.
Common issues & troubleshooting
The GET returns 404. The cache holds images for only a few minutes. If your client waits too long between reading the executed message and fetching, the image is gone - pull it promptly. Also double-check you're using the exact id from the message, not the node id.
You never see the message. The ready notification comes over the WebSocket as a JSON executed event with "source": "http". Make sure your client is subscribed to the socket for this prompt and is parsing those events, not just polling the output folder - this node deliberately never writes to disk.
Why not just use the WebSocket sender? For small images, do - Send Image (WebSocket) is simpler. This node earns its place on large outputs, where pulling over HTTP is meaningfully faster than streaming binary frames down the socket.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — | |
| format | COMBO | PNG | 2 options: PNG, JPEG |
Outputs (0)
No outputs