CozyGen Dynamic Input
One node that turns any ComfyUI field into a phone-friendly control
- *
ComfyUI is great until you're on a couch with a phone and the graph you built at a desk is a wall of tiny wires. That's the exact pain CozyGen exists for, and this node is its beating heart. The author's own framing says it all: he wanted to make dumb cat pictures with his desktop ComfyUI from his phone, hated driving the graph from a phone, and "vibe-coded" a solution. CozyGenDynamicInput is the original "put a field on a web page" node. Drop it into a workflow, wire its output into whatever you want to control remotely, and that parameter shows up as a proper input control on a mobile web UI served by your ComfyUI instance at /cozygen.
It's the node behind the pack's whole pitch: a mobile-friendly controller for workflows you already built, not a new generation tool.
How it works
Behind the scenes it's almost a pass-through, and that's deliberate. The node holds a param_type (STRING, INT, FLOAT, BOOLEAN, or DROPDOWN), converts default_value into that type, and hands it back. The clever half isn't the Python - it's the React frontend that ships in the pack. When you pick a workflow on the /cozygen page, it reads the workflow's API JSON, finds every CozyGen input node, and renders a control that matches the declared type. On generate, your typed-in values get injected back into the queue request. The node is dumb on purpose; the web app does the adapting.
The inputs that matter
param_name- the label shown on the web page. Make it something you'll recognize at a glance.priority- sorts the page. 0 pushes the field toward the top; the default 10 sinks it.param_type- picks the control: text box, number, toggle, or dropdown.default_value- the starting value, used whenever the page doesn't supply one.
The optional trio is where it gets interesting: add_randomize_toggle adds a Randomize checkbox (you want this on seeds), choice_type names a model folder like loras so a DROPDOWN lists real files, and display_bypass lets you bypass a connected loader - mostly for switching a LoRA off from the phone.
The single output is typed ANY, so it plugs into virtually anything: KSampler's seed, a text encoder's text, a checkpoint loader's model name.
Install
Install via ComfyUI Manager (search "CozyGen"), or:
cd ComfyUI/custom_nodes
git clone https://github.com/gsusgg/ComfyUI_CozyGen
cd ComfyUI_CozyGen
pip install -r requirements.txt
Restart ComfyUI. To reach it from another device, start ComfyUI with --listen and open http://<your-comfyui-ip>:8188/cozygen. One workflow step people miss: after building your workflow, export it with API into the pack's workflows/ folder so the page can find it. If you're exposing ComfyUI beyond localhost, remember its API is unauthenticated by default - keep it on a trusted network.
Where people get tripped up
- Values live in your browser cache, not the workflow. Reload the workflow in ComfyUI and the page-side settings come back as defaults. That's the main reason the author later split this node into the typed Static siblings (CozyGen Int/Float/String/Choice Input) that keep values in the workflow graph. If you're rebuilding, the newer ones are the safer pick.
param_typeis on you. Say STRING but wire into an INT input and things get loose, because the output is typed ANY.- The README's known-issue list still applies: the web page needs to be the active tab when generation finishes, or the live preview won't show (the image still lands in the gallery).
It's a small, quirky, single-purpose node - but if your use case is "drive my desktop ComfyUI from the couch," this is the one that makes it work.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| param_name | STRING | Dynamic Parameter | — |
| priority | INT | 10 | — |
| param_type | COMBO | STRING | 5 options: STRING, INT, FLOAT, BOOLEAN, DROPDOWN |
| default_value | STRING | — | |
| add_randomize_toggleopt | BOOLEAN | false | — |
| choice_typeopt | STRING | — | |
| display_bypassopt | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| * | * | — |