Generate Image
Generate images on a RunPod serverless GPU while your PC does nothing
- image
- metadata
Generate Image is the flagship RunPod node in ComfyBros: it sends a text-to-image job to a RunPod serverless endpoint running ComfyUI, waits for it to finish, and pulls the finished image back into your graph as a normal IMAGE tensor. Your local machine never touches the diffusion math - no GPU work, no model loaded in VRAM. It's remote generation wearing a ComfyUI skin.
That trade is the whole appeal. Your local box might have 8 GB of VRAM and die at SDXL; the RunPod endpoint is a rented GPU that costs you per second of actual compute and then shuts down when idle. The catch is the waiting: serverless endpoints cold-start, and the pack's own Ollama node comments that coldstart can take around 240 seconds. A generation job can sit "In queue" for minutes before the first pixel exists. If you're patient and want SDXL/Illustrious-class quality from a weak machine, this is the pattern; if you need instant feedback, it's not.
Before you can use it: configure an instance
The instance_name dropdown is not a free-text box - it's populated from RunPod endpoints you've configured, stored in ComfyUI's settings file at user/default/comfy.settings.json under serverlessConfig.instances. Each entry needs a name, an endpoint (your RunPod endpoint URL), and an auth_token. If you haven't added any, the dropdown shows only "No instances configured", and running the node fails with "Instance name is required." That's the first wall every new user hits, and it's entirely a setup problem, not a code one.
The inputs that matter
Beyond the instance, it's a familiar sampling panel: positive_prompt and negative_prompt (multiline), checkpoint (a string naming a model on the endpoint - default novaRealityXL_illustriousV70.safetensors), width/height (128–2048, step 16), steps (default 50), cfg (default 5), seed (12345; -1 means random on the endpoint), sampler_name (22 choices incl. dpmpp_2m_sde, the default), scheduler (7 choices, default karras), denoise, batch_size (1–512), and upscale (a server-side upscale flag). All of these are sent as a payload to the endpoint - the node is a client, not a sampler.
Outputs
image- anIMAGEtensor, batch-stacked, ready for preview or further processing. Decoded from the base64 frames the endpoint returns.metadata- aSTRINGof JSON: filenames, the parameters echoed back, execution time, delay time, and status. Wire it into a text display to see what actually happened.
There's a newer wrinkle in the code worth knowing: for large batches the endpoint may offload results to a Cloudflare R2 bucket and return a ZIP pointer instead of inline frames. The node handles that, but only if your settings include an R2 config (serverlessConfig.offloadBucket with account ID, bucket name, and keys) - and it needs boto3 installed, which isn't in the pack's declared deps. If you hit ModuleNotFoundError: boto3 on a batch job, that's why.
Installing it
ComfyBros installs like any custom node pack. ComfyUI Manager - search "ComfyBros" - or:
cd ComfyUI/custom_nodes
git clone https://github.com/turnbros/ComfyBros
Then restart ComfyUI. The README references a requirements.txt that doesn't exist; the declared deps are in pyproject.toml (pillow, numpy, requests). The node also imports boto3 for R2 offloads, so:
pip install boto3
It lives under ComfyBros/Image Generation.
Gotchas
The three walls, in order: no configured instance (the dropdown is empty), the cold-start wait (minutes, not seconds - budget for it), and network failures on flaky connections (the node polls the endpoint's status endpoint with a long timeout and retries). Also note the checkpoint field is just a string - if you typo a model name that doesn't exist on the endpoint, the job fails server-side. Check what's actually installed there with the pack's Module Management node before guessing.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| instance_name | COMBO | No instances configured | 1 options: No instances configured |
| positive_prompt | STRING | a majestic dragon flying over a medieval castle | — |
| negative_prompt | STRING | blurry, low quality, distorted | — |
| checkpoint | STRING | novaRealityXL_illustriousV70.safetensors | — |
| width | INT | 512128–2048 | — |
| height | INT | 512128–2048 | — |
| steps | INT | 501–150 | — |
| cfg | FLOAT | 5.01–30 | — |
| seed | INT | 12345-1–2147483647 | — |
| sampler_name | COMBO | dpmpp_2m_sde | 22 options: euler, euler_ancestral, heun, heunpp2, dpm_2, dpm_2_ancestral, +16 |
| scheduler | COMBO | karras | 7 options: normal, karras, exponential, sgm_uniform, simple, ddim_uniform, +1 |
| denoise | FLOAT | 1.000–1 | — |
| batch_size | INT | 11–512 | — |
| upscale | BOOLEAN | false | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| metadata | STRING | — |