PrimitivePlus
One control hub for every widget you're tired of hunting for
- connect_to_widget_input_1
- connect_to_widget_input_2
- connect_to_widget_input_3
- connect_to_widget_input_4
- connect_to_widget_input_5
- connect_to_widget_input_6
- connect_to_widget_input_7
- connect_to_widget_input_8
- connect_to_widget_input_9
- connect_to_widget_input_10
The name undersells it. PrimitivePlus is a control hub that lets you drive the widgets on other nodes from one place - think ten tiny sliders and text boxes on a single node instead of clicking through ten separate ones. The pack's own description calls it "a single control hub" that "manages and proxies multiple Primitive-style widgets from different nodes," and that's exactly the deal.
If you've used ComfyUI's core Primitive node, you know the pattern: convert a widget to input, plug a value source into it, and that value is now defined in one authoritative place instead of buried in a widget. PrimitivePlus is that same mechanic, multiplied - it has ten outputs, and each one can babysit a different widget on a different node.
How it works
The Python side is almost embarrassingly simple: it reads its hidden prompt data to find which widget inputs each of its outputs is wired to, and emits each value as a one-item list. The magic lives in the frontend extension. When you drag one of PrimitivePlus's outputs onto a converted widget input on another node, the extension tracks the connection. Type a value in the hub, and it live-pushes that value onto the target widget - you see the downstream node's field update before you even run the graph. It's bidirectional, too: change the value at the source node and the hub follows.
The outputs are named connect_to_widget_input_1 through connect_to_widget_input_10, all * type, all lists. Connect one to a target's converted input and type away.
What you'd use it for
The classic use is a "control strip" workflow: five different CLIP Text Encode nodes, or five samplers with different seeds, all driven from one PrimitivePlus node sitting at the top of the canvas. You get the tidy single-source-of-truth benefit that value nodes are for (see the node-plumbing doc - one value, many consumers), without a spiderweb of wires. It's especially nice in ComfyPanel's intended Photoshop workflow, where you want a compact panel of editable values rather than a sprawling graph.
The fiddly bits
Because the live-push is frontend glue, it can occasionally get out of sync after you reload a workflow. If you type a value and the target widget doesn't move, the fix is boring: reconvert the target widget to input, or disconnect and reconnect the wire to re-establish the tracking. When you actually run the graph, the values always flow correctly through the connection - the live preview is a nicety, not the mechanism. Empty values come through as [""], so a blank hub port acts like an empty string rather than a hard error, which can silently feed a blank prompt somewhere if you're not careful.
Installing it
It's part of ComfyPanel:
cd ComfyUI/custom_nodes
git clone https://github.com/Ginolazy/ComfyPanel
Restart ComfyUI - or search ComfyPanel in ComfyUI Manager. Requirements are the standard torch/numpy/Pillow plus kornia, scipy, and opencv-python; Manager will flag anything missing. No models to download, and you don't need the Photoshop plugin this pack is famous for - PrimitivePlus runs fine as a plain ComfyUI node.
Inputs (0)
No inputs
Outputs (10)
| Name | Type | Description |
|---|---|---|
| connect_to_widget_input_1 | * | — |
| connect_to_widget_input_2 | * | — |
| connect_to_widget_input_3 | * | — |
| connect_to_widget_input_4 | * | — |
| connect_to_widget_input_5 | * | — |
| connect_to_widget_input_6 | * | — |
| connect_to_widget_input_7 | * | — |
| connect_to_widget_input_8 | * | — |
| connect_to_widget_input_9 | * | — |
| connect_to_widget_input_10 | * | — |