Studio Output Gateway
Get results out of the graph and onto a dashboard
The Studio Output Gateway is the answering half of the studio_universal_gateway pack. The Input Gateway turns your workflow's knobs into form fields on a web dashboard; this node takes whatever the workflow produced and sends it back to that same dashboard. Same trick, other direction. If you're building a "studio" experience - a clean /gateway page where someone fills in a form, hits run, and watches results land - this is the node that makes the "results land" part happen.
On the canvas it looks like a terminal node: dynamic input sockets on the left, nothing on the right. That's the point. It's an output node (is_output_node in the schema), which also means ComfyUI treats it as always-execute - no caching, no "nothing changed, skip it" - so the dashboard always gets a fresh read.
How it works
Like its sibling, the node's declared schema is empty. The real sockets are created at runtime by the pack's JS extension: wire into the last link_N input and a new row appears. Each row is one thing you want surfaced on the dashboard - connect a Save Image, a prompt string, a seed value, whatever.
When the workflow runs, the node's execute() walks every row and does the mapping. The per-row metadata you set (a name, a widget type like text/image/number, a position of left/middle/right) rides along with the data, so the dashboard knows how to render each result. Images get special handling - a filename-shaped dict is unpacked into the file name, subfolder, and output type so the dashboard can point at the actual file. Strings and numbers pass through as-is; lists and dicts get JSON-serialized if they can be.
The result is emitted as a studio_assets UI payload (ui={"studio_assets": [...], "link_states": {...}}), which is ComfyUI's standard UI-message mechanism. The dashboard reads it after each run and shows your outputs - images, metrics, text - without anyone touching the graph.
One honest caveat from the source itself: image links often arrive as None because the actual filename lives in the node's executed message rather than the link value. The node detects a connection by key presence rather than by value, so a wired-but-empty image slot is treated as "connected, nothing to show yet" instead of an error. You'll occasionally see a blank row on the dashboard for that reason; it's a known rough edge, not something you misconfigured.
Installing it
Same pack, same steps as the Input Gateway. ComfyUI Manager → search "studio_universal_gateway" → Install, or:
cd ComfyUI/custom_nodes
git clone https://github.com/workdsammy-art/studio_universal_gateway
# restart ComfyUI
requirements.txt declares no external dependencies - everything is provided by ComfyUI, and the dashboard ships pre-built in dist/ (Vue 3, PrimeVue, Tailwind) with no build step. An orange "Gateway" button appears in the ComfyUI menu; that opens the dashboard.
Where people get burned
- There's nothing to wire downstream. If you're hunting for an output socket, you're missing the point - the "output" is the UI payload the dashboard consumes. If you don't use the
/gatewaydashboard, this node is mostly pointless; it's one half of a two-node system, not a general-purpose exporter. - Queue it from the dashboard, not the graph. It'll still emit its payload if you run the graph directly, but the flow is designed around
/gateway- the Input Gateway on the other end won't apply your values unless the dashboard's/gateway/runroute does the substitution. - It's brand new. Version 0.1.0, a single author, and it behaves like it in the corners. Works for the core dashboard loop; plan for rough edges and updates.
Worth knowing: this is the dashboard-flavored version of a very old ComfyUI idea - the node that exists only to collect and surface results, like a save/display node that routes to the frontend instead of to disk. If you've ever wanted a "for the boss" view of a workflow, this is the thin end of that wedge.
Inputs (0)
No inputs
Outputs (0)
No outputs