Nodes/Umbra Nodes/Power Prompter (Umbra Lab)
ComfyUI Node

Power Prompter (Umbra Lab)

Power Prompter — the entire front half of a workflow in one node

By Nocturne-Ai-Labs·Created 2 months ago·Updated 10 days ago· 0
Power Prompter (Umbra Lab)
  • 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
prompt_text
negative_prompt
model_typecheckpoint
checkpoint_name
diffusers_model
diffusion_model_name
unet_name
gguf_name
weight_dtypedefault
seed0
control_after_generatefixed
style_seed_behaviornormal
aspect_ratioSDXL - 1:1 square 1024x1024
swap_dimensionsOff
width1024
height1024
batch_size1
steps20
cfg7.0
sampler_name
scheduler
denoise1.00
clip_skip1

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, so model_type runs through the same checkpoint / diffusers / diffusion_model / unet / gguf menu, with the same weight_dtype fp8 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 supports clip_skip (1–12) if your model family needs it.
  • Resolution - aspect_ratio is a dropdown of 33 presets spanning SD1.5 (512-based), SDXL (1024-based), and a 1536 series, plus custom with your own width/height. swap_dimensions flips W/H after the preset resolves, and everything snaps to multiples of 8.
  • Seed - control_after_generate offers 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's same_seed_style_cycle pins 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.

CategoryUmbra

Inputs (25)

NameTypeDefaultDescription
prompt_textSTRING
negative_promptSTRING
model_typeCOMBOcheckpoint5 options: checkpoint, diffusers, diffusion_model, unet, gguf
checkpoint_nameCOMBO2 options: , [None]
diffusers_modelCOMBO2 options: , [None]
diffusion_model_nameCOMBO2 options: , [None]
unet_nameCOMBO2 options: , [None]
gguf_nameCOMBO3 options: , default, [None]
weight_dtypeCOMBOdefault8 options: default, fp8_e4m3fn, fp8_e4m3fn_fast, fp8_e5m2, False, True, +2
seedINT00–18446744073709550000
control_after_generateCOMBOfixed10 options: fixed, increment, decrement, randomize, True, False, +4
style_seed_behaviorCOMBOnormal2 options: normal, same_seed_style_cycle
aspect_ratioCOMBOSDXL - 1:1 square 1024x102433 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_dimensionsCOMBOOff2 options: Off, On
widthINT102464–8192
heightINT102464–8192
batch_sizeINT11–64
stepsINT201–10000
cfgFLOAT7.00–100
sampler_nameCOMBO44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38
schedulerCOMBO9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3
denoiseFLOAT1.000–1
clipoptCLIP
vaeoptVAE
clip_skipoptINT11–12

Outputs (18)

NameTypeDescription
modelMODEL
clipCLIP
vaeVAE
positiveCONDITIONING
negativeCONDITIONING
empty_latentLATENT
prompt_textSTRING
negative_prompt_textSTRING
model_nameSTRING
seedINT
stepsINT
cfgFLOAT
sampler_nameeuler,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
schedulersimple,sgm_uniform,karras,exponential,ddim_uniform,beta,normal,linear_quadratic,kl_optimal
denoiseFLOAT
widthINT
heightINT
batch_sizeINT