Studio Input Gateway
A web form in front of your ComfyUI workflow
The Studio Input Gateway exists for one reason: ComfyUI's node graph is a terrible interface for everyone except the person who built it. This node is the front door of the studio_universal_gateway pack's whole trick - a clean web dashboard (Vue 3, served at /gateway) that sits in front of a workflow and exposes only the knobs you choose. Your partner, client, or that coworker who wants "more poses, softer light" gets a form with a slider and a text box. They never see a latent or a KSampler. You keep the graph.
It's one half of a pair. The Input Gateway turns chosen widget values into dashboard form fields; its sibling, the Studio Output Gateway, sends results back to that same dashboard. On its own, the Input Gateway is a mapping table with a UI.
How it works
First, a quirk you'll hit immediately if you look at its node definition: the declared schema is empty - no inputs, no outputs. That's not a bug. The pack is written against ComfyUI's newer V3 backend API (comfy_api.latest, io.ComfyNode, a define_schema() classmethod) and, more importantly, the sockets are minted at runtime by the pack's LiteGraph JS extension (web/js/studio_gateway.js). Drop the node on the canvas and you get a link_0 output slot; connect something, and a new row appears. Each row is one variable.
What you set per row:
- Name - click it to rename. It must be unique across all gateway nodes, or the UI rejects it with a "Duplicate name" toast.
- Widget type -
text,text(line),text(multiline),slider,toggle,color,number(int),number(float),select,image,metrics. The pack tries to guess this: it inspects whatever node you wired the output into, reads that input's spec (INT/FLOAT/BOOLEAN/STRING/combo list), and suggests a slider, toggle, or select accordingly. You can override. - Control mode - for numbers:
fixed,randomize,increment,decrement. This is the samecontrol_after_generateidea you know from seeds, just surfaced as a form option. - Position -
left/middle/righton the dashboard layout.
The actual substitution happens server-side in gateway_server.py. When someone hits Run on the dashboard, it POSTs to /gateway/run with the workflow and the form values. The server walks the prompt, finds every node whose input is fed by a Studio_Universal_Gateway, looks up the variable name for that socket, and swaps in the submitted value before validating and queueing the job through the normal pipeline. The node class itself, if you queue it directly, does nothing but log a warning - the whole flow is designed to run from the dashboard.
Installing it
The pack is in the ComfyUI Manager registry, so the easy path is Manager → search "studio_universal_gateway" → Install → restart. Or by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/workdsammy-art/studio_universal_gateway
# restart ComfyUI
requirements.txt literally says "No external dependencies - ComfyUI provides everything needed." The dashboard ships pre-built in dist/, so there's no npm build step, no model downloads, nothing. You should see an orange "Gateway" button appear in the menu; it opens the dashboard.
Where people get burned
- It needs a recent ComfyUI. The pack is authored against the V3 backend API, so on an older install it won't register at all. If the node doesn't appear, update ComfyUI before blaming the pack.
- Plain Queue Prompt does nothing useful with it. It's not a value node - don't treat it like a primitive or a typed input holder. Run from
/gateway, or the inputs you set never get applied. - It's early. Version 0.1.0, one author, brand new. It works for the core flow, but don't build a production pipeline on it yet - and check for updates before you do.
If you're curious where the "one source, many consumers" idea comes from, the primitive and value nodes in core ComfyUI are the ancestor of this - this node just promotes the idea to a form.
Inputs (0)
No inputs
Outputs (0)
No outputs