ComfyUI Node

Generate Image

Generate images on a RunPod serverless GPU while your PC does nothing

By turnbros·Created 11 months ago·Updated 10 months ago· 0
Generate Image
    • image
    • metadata
    instance_nameNo instances configured
    positive_prompta majestic dragon flying over a medieval castle
    negative_promptblurry, low quality, distorted
    checkpointnovaRealityXL_illustriousV70.safetensors
    width512
    height512
    steps50
    cfg5.0
    seed12345
    sampler_namedpmpp_2m_sde
    schedulerkarras
    denoise1.00
    batch_size1
    upscalefalse

    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 - an IMAGE tensor, batch-stacked, ready for preview or further processing. Decoded from the base64 frames the endpoint returns.
    • metadata - a STRING of 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.

    CategoryComfyBros/Image Generation

    Inputs (14)

    NameTypeDefaultDescription
    instance_nameCOMBONo instances configured1 options: No instances configured
    positive_promptSTRINGa majestic dragon flying over a medieval castle
    negative_promptSTRINGblurry, low quality, distorted
    checkpointSTRINGnovaRealityXL_illustriousV70.safetensors
    widthINT512128–2048
    heightINT512128–2048
    stepsINT501–150
    cfgFLOAT5.01–30
    seedINT12345-1–2147483647
    sampler_nameCOMBOdpmpp_2m_sde22 options: euler, euler_ancestral, heun, heunpp2, dpm_2, dpm_2_ancestral, +16
    schedulerCOMBOkarras7 options: normal, karras, exponential, sgm_uniform, simple, ddim_uniform, +1
    denoiseFLOAT1.000–1
    batch_sizeINT11–512
    upscaleBOOLEANfalse

    Outputs (2)

    NameTypeDescription
    imageIMAGE
    metadataSTRING