AppBuilder (Advanced)
The AppBuilder that hands values back to your graph
- parameters
AppBuilder turns a workflow into a web app. AppBuilderAdv turns a workflow into a web app that feeds its results back into the graph. Same configuration-panel idea, one crucial difference: this node emits a parameters bundle, which is what makes the app's sliders, text boxes, and seed fields real values the rest of the workflow can consume.
So when do you reach for it? Whenever "someone clicks Generate in a browser" needs to actually change the picture. Typical setup: you build a txt2img or img2img workflow for a colleague, expose prompt, negative prompt, seed, steps, and CFG, and leave the app in charge of those. The plain AppBuilder is the "just show a UI" version; this one is the full round-trip.
Inputs and output
Only two inputs matter, and both are simple:
config_json(STRING) - the widget layout as JSON. The default ships with a sample "Usage" widget so you can see the shape of a config before building your own; it's a multiline text box that you're meant to delete once you add real controls.live_preview(BOOLEAN, default off) - shows a live preview of your widget set on the panel as you build. The config panel's "previewer" control flips it for you, so you usually don't touch it directly.
The output is a single parameters slot. That's the bundle you wire onward.
How it works
The frontend builds the dynamic widgets from config_json, exactly like the base node. But at execution, the node's execute() parses that same config, pulls each value - from the workflow's prompt inputs, the node's own kwargs, or the widget default - casts it to the type declared in the config (INT, FLOAT, BOOLEAN), applies a float precision if you set one, and packs everything into { data, config }. One bundle out, typed and ready.
Setup flow: add the node → ⚙️ Configure Panel → add controls → each control becomes a key in config_json. Wire the parameters output into ParametersUnpacker, and it splits back into individual slots you can drag into a CLIP Text Encode prompt, a KSampler seed, whatever.
Install
ComfyUI Manager (search "PowerPanel"), or:
cd ComfyUI/custom_nodes
git clone https://github.com/lihaoyun6/ComfyUI-PowerPanel
Restart after. The pack's only Python deps are pynvml and psutil, both auto-installed; no models to download. Note the naming: the README still calls this pack "ComfyUI-AppBuilder" because lihaoyun6 renamed the repo after the docs - they're the same thing.
Common issues
Watch the one-per-workflow rule: the pack allows only a single AppBuilder-family node per graph and auto-removes a second one with a warning toast. And remember that only values declared in the config get emitted - delete a widget from the panel and its value stops flowing to the graph. If your app runs but nothing changes downstream, that's usually it: the widget exists in the UI but isn't in config_json as a real control.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| config_json | STRING | {"string":{"type": "string","name": "Usage","placeholder": "Click [⚙️ Configuration Panel] button to generate the widgets you need.","multiline":true,"tooltip":"You can delete this sample widget"}} | — |
| live_preview | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| parameters | parameters | — |