Power Prompter Websocket
Power Prompter Websocket — the node that listens to Umbra's prompt cards
- clip
- prompt_text
- positive
- empty_latent
- seed
- width
- height
- batch_size
- negative
- negative_prompt_text
Most nodes hold a prompt in a text box. Power Prompter Websocket holds a prompt that someone else is typing. It's the ComfyUI-side receiver for Umbra Studio's Power Prompter - the prompt-card system where you build modular cards, variants, and sets that combine into thousands of prompt combos. This node sits in your graph and stays in sync with whatever card set is active in the Umbra UI, so you can browse prompts in one window and queue them against your ComfyUI workflow without copying text around.
The name "Websocket" tells you the transport: it subscribes to the live prompt state and updates its prompt_text and negative_prompt fields in real time. The tooltips in the schema say it plainly - "Active prompt text synced from Umbra Power Prompter websocket." If you're not running Umbra Studio, you can still use the node as a manual prompt holder with nice seed controls, but you're missing its whole reason to exist.
How it works
On each run it takes the current prompt text and:
- Builds conditioning - with an optional clip input, it encodes
positiveandnegativeCONDITIONING the same way ComfyUI's CLIP Text Encode does (via the scheduled encode path, so model-specific encoders keep their metadata). No clip wired, no conditioning - the text outputs still flow. - Builds the empty latent -
aspect_ratiooffers the same 33 SD1.5/SDXL/1536 presets as the Power Prompter node, withcustomfalling back towidth/height,swap_dimensionsto flip, andbatch_sizefor the batch. Outputempty_latentfeeds a KSampler directly. - Resolves the seed -
seed+control_after_generate(fixed / increment / decrement / randomize, withincrement_stepcontrolling the step size) give you per-run seed control right on the node.style_seed_behavior'ssame_seed_style_cyclekeeps the base seed pinned across style-expanded jobs - its tooltip explains exactly why: style-expanded prompt jobs should reuse the same base seed instead of advancing this node's counter, so the variation shows up in the prompt, not the noise.
Outputs: prompt_text, negative_prompt_text, positive, negative, empty_latent, seed, width, height, batch_size.
What a beginner sets
- prompt_text / negative_prompt - synced from the websocket (or typed by hand).
- seed and control_after_generate - the two you'll actually fiddle with.
- aspect_ratio - pick a preset; custom sizes live in
width/height. - clip (optional) - wire it if you want the conditioning outputs, which means wiring a CLIPLoader or similar upstream.
Installing it
Part of Umbra-Nodes, the ComfyUI companion pack for Umbra Studio (NocturneLabs' open-source local AI creation suite). 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 of its own. Note this node is registered in a separate module - it loads as long as its imports succeed, and the pack degrades gracefully if they don't, so if the node is missing entirely after install, restart once more and check the console for an import warning.
Gotchas
Because the text arrives from outside the graph, an unwired reader will happily run with stale or empty text - the sync is only live while Umbra Studio is connected. If you use it standalone and it "ignores" your typed prompt, check whether a websocket connection is overriding the field. And since seed increment/decrement use an in-process counter, the node always recomputes in those modes - that's the counter doing its job, not a bug. Keep one seed owner per graph: this node's counter and a downstream sampler's own progression will both advance otherwise.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt_text | STRING | Active prompt text synced from Umbra Power Prompter websocket. | |
| negative_prompt | STRING | Negative prompt text synced from Umbra Power Prompter websocket. | |
| seed | INT | 00–18446744073709550000 | Base seed value. |
| control_after_generate | COMBO | fixed | How seed changes after each run. |
| increment_step | INT | 11–18446744073709550000 | Seed step for increment/decrement. |
| style_seed_behavior | COMBO | normal | When same_seed_style_cycle is active, style-expanded prompt jobs reuse the same base seed instead of advancing this websocket node's per-run seed counter. |
| aspect_ratio | COMBO | SDXL - 1:1 square 1024x1024 | Resolution presets matching SD1.5 and SDXL aspect ratios. |
| swap_dimensions | COMBO | Off | Swap width and height after preset/custom resolution is resolved. |
| width | INT | 102464–8192 | Used when aspect_ratio is custom. |
| height | INT | 102464–8192 | Used when aspect_ratio is custom. |
| batch_size | INT | 11–64 | Empty latent batch size. |
| clipopt | CLIP | CLIP model for positive conditioning output. |
Outputs (9)
| Name | Type | Description |
|---|---|---|
| prompt_text | STRING | — |
| positive | CONDITIONING | — |
| empty_latent | LATENT | — |
| seed | INT | — |
| width | INT | — |
| height | INT | — |
| batch_size | INT | — |
| negative | CONDITIONING | — |
| negative_prompt_text | STRING | — |