Nodes/civitai-comfy-nodes/sdxl / sdcpp / createImage
ComfyUI Node

sdxl / sdcpp / createImage

Your favorite checkpoint, rendered on Civitai's fleet

By civitai·Created 2 months ago·Updated about a month ago· 42
sdxl / sdcpp / createImage
  • model
  • vae_model
  • loras
  • embeddings
  • api_config
  • images
  • errors
  • workflow_id
  • raw_json
prompt
output_format
image_metadata
negative_prompt
sample_method
schedule
steps20
cfg_scale7.00
seed0
quantity1
u_cache
width1024
height1024

You pick the checkpoint, and Civitai's servers do the math. This is the official Civitai Comfy node for text-to-image on any SDXL model you point at it - a createImage recipe running on Civitai's cloud "sdcpp" engine, which is just the SD.cpp backend they run on their fleet. No VRAM, no model download, no checkpoint sitting in your models/ folder. Your graph ends up looking exactly like a local text-to-image setup: prompt in, IMAGE out - the difference is the pixels get made on someone else's GPU and you get billed in Buzz for it.

It's part of the official civitai/civitai-comfy-nodes pack (about 160 nodes generated from their Orchestration API spec). This is the "cloud" half of the API-wrapper story the community is rightly split on: it's the only way to get an SDXL generation when you have no GPU at all, but if you have any card at all, locally is cheaper per image. Reach for it when you want to prototype a checkpoint you haven't downloaded, or run an SDXL LoRA test from a machine that can't hold the model.

How it works

Under the hood this node is a thin HTTP client. It builds a payload from your inputs, submits it to https://orchestration.civitai.com with a discriminator of engine: sdcpp, ecosystem: sdxl, operation: createImage, long-polls until the job finishes (30-minute default timeout, override with CIVITAI_COMFY_TIMEOUT), then converts the returned image into a native ComfyUI IMAGE tensor. The node even shows the workflow id and the Buzz cost on its face when it's done. Nothing about this is local except the graph.

The inputs that matter

  • prompt (required, multiline) - same prompt you'd give a local KSampler. SDXL's dual-CLIP encoder means natural language works; tag soup also works.
  • model (required, CIVITAI_AIR) - this is not a text widget. Wire a Civitai Model Selector node here and use its Browse button to pick any SDXL checkpoint on Civitai.
  • negative_prompt - SDXL does listen to it; leave it blank and the engine uses none.
  • steps / cfg_scale - defaults of 20 and 7 are the classic SDXL starting point; bump steps toward 30 for finicky realism checkpoints.
  • width / height - default 1024×1024, SDXL's native resolution. Going much off-square is fine; going to 2048 on a base model without an upscaler usually just means mush.
  • vae_model, loras, embeddings - all wired via the pack's selector loaders (Civitai Model / LoRA / Embedding Selector). SDXL exposes an embeddings input because the sdcpp pipeline auto-applies each embedding to the positive prompt.
  • u_cache - off or normal; Civitai's UNet-cache acceleration. Try normal if generations feel slow and you're paying per image.

Install

This is a pack install, same for every node in it:

  • ComfyUI Manager → Custom Nodes Manager → search "Civitai Comfy Nodes" (publisher civitai) → Install → restart.
  • Or from source: cd ComfyUI/custom_nodes && git clone https://github.com/civitai/civitai-comfy-nodes.git, then pip install -r civitai-comfy-nodes/requirements.txt (the only dependency is requests), then restart.

Common issues

The #1 beginner stumble is no credentials. Wire a Civitai Auth node into api_config, or set the CIVITAI_API_TOKEN environment variable to a key from civitai.com/user/account. Headless installs must use the env var - browser OAuth won't pop on a remote box.

Second: it costs Buzz, every single time. There's no free tier, and the cost lands in whatever wallet the job bills to (the node shows it). A quick "did it work" test at quantity 12 is twelve billable jobs, so start with quantity: 1.

And a pack-level caveat worth knowing: this is an official early-preview release - the README says nodes, APIs, and behavior "may change without notice." If a node stops behaving, check the repo for updates before chasing your own config.

CategoryCivitai/Image/sdxl/sdcpp

Inputs (18)

NameTypeDefaultDescription
promptSTRING
modelCIVITAI_AIR
output_formatoptCOMBO4 options: , jpeg, png, webP
image_metadataoptSTRINGExternal metadata that will be stored with the image
negative_promptoptSTRING
sample_methodoptCOMBO16 options: , euler, heun, dpm2, dpm++2s_a, dpm++2m, +10
scheduleoptCOMBO12 options: , simple, discrete, karras, exponential, ays, +6
stepsoptINT201–150
cfg_scaleoptFLOAT7.000–30
seedoptINT00–4294967295
quantityoptINT11–12
vae_modeloptCIVITAI_AIR
lorasoptCIVITAI_LORAS
embeddingsoptCIVITAI_EMBEDDINGS
u_cacheoptCOMBO3 options: , off, normal
widthoptINT102464–2048
heightoptINT102464–2048
api_configoptCIVITAI_CONFIGOptional Civitai Auth connection; defaults to CIVITAI_API_TOKEN or stored OAuth login.

Outputs (4)

NameTypeDescription
imagesIMAGE
errorsSTRING
workflow_idSTRING
raw_jsonSTRING