App Info ♾️Mixlab
Turn a ComfyUI workflow into a web app
- image
This is the node the whole Mixlab pack is really built around. Drop AppInfo into a workflow, tell it which nodes are the inputs and which are the outputs, and it turns that graph into a clean little web app - a page with just the controls you chose, no ComfyUI spaghetti in sight. Give a friend the link and they fill in a prompt, hit go, and get an image, without ever seeing a node. It's "share your workflow as a product," and it's genuinely one of the more clever things in the ComfyUI ecosystem.
The community reception backs that up: the pack's calling card on Reddit is exactly this - "turn your workflow into a Photoshop plugin," "turn your workflow into a web app." AppInfo (plus the companion Photoshop plugin) is why people install this pack in the first place.
How it works
Every node in your graph has an ID. AppInfo asks you to list the IDs of the nodes you want to expose as the app's inputs and the IDs you want as its outputs. It then generates an app view that renders only those - the inputs become form controls, the outputs become the results panel. The rest of the workflow runs underneath, hidden. You can categorize apps, version them, give them a cover image, and switch between multiple published apps.
There's a constraint that follows from this design: only certain node types can be app inputs or outputs, because each has to map to a UI control. The README's supported input list is Load Image, VHS_LoadVideo, CLIPTextEncode, PromptSlide, TextInput_, Color, FloatSlider, IntNumber, CheckpointLoaderSimple, and LoraLoader; supported outputs are PreviewImage, SaveImage, ShowTextForGPT, VHS_VideoCombine, and PromptImage. If you point an input/output ID at a node that isn't on those lists, it won't show up as a control.
Inputs and outputs
name(STRING, defaultMixlab-App) - the app's title.input_ids(STRING, multiline) - the node IDs to expose as inputs, one per line (defaults to1\n2\n3as a placeholder). This is the core setting: these become the app's form fields.output_ids(STRING, multiline) - the node IDs to expose as outputs, one per line. These become the results.
The optional ones flesh out the app listing: image (a cover image), description, version (INT), share_prefix, link, category (to group apps in the menu), auto_save (enable/disable), and idle_animation (BOOLEAN). AppInfo is a terminal node - it has no data outputs; its "output" is the published app itself.
How to install it
Ships with the Mixlab pack.
- ComfyUI Manager: search
comfyui-mixlab-nodes, install, restart. - Manual:
cd ComfyUI/custom_nodes && git clone https://github.com/shadowcz007/comfyui-mixlab-nodes.git, install requirements (install.baton Windows or../../../python_embeded/python.exe -s -m pip install -r requirements.txt), restart.
Common issues
The app opens blank. This is the AppInfo gotcha, called out by the maintainer in bold: if you installed the pack by downloading a ZIP, the folder unpacks as comfyui-mixlab-nodes-main, and app mode refuses to render - you get a white page. Rename the folder to exactly comfyui-mixlab-nodes and it works. Ninety percent of "my Mixlab app is blank" is this.
A control doesn't appear. You listed an ID for a node type that isn't on the supported input/output lists above. Swap it for a supported node - e.g. use CLIPTextEncode or TextInput_ for a text field, FloatSlider/IntNumber for numbers.
Image upload fails in the app. On a LAN or cloud deployment the maintainer's fix is to serve over HTTPS on port 8189 - the browser blocks the upload otherwise. Same secure-context requirement that the screen-share node runs into.
Wrong node becomes the input. Node IDs, not names, are what AppInfo reads, and IDs can shift if you rebuild the graph. Double-check the IDs after any big edit, or you'll expose the wrong control.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| name | STRING | Mixlab-App | — |
| input_ids | STRING | 1 2 3 | — |
| output_ids | STRING | 5 9 | — |
| imageopt | IMAGE | — | |
| descriptionopt | STRING | — | |
| versionopt | INT | 11–10000 | — |
| share_prefixopt | STRING | — | |
| linkopt | STRING | https:// | — |
| categoryopt | STRING | — | |
| auto_saveopt | COMBO | 2 options: enable, disable | |
| idle_animationopt | BOOLEAN | false | — |
Outputs (0)
No outputs