Any Adapter
Sneak Any Type Past ComfyUI's Type Checker
- value
- VALUE
You've hit it already if you've been here a week: you drag a wire between two nodes, and ComfyUI draws nothing - or worse, a red link - because the source output type doesn't match what the destination wants. Sometimes the types genuinely are incompatible and you shouldn't force it. Sometimes they're the same kind of data (a string is a string) and ComfyUI is just being pedantic. Any Adapter is the escape hatch for the second case.
It's a pass-through with one job: accept any input type and hand back an * (wildcard) output that can be connected to any socket. Wire something in on value, get the exact same thing back out on VALUE. It doesn't transform anything, it doesn't convert types - it just tells ComfyUI's validation "trust me, this is fine."
The trick that makes it work
The wildcard type is ComfyUI's one escape hatch from its own type system. A node that declares * accepts anything, and its * output plugs into anything. Any Adapter is that mechanism with no other behavior bolted on - no routing, no logic, just the type bypass.
Here's the classic sequence, straight from the pack's own README and the same "convert widget to input" mechanic the core Primitive nodes use:
- Add Any Adapter.
- Connect your source node to
value. - Right-click the destination node and pick Convert [parameter] to input on whatever widget you want to feed.
- Connect
VALUEto that freshly created input.
The real-world case that saves people constantly: you've got a path string from a file-picker node and the destination is a combo/COMBO input (a dropdown). A dropdown normally only takes values from its own widget list, and ComfyUI won't let you wire a string into it. Any Adapter bridges that. It's also the standard workaround for nodes with hand-rolled validation that rejects perfectly good connections.
Where to be careful
The bypass is real, and that's exactly the trap. When you erase the type, the graph stops telling you what's flowing where - the backend will happily let you feed a latent into a text field and it'll fail at runtime with a cryptic error instead of a clean "can't connect." ComfyUI's ecosystem already had this argument with the "Anything Anywhere"-style mega-packs, and the verdict is: type erasure is a debugging tax. Use Any Adapter to bridge one mismatched wire, not to make your whole graph type-blind. And remember the node itself does no coercion - if the downstream node can't actually make sense of what you shoved through, no amount of * will fix it.
Install
It ships in the comfyui-sg-nodes pack (by sebagallo). Easiest path: ComfyUI Manager → search comfyui-sg-nodes → install → restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/sebagallo/comfyui-sg-nodes
Then restart ComfyUI. There are no model downloads and no extra pip dependencies - the only runtime library (requests) is one ComfyUI already ships. All the nodes land under the SGNodes category, and this one is in SGNodes/Utilities.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| valueopt | * | Connect any node output here (optional). |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| VALUE | * | — |