Generated reference · ComfyUI workflow · chroma

Chroma Text-to-Image

Full-precision Chroma text-to-image on RunPod serverless (Chroma1-HD, UnCanny v1.3 BF16, Photonic Fusion BF16, UnGloryHail BF16 selectable). Reference sampler graph: euler + beta(0.45/0.45) scheduler, CFG guider, flow shift 1.0.

chroma25nodesGPU A5000out image~35sv1.0.0

On this page
25Graph nodes
22Node classes
12Inputs
14Models

Tags: chromarunpod-serverlessvolume-backedtext-to-image

Inputs (12)#

The typed parameter surface callers bind when they request this workflow. Enum options and numeric bounds are the values the workflow document declares.

promptstringrequireddefault a close-up photograph of a tiger's eye, intricately detailed fur, natural lighting, sharp focus, highest quality
Positive prompt in natural prose (Chroma responds to descriptive photography language)
negative_promptstringdefault This greyscale unfinished sketch has bad proportions, is featureless and disfigured. It is a blurry ugly mess with excessive gaussian blur, riddled with watermarks and signatures, smudged with leaking colors and nonsensical orientation of objects. Messy and abstract, filled with artifacts that disrupt the coherency of the composition, extreme chromatic aberrations and inconsistent lighting. Dull, monochrome colors and countless artistic errors.
Negative prompt (Chroma is CFG-guided, so this is honoured)
checkpointenumdefault chroma1-hd
Full-precision Chroma checkpoint on the network volume. ungloryhail-bf16 = UnGloryHail BF16 (A.03.01, Civitai model-version 2898818, the BF16 file 2776781 rather than the version's fp8 primary; content explicit; not rendered on a GPU yet, A.03.01 live still owed).
options: chroma1-hduncanny-v13-bf16photonic-fusion-debloated-bf16ungloryhail-bf16
stepsintegerdefault 26min 8max 60
Sampling steps (26 is the Chroma1-HD reference)
cfgfloatdefault 3.8min 1.0max 10.0
Classifier-free guidance (3.8 is the Chroma1-HD reference)
seedintegerdefault -1
Random seed (-1 = random)
aspectenumdefault square_1024
Output aspect preset
options: square_1024portrait_896x1152landscape_1152x896portrait_832x1216landscape_1216x832
batch_sizeintegerdefault 1min 1max 1
Images per run. Pinned to 1: the executor's resolution-scaled batch cap (C.12.19) allows a second latent only below ~0.5 MP, and every aspect preset here is ~1 MP. batch_size 2 at 896x1152 killed a live worker.
samplerenumdefault euler
Sampler. euler is the Chroma1-HD reference; the rest are samplers already in use elsewhere in this catalog.
options: eulereuler_ancestraldpmpp_2mdpmpp_2m_sdeuni_pcres_multistep
upscaleenumdefault none
Optional still-upscale tail, 2x. seedvr2_3b (A.01.08) resizes the still 2x with lanczos and restores it in one step with SeedVR2 3B (fp16) on ComfyUI's core SeedVR2 nodes, as the SeedVR2 3B image template does at 4x; its first use loads the seedvr2-3b family (7.29 GB) into the model cache. Only 2x is offered: the worker returns the PNG inline in the job output, and a 4x (~16 MP) still would not fit RunPod's job-output ceiling until outputs travel by the volume (V.12.05). none leaves the graph exactly as before. The Real-ESRGAN x2 tail (C.12.02) was retired once SeedVR2 3B had rendered (A.01.08); the enum refuses a job that still names x2.
options: noneseedvr2_3b
loraenumdefault none
Optional LoRA on the Chroma model (C.12.01; four picked by the user on 2026-09-13, all from CivitAI with every commercial flag). lenovo-ultrareal = photorealism enhancer (its trigger word `l3n0v0` is appended to the prompt automatically); chroma-realistic-slider = realism up/down by strength; chroma-defluxer = removes the residual Flux look; style-muk = illustration style. A.03.01 adds two more, also with every commercial flag: nicegirls-ultrareal = NiceGirls UltraReal Chroma (model-version 2487473, content racy); nsfw-realism-v1 = NSFW Realism v1.0 (model-version 2357084, content explicit). Neither version lists trained words, so neither appends a trigger, and neither has rendered on a GPU yet (A.03.01 live stills owed). none leaves the graph exactly as before.
options: nonelenovo-ultrarealchroma-realistic-sliderchroma-defluxerstyle-muknicegirls-ultrarealnsfw-realism-v1
lora_strengthfloatdefault 1.0min -2.0max 2.0
LoRA strength on the model (LoraLoaderModelOnly.strength_model). The slider LoRA is meant to be driven negative as well as positive; the others sit at 1.0.

ComfyUI node graph (25)#

The executable ComfyUI prompt graph: 25 nodes across 22 distinct node classes, wired by 30 data dependencies. Nodes tinted green come from a custom node pack this workflow declares; the rest are ComfyUI core / baked-community classes.

flowchart TD n0["1: UNETLoader"] n1["2: CLIPLoader"] n2["3: VAELoader"] n3["4: ModelSamplingAuraFlow"] n4["5: T5TokenizerOptions"] n5["6: CLIPTextEncode"] n6["7: CLIPTextEncode"] n7["8: CFGGuider"] n8["9: KSamplerSelect"] n9["10: BetaSamplingScheduler"] n10["11: RandomNoise"] n11["12: EmptySD3LatentImage"] n12["13: SamplerCustomAdvanced"] n13["14: VAEDecode"] n14["15: SaveImage"] n15["19: LoraLoaderModelOnly"] n16["20: UNETLoader"] n17["21: VAELoader"] n18["22: ResizeImageMaskNode"] n19["23: SeedVR2Preprocess"] n20["24: VAEEncodeTiled"] n21["25: SeedVR2Conditioning"] n22["26: KSampler"] n23["27: VAEDecodeTiled"] n24["28: SeedVR2PostProcessing"] n15 -->|model| n3 n1 -->|clip| n4 n4 -->|clip| n5 n4 -->|clip| n6 n3 -->|model| n7 n5 -->|positive| n7 n6 -->|negative| n7 n3 -->|model| n9 n10 -->|noise| n12 n7 -->|guider| n12 n8 -->|sampler| n12 n9 -->|sigmas| n12 n11 -->|latent_image| n12 n12 -->|samples| n13 n2 -->|vae| n13 n0 -->|model| n15 n13 -->|input| n18 n18 -->|resized_images| n19 n19 -->|pixels| n20 n17 -->|vae| n20 n16 -->|model| n21 n20 -->|vae_conditioning| n21 n16 -->|model| n22 n21 -->|positive| n22 n21 -->|negative| n22 n20 -->|latent_image| n22 n22 -->|samples| n23 n17 -->|vae| n23 n23 -->|images| n24 n18 -->|original_resized_images| n24
Data-flow DAG — scroll to zoom, drag to pan.

Nodes (25)#

1UNETLoadercore
unet_name = {{checkpoint_map[checkpoint]}} tmplweight_dtype = default
outputs: MODEL
2CLIPLoadercore
clip_name = t5xxl_fp16.safetensorstype = chromadevice = default
outputs: CLIP
3VAELoadercore
vae_name = ae.safetensors
outputs: VAE
4ModelSamplingAuraFlowcore
model = ◂ node 19 · out[0]shift = 1.0
outputs: MODEL
5T5TokenizerOptionscore
clip = ◂ node 2 · out[0]min_padding = 1min_length = 0
outputs: CLIP
6CLIPTextEncodecore
text = {{constructed_prompt}}{{lora_trigger_map[lora]}} tmplclip = ◂ node 5 · out[0]
outputs: CONDITIONING
7CLIPTextEncodecore
text = {{negative_prompt}} tmplclip = ◂ node 5 · out[0]
outputs: CONDITIONING
8CFGGuidercore
model = ◂ node 4 · out[0]positive = ◂ node 6 · out[0]negative = ◂ node 7 · out[0]cfg = {{cfg}} tmpl
outputs: GUIDER
9KSamplerSelectcore
sampler_name = {{sampler}} tmpl
outputs: SAMPLER
10BetaSamplingSchedulercore
model = ◂ node 4 · out[0]steps = {{steps}} tmplalpha = 0.45beta = 0.45
outputs: SIGMAS
11RandomNoisecore
noise_seed = {{seed}} tmpl
outputs: NOISE
12EmptySD3LatentImagecore
width = {{aspect_map[aspect].width}} tmplheight = {{aspect_map[aspect].height}} tmplbatch_size = {{batch_size}} tmpl
outputs: LATENT
13SamplerCustomAdvancedcore
noise = ◂ node 11 · out[0]guider = ◂ node 8 · out[0]sampler = ◂ node 9 · out[0]sigmas = ◂ node 10 · out[0]latent_image = ◂ node 12 · out[0]
outputs: LATENTLATENT
14VAEDecodecore
samples = ◂ node 13 · out[0]vae = ◂ node 3 · out[0]
outputs: IMAGE
15SaveImagecore
images = {{upscale_output_map[upscale]}} tmplfilename_prefix = isis/chroma-txt2img
19LoraLoaderModelOnlycore
model = ◂ node 1 · out[0]lora_name = {{lora_map[lora]}} tmplstrength_model = {{lora_strength}} tmpl
outputs: MODEL
20UNETLoadercore
unet_name = seedvr2_3b_fp16.safetensorsweight_dtype = default
outputs: MODEL
21VAELoadercore
vae_name = seedvr2_ema_vae_fp16.safetensors
outputs: VAE
22ResizeImageMaskNodecore
input = ◂ node 14 · out[0]resize_type = scale by multiplierresize_type.multiplier = 2.0scale_method = lanczos
outputs: IMAGE
23SeedVR2Preprocesscore
resized_images = ◂ node 22 · out[0]
outputs: IMAGE
24VAEEncodeTiledcore
pixels = ◂ node 23 · out[0]vae = ◂ node 21 · out[0]tile_size = 512overlap = 128temporal_size = 4096temporal_overlap = 8
outputs: LATENT
25SeedVR2Conditioningcore
model = ◂ node 20 · out[0]vae_conditioning = ◂ node 24 · out[0]
outputs: CONDITIONINGCONDITIONING
26KSamplercore
model = ◂ node 20 · out[0]positive = ◂ node 25 · out[0]negative = ◂ node 25 · out[1]latent_image = ◂ node 24 · out[0]seed = {{seed}} tmplsteps = 1cfg = 1.0sampler_name = eulerscheduler = simpledenoise = 1.0
outputs: LATENT
27VAEDecodeTiledcore
samples = ◂ node 26 · out[0]vae = ◂ node 21 · out[0]tile_size = 512overlap = 128temporal_size = 4096temporal_overlap = 8
outputs: IMAGE
28SeedVR2PostProcessingcore
images = ◂ node 27 · out[0]original_resized_images = ◂ node 22 · out[0]color_correction_method = none
outputs: IMAGE

Prompt construction#

template
{base_prompt}

Variables (1)#

base_prompt
{{prompt}} tmpl

Parameter banks (7)#

The prompt / configuration lookup tables this workflow keys into from its inputs — the vocabulary that turns a style / palette / preset selection into graph parameters.

option_policy (2)#

checkpoint
{"chroma1-hd": {"distribution": "service", "content": "neutral"}, "uncanny-v13-bf16": {"distribution": "service", "content": "neutral"}, "photonic-fusion-debloated-bf16": {"distribution": "internal_only", "content": "neutral"}, "ungloryhail-bf16": {"distribution": "service", "content": "explicit"}}
lora
{"lenovo-ultrareal": {"distribution": "service", "content": "neutral"}, "chroma-realistic-slider": {"distribution": "service", "content": "neutral"}, "chroma-defluxer": {"distribution": "service", "content": "neutral"}, "style-muk": {"distribution": "service", "content": "neutral"}, "nicegirls-ultrareal": {"distribution": "service", "content": "racy"}, "nsfw-realism-v1": {"distribution": "service", "content": "explicit"}}

checkpoint_map (4)#

chroma1-hd
Chroma1-HD.safetensors
uncanny-v13-bf16
uncannyPhotorealism_v13_bf16.safetensors
photonic-fusion-debloated-bf16
photonicFusionChroma_debloated_bf16.safetensors
ungloryhail-bf16
ungloryhail_bf16.safetensors

aspect_map (5)#

square_1024
{"width": 1024, "height": 1024}
portrait_896x1152
{"width": 896, "height": 1152}
landscape_1152x896
{"width": 1152, "height": 896}
portrait_832x1216
{"width": 832, "height": 1216}
landscape_1216x832
{"width": 1216, "height": 832}

requires_families (2)#

chroma-coreseedvr2-3b

lora_map (7)#

none
lenovo-ultrareal
chroma-lenovo-ultrareal.safetensors
chroma-realistic-slider
chroma-realistic-slider.safetensors
chroma-defluxer
chroma-defluxer.safetensors
style-muk
chroma-style-muk.safetensors
nicegirls-ultrareal
chroma-nicegirls-ultrareal.safetensors
nsfw-realism-v1
chroma-nsfw-realism-v1.safetensors

lora_trigger_map (7)#

none
lenovo-ultrareal
, l3n0v0
chroma-realistic-slider
chroma-defluxer
style-muk
nicegirls-ultrareal
nsfw-realism-v1

upscale_output_map (2)#

none
140
seedvr2_3b
280

Models & dependencies#

Models required (14)#

Chroma1-HD.safetensors
uncannyPhotorealism_v13_bf16.safetensors
photonicFusionChroma_debloated_bf16.safetensors
ungloryhail_bf16.safetensors
t5xxl_fp16.safetensors
ae.safetensors
chroma-lenovo-ultrareal.safetensors
chroma-realistic-slider.safetensors
chroma-defluxer.safetensors
chroma-style-muk.safetensors
chroma-nicegirls-ultrareal.safetensors
chroma-nsfw-realism-v1.safetensors
seedvr2_3b_fp16.safetensors
seedvr2_ema_vae_fp16.safetensors

Output contract#

What a successful run of this workflow returns.

type
image
format
png

Taxonomy & routing#

How the control plane classifies this workflow — from the committed workflow-taxonomy-registry.json. It drives the consistency / control surface the agentic director can exercise over the workflow.

assetFamily
portrait-hero-image-bundle
outputPackageProfile
image-single-profile
controlModalities
model-locksampler-scheduler-lockseed-lockprompt-template-lock
consistencyDimensions
identitylightinglens
notes
Chroma full-precision text-to-image on RunPod serverless.