Power Prompter (Umbra Lab)
Power Prompter — the entire front half of a workflow in one node
- clip
- vae
- model
- clip
- vae
- positive
- negative
- empty_latent
- prompt_text
- negative_prompt_text
- model_name
- seed
- steps
- cfg
- sampler_name
- scheduler
- denoise
- width
- height
- batch_size
Power Prompter (Umbra Lab) is the one-node version of everything that happens before a sampler: it loads the model, encodes your prompts, builds the empty latent at the right size, resolves the seed, applies any <lora:...> tags in your prompt, and dumps out model, CLIP, VAE, positive, negative, latent, and a pile of metadata. Wire it into a KSampler and the Save node and you've replaced about eight nodes with one.
That's the "one-node entry point for API workflows" framing the author uses, and it's the right lens: this is the node Umbra Studio's own front end and remote workflows lean on, because it collapses the fragile loader-plus-encode-plus-latent chain into a single call with one set of knobs.
How it works
Everything is driven off its widgets, and it's built from machinery you've already met in this pack:
- Model loading - it delegates to
Load Checkpoint (Umbra Lab)under the hood, somodel_typeruns through the same checkpoint / diffusers / diffusion_model / unet / gguf menu, with the sameweight_dtypefp8 options. GGUF still needs ComfyUI-GGUF installed. - Prompt handling - it strips a legacy
[x]checkbox prefix from prompt text, and (like the LoRA syntax node) parses<lora:...>tags, applies them, and removes them from the text. It even supportsclip_skip(1–12) if your model family needs it. - Resolution -
aspect_ratiois a dropdown of 33 presets spanning SD1.5 (512-based), SDXL (1024-based), and a 1536 series, pluscustomwith your ownwidth/height.swap_dimensionsflips W/H after the preset resolves, and everything snaps to multiples of 8. - Seed -
control_after_generateoffers fixed / increment / decrement / randomize (plus legacy true/false/1/0 values), with a per-node counter so increment/decrement step correctly across runs.style_seed_behavior'ssame_seed_style_cyclepins the seed across style-expanded prompt jobs.
Outputs worth naming: model, clip, vae, positive, negative, empty_latent (the batch of zero latent you feed the KSampler), prompt_text / negative_prompt_text (cleaned), model_name, seed, steps, cfg, sampler_name, scheduler, denoise, width, height, batch_size. Feed the metadata outputs into Save Image (Umbra Lab) and your PNG records the truth.
The inputs that matter
The required list is long (prompt, negative, model_type, the model name fields, weight_dtype, seed, control_after_generate, aspect_ratio, width/height/batch_size/steps/cfg/sampler/scheduler/denoise), but a beginner sets: prompt_text, negative_prompt, checkpoint_name (or model_type + the matching file field), aspect_ratio, seed + control_after_generate. The optional clip/vae inputs are there to override model-only loaders that return None for CLIP/VAE - wire those in for Flux-style stacks.
Installing it
Part of Umbra-Nodes, the ComfyUI companion pack for Umbra Studio (NocturneLabs' open-source local AI creation suite - Power Prompter is Umbra Studio's modular prompt-card system; this node is its ComfyUI bridge). ComfyUI Manager → search "Umbra Nodes", or:
cd ComfyUI/custom_nodes
git clone https://github.com/Nocturne-Ai-Labs/Umbra-Nodes
Restart ComfyUI. No pip deps; GGUF mode needs ComfyUI-GGUF.
Gotchas
Because it owns the seed counter in-process, it recomputes every run when control_after_generate is set to increment/decrement/randomize - expected, not a leak. The long output list means ComfyUI treats it as carrying lots of data; unused outputs are idle wires, harmless. And the aspect-ratio preset names look like sizes but they're presets: pick custom and set width/height yourself if you want something off the menu, because a preset overrides your typed dimensions.
Inputs (25)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt_text | STRING | — | |
| negative_prompt | STRING | — | |
| model_type | COMBO | checkpoint | 5 options: checkpoint, diffusers, diffusion_model, unet, gguf |
| checkpoint_name | COMBO | 2 options: , [None] | |
| diffusers_model | COMBO | 2 options: , [None] | |
| diffusion_model_name | COMBO | 2 options: , [None] | |
| unet_name | COMBO | 2 options: , [None] | |
| gguf_name | COMBO | 3 options: , default, [None] | |
| weight_dtype | COMBO | default | 8 options: default, fp8_e4m3fn, fp8_e4m3fn_fast, fp8_e5m2, False, True, +2 |
| seed | INT | 00–18446744073709550000 | — |
| control_after_generate | COMBO | fixed | 10 options: fixed, increment, decrement, randomize, True, False, +4 |
| style_seed_behavior | COMBO | normal | 2 options: normal, same_seed_style_cycle |
| aspect_ratio | COMBO | SDXL - 1:1 square 1024x1024 | 33 options: custom, SD1.5 - 1:1 square 512x512, SD1.5 - 2:3 portrait 512x768, SD1.5 - 3:4 portrait 512x682, SD1.5 - 3:2 landscape 768x512, SD1.5 - 4:3 landscape 682x512, +27 |
| swap_dimensions | COMBO | Off | 2 options: Off, On |
| width | INT | 102464–8192 | — |
| height | INT | 102464–8192 | — |
| batch_size | INT | 11–64 | — |
| steps | INT | 201–10000 | — |
| cfg | FLOAT | 7.00–100 | — |
| sampler_name | COMBO | 44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38 | |
| scheduler | COMBO | 9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3 | |
| denoise | FLOAT | 1.000–1 | — |
| clipopt | CLIP | — | |
| vaeopt | VAE | — | |
| clip_skipopt | INT | 11–12 | — |
Outputs (18)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |
| clip | CLIP | — |
| vae | VAE | — |
| positive | CONDITIONING | — |
| negative | CONDITIONING | — |
| empty_latent | LATENT | — |
| prompt_text | STRING | — |
| negative_prompt_text | STRING | — |
| model_name | STRING | — |
| seed | INT | — |
| steps | INT | — |
| cfg | FLOAT | — |
| sampler_name | euler,euler_cfg_pp,euler_ancestral,euler_ancestral_cfg_pp,heun,heunpp2,exp_heun_2_x0,exp_heun_2_x0_sde,dpm_2,dpm_2_ancestral,lms,dpm_fast,dpm_adaptive,dpmpp_2s_ancestral,dpmpp_2s_ancestral_cfg_pp,dpmpp_sde,dpmpp_sde_gpu,dpmpp_2m,dpmpp_2m_cfg_pp,dpmpp_2m_sde,dpmpp_2m_sde_gpu,dpmpp_2m_sde_heun,dpmpp_2m_sde_heun_gpu,dpmpp_3m_sde,dpmpp_3m_sde_gpu,ddpm,lcm,ipndm,ipndm_v,deis,res_multistep,res_multistep_cfg_pp,res_multistep_ancestral,res_multistep_ancestral_cfg_pp,gradient_estimation,gradient_estimation_cfg_pp,er_sde,seeds_2,seeds_3,sa_solver,sa_solver_pece,ddim,uni_pc,uni_pc_bh2 | — |
| scheduler | simple,sgm_uniform,karras,exponential,ddim_uniform,beta,normal,linear_quadratic,kl_optimal | — |
| denoise | FLOAT | — |
| width | INT | — |
| height | INT | — |
| batch_size | INT | — |