Nodes/RedNode Studio/RedNode Studio Inputs / Outputs
ComfyUI Node

RedNode Studio Inputs / Outputs

The Panel Has No Sockets — RedNode Studio Kept Them on a Second Node

By RedNodeAI·Created 3 months ago·Updated 3 days ago· 14
RedNode Studio Inputs / Outputs
  • model
  • clip
  • vae
  • latent
  • image_in
  • boost_mask_in
  • edit_mask_in
  • workspace
  • image
  • result_latent
  • model
  • clip
  • vae
  • positive
  • negative
  • denoise
  • seed
  • prompt_text
  • negative_text
  • post_process
  • steps
  • cfg
  • sampler_name
  • scheduler
◄workspace(the only workspace)►
◄style_in—►
◄subject_in—►
◄surroundings_in—►
◄light_and_colour_in—►

If you dropped a RedNode Studio Workspace on the canvas and sat there looking for a socket, you're not blind. Since 1.7 the Workspace node is only the panel - the tabbed thing with the model rig, prompt rows, latent page and Post chain. Every input and output it used to have moved onto this node, RedNode Studio Inputs / Outputs.

So the pair is one rig split in two: the Workspace draws the picture, this node is where the rest of your graph grabs it. Eleven inputs, seventeen outputs, and - the bit that makes people file bugs - no wire between the two.

What it's actually for

The pack's pitch is that a finished image shouldn't need forty nodes of plumbing: one Workspace holds the rig, the prompt, the size, the detailer, the grade and the save. Great, right up until you want something it didn't think of - your own KSampler, a custom upscale chain, a save node from another pack, a second workspace chained off the first.

This node is that door, and it's the same trade as a context bus like rgthree's Context: one bundle, readable canvas - except a bus hides which version of a value is inside it, and this one only exists on the canvas.

How the wireless join happens

The workspace field picks which Workspace this node stands in for. When you hit Queue from the canvas, a frontend hook rewrites the prompt before it leaves the browser: every link into the IO node moves onto the Workspace's input of the same name, every link out gets repointed at the Workspace's output of the same name, and the IO node is deleted. What executes is an ordinary wire, and order and values come from ComfyUI as always. The Workspace keeps its full socket contract on the server so this can work; the frontend just doesn't draw it. The server-side resolve() is the hatch: with no splice it raises rather than inventing values.

The inputs and outputs that matter

Set workspace first. The default, (the only workspace), finds your Workspace when there's exactly one; with several, pick the #id Title entry. If the node's title reads "Studio I/O: choose a Workspace", the join hasn't happened - that's your first diagnostic.

The optional inputs are for driving the rig from outside it:

  • model, clip, vae - your own loaders. A model in comes back with the rig's LoRA stack applied; a VAE in makes the Img2Img source come out of result_latent encoded, ready for a sampler at the tab's denoise.
  • image_in, latent - an outside picture or latent, for tabs set to take a wired one instead of their gallery.
  • boost_mask_in, edit_mask_in - painted masks supplied from elsewhere.
  • style_in, subject_in, surroundings_in, light_and_colour_in - text from any string node, joined after each row's own wording.

image is the finished picture and where most graphs stop: Detailer, Post FX, Save, Review, or a Live Preview. The sampling sockets - model, positive, negative, result_latent, denoise - are the External sampler route, where the rig hands you conditioning and a latent and your KSampler does the work. steps, cfg, sampler_name and scheduler ride along, typed as the real sampler and scheduler lists rather than text, so a stock KSampler's dropdowns accept them. seed, prompt_text and negative_text are for filenames and notes.

Install

Search RedNode Studio in ComfyUI Manager, or:

cd ComfyUI/custom_nodes
git clone https://github.com/RedNodeAI/ComfyUI-RedNodeStudio.git

Restart; the node lives under RedNode/Studio. No pip dependencies at all; you need ComfyUI 0.27.0 or newer (0.37.0+ for the Qwen Image 2.1 rigs) and Python 3.10+. Models are separate - RedNode_Download_Models.bat pulls Krea 2 Turbo, its text encoder and VAE into place. "Everything" is well over 100 GB.

Also: the licence is PolyForm Noncommercial. Hobby and personal projects, fine; selling what you make needs the author's permission.

Where people get burned

Queueing from somewhere other than the canvas. The splice is a frontend hook. Fire the workflow from an API call or another pack's queue path and nothing rewrites the prompt - you get a RuntimeError saying so. Scripted pipelines should wire the Workspace's own sockets instead. It's the one structural limitation, and at least it's loud rather than silent.

Loading a pre-1.7 workflow. Older graphs had wires heading into the Workspace node. They're dropped on load with a console warning, so the graph quietly loses connections. Add an IO node, pick the Workspace, rewire.

Wiring a loop. Feed an IO input from something that already depends on that same Workspace and the splice leaves that link out rather than building a cycle. Everything else joins, so one input just behaves as if unwired.

Two workspaces, default picker. The most common "it won't resolve" case. Name your picks.

CategoryRedNode/Studio

Inputs (12)

NameTypeDefaultDescription
workspaceSTRING(the only workspace)Which Studio Workspace this node stands in for. With one Workspace on the canvas the default finds it by itself.
modeloptMODELwire the model here and the LoRAs tab applies its stack, handing it back on the model output with the trigger words on lora_keywords
clipoptCLIPwire the workflow's CLIP here and the CLIP gen engine captions with the already-loaded text encoder
vaeoptVAEwire 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
latentoptLATENTyour 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
image_inoptIMAGEan image to use as the Img2Img canvas when the tab's canvas is set to Wired image. Chain another workspace's image output in here.
boost_mask_inoptMASKoptional wired subject-boost mask — overrides the one painted on the Masks tab
edit_mask_inoptMASKoptional wired edit mask, sent out on edit_mask with a latent sized to the scene picture
style_inoptSTRINGstyle wording for the active prompt row, joined after its own
subject_inoptSTRINGsubject wording for the active prompt row, joined after its own
surroundings_inoptSTRINGsurroundings wording for the active prompt row, joined after its own
light_and_colour_inoptSTRINGlight and colour wording for the active prompt row, joined after its own

Outputs (17)

NameTypeDescription
workspaceKREA2_WORKSPACE—
imageIMAGE—
result_latentLATENT—
modelMODEL—
clipCLIP—
vaeVAE—
positiveCONDITIONING—
negativeCONDITIONING—
denoiseFLOAT—
seedINT—
prompt_textSTRING—
negative_textSTRING—
post_processKREA2_POST—
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—