RedNode Studio Workspace
The whole studio input rig in one tabbed panel, wired by a single bundle
- clip
- latent
- model
- vae
- boost_mask_in
- edit_mask_in
- workspace
- subject_image
- scene_image
- moodboard_style
- extra_subjects
- subject_boost_mask
- edit_mask
- settings
- output_latent
- style_strength
- studio_preset
- subject_prompt
- scene_prompt
- moodboard_prompt
- i2i_image
- i2i_prompt
- denoise
- post_process
- model
- lora_keywords
- clip
- paint_prompt
If RedNode Studio has a flagship, this is it. RedNode Studio Workspace is the whole input rig in one tabbed panel: image galleries per role, painted masks, subject and scene and moodboard references, the fidelity and identity dials, captioning, painting, and grading - all hanging off one node. It outputs a single workspace bundle that plugs into the Studio (Krea 2) node's workspace input, plus a pile of flat sockets for normal Get/Set wiring. Instead of thirty nodes and forty wires covering your canvas, you get one panel and a handful of connections.
The design philosophy is the pack's whole thesis: the wires that aren't there are the point. Reference galleries, masks, LoRA stacks, prompts, painting and grading all live in the panel; the graph stays readable however much is going on. The bundled workspace output carries it all down one wire to the Studio node, which is what makes the Studio panel-driven instead of node-driven.
How it works
The node's config holds the whole state - galleries, selections, masks, dials - as JSON, edited through the panel. A preset input loads a saved workspace (or custom (live) keeps the current state), and note the presets store filenames, so they're per-machine - a preset made on one install points at that machine's files. Disabled tabs output nothing, so an unused gallery doesn't leak empty references into the graph.
The outputs are where the flat-socket design shows up. The headline one is workspace (the KREA2_WORKSPACE bundle, for the Studio node). Then there's the full flat set: subject_image, scene_image, moodboard_style, extra_subjects, subject_boost_mask, edit_mask, settings, output_latent, style_strength, studio_preset, the four prompt strings (subject_prompt, scene_prompt, moodboard_prompt, i2i_prompt), i2i_image, denoise, post_process, plus pass-through model, clip, vae-derived output_latent, and lora_keywords - so you can pull any one value out with a normal wire instead of unpacking the bundle.
The optional inputs matter more than they look. Wire clip and the CLIP-gen engine captions with the already-loaded text encoder (no second model load). Wire model and the LoRAs tab applies its stack, handing it back on model with the trigger words on lora_keywords. Wire vae and the Img2Img tab's source image comes out of output_latent encoded, ready for the sampler at the tab's denoise. The four *_caption_in inputs merge external captions into their prompts, and boost_mask_in / edit_mask_in override the masks painted on the Masks tab.
Installing it
git clone https://github.com/RedNodeAI/ComfyUI-RedNodeStudio.git ComfyUI/custom_nodes/ComfyUI-RedNodeStudio
Restart ComfyUI, or search RedNode Studio in ComfyUI Manager. No pip dependencies. The Workspace itself works with any model, but the full Studio (Krea 2) flow needs ComfyUI 0.26.0+ and the Krea 2 stack: the qwen3vl_4b text encoder via CLIPLoader with type krea2, qwen_image_vae, and for identity edits a krea2_edit LoRA. The pack checks and reports these at startup rather than failing.
The honest take
This node is the pack's argument, and you'll either love the panel-driven approach or find it opaque - there's no real middle ground. The advice for beginners: load the pack's example workflow (Rednode Ultima) once and read it, because the panel replaces a lot of graph structure you're used to seeing as wires, and it's easier to see the shape in a working rig than to infer it. The flat sockets exist precisely so you don't have to buy the whole bundle philosophy - you can wire just moodboard_style out and ignore the rest. And remember the per-machine preset caveat: workspace presets store filenames, so they don't travel between installs the way you might hope.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| config | STRING | {} | the workspace state (galleries, selections, masks, dials) as JSON. The panel above edits this. |
| preset | COMBO | load a saved workspace (galleries, selections, masks, dials). 'custom (live)' leaves it as it is. Presets store filenames, so they are per-machine. | |
| clipopt | CLIP | wire the workflow's CLIP here and the CLIP gen engine captions with the already-loaded text encoder | |
| latentopt | LATENT | your own latent. Set the Latent tab's source to 'wired input' and this comes straight back out of output_latent, instead of the canvas this node would build | |
| modelopt | MODEL | wire the model here and the LoRAs tab applies its stack, handing it back on the model output with the trigger words on lora_keywords | |
| vaeopt | VAE | wire the workflow's VAE and the Img2Img tab's source image comes out of output_latent ENCODED, ready for the sampler at the tab's denoise | |
| subject_caption_inopt | STRING | external caption for the subject, merged into subject_prompt | |
| scene_caption_inopt | STRING | external caption for the scene, merged into scene_prompt | |
| mood_caption_inopt | STRING | external caption for the moodboard, merged into moodboard_prompt | |
| i2i_caption_inopt | STRING | external caption for the img2img source, merged into i2i_prompt | |
| boost_mask_inopt | MASK | optional wired subject-boost mask — overrides the one painted on the Masks tab | |
| edit_mask_inopt | MASK | optional wired edit mask — overrides the one painted on the Masks tab |
Outputs (22)
| Name | Type | Description |
|---|---|---|
| workspace | KREA2_WORKSPACE | — |
| subject_image | IMAGE | — |
| scene_image | IMAGE | — |
| moodboard_style | IMAGE | — |
| extra_subjects | KREA2_SOURCES | — |
| subject_boost_mask | MASK | — |
| edit_mask | MASK | — |
| settings | KREA2_SETTINGS | — |
| output_latent | LATENT | — |
| style_strength | FLOAT | — |
| studio_preset | STRING | — |
| subject_prompt | STRING | — |
| scene_prompt | STRING | — |
| moodboard_prompt | STRING | — |
| i2i_image | IMAGE | — |
| i2i_prompt | STRING | — |
| denoise | FLOAT | — |
| post_process | KREA2_POST | — |
| model | MODEL | — |
| lora_keywords | STRING | — |
| clip | CLIP | — |
| paint_prompt | STRING | — |