GPU Profile Selector (Inteliweb)
One knob to tell your workflow how much VRAM it has
- GPU PROFILE
This node doesn't generate anything, and that's the point. GPU Profile Selector is a small control node that just answers one question out loud: which GPU tier are we on right now? It emits LOW, MEDIUM, HIGH, or ULTRA, and that single token is what you use to tell the rest of your workflow which model stack it should reach for. It's the input half of the Inteliweb "one workflow, many machines" story - pair it with the Model Profile Router and you can run the same graph on a 6 GB laptop card or a 24 GB workstation by flipping one dropdown instead of rewiring loaders.
How it works
The backend is deliberately boring. select_profile() just normalizes whatever profile you picked and returns it as an INTELIWEB_GPU_PROFILE value - a custom type that only the Inteliweb Router understands. All the interesting behavior is in the frontend. When you set scope to GLOBAL, the node publishes its profile onto a named workflow channel (gpu_profile by default), and every Router in the graph that listens on that channel follows along without a single wire connecting them. Set scope to LOCAL and it's strictly a wired signal - the value only travels out the GPU PROFILE socket. If you add a second GLOBAL selector, the frontend hands it a unique channel name (gpu_profile_1, gpu_profile_2, …) automatically so two selectors don't stomp each other.
The inputs that matter
There are only three, and you'll touch maybe two:
profile- LOW / MEDIUM / HIGH / ULTRA. Defaults to HIGH. This is the knob.scope- GLOBAL (publish to a channel) or LOCAL (wire only). Defaults to GLOBAL.global_channel- the channel name. Leave it alone unless you're juggling multiple selectors; extra ones get auto-suffixed anyway.
The single output, GPU PROFILE, is meant to plug into a Model Profile Router's profile_in input, or be stashed with a Set/Get pair and picked up later. On its own it does absolutely nothing downstream - don't wire it into a KSampler and wonder why nothing changed.
Installing it
It ships with the whole Inteliweb pack, so install once and every node in this family shows up.
cd ComfyUI/custom_nodes
git clone https://github.com/maoper11/comfyui_inteliweb_nodes.git
cd comfyui_inteliweb_nodes
python -m pip install -r requirements.txt
ComfyUI Manager works too - search "ComfyUI_Inteliweb_nodes". Dependencies are just psutil and nvidia-ml-py, so there's no heavy install and no model download; restart ComfyUI after and you're done.
Where people get confused
Because this is a brand-new addition (v0.20.5) to a pack that barely has a community footprint yet, most "issues" are expectations. A selector alone changes nothing - you need the Router for the profile to actually swap loaders. Also, if you saved a workflow with a GLOBAL selector and reopen it without the Router, the channel silently exists but nobody listens, which reads as "broken" until you remember it's half of a pair. And GLOBAL routing is a frontend feature: if you're driving ComfyUI purely through the API, the wire path (profile_in) is the reliable one. It's a niche tool for people who keep one workflow portable across machines - but for that specific job, it's the cleanest option I've seen.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| scope | COMBO | GLOBAL | GLOBAL publishes to the selected channel; LOCAL only emits GPU PROFILE. |
| profile | COMBO | HIGH | GPU/VRAM profile emitted by this node. |
| global_channel | STRING | gpu_profile | Global synchronization channel name. Additional GLOBAL selectors are automatically assigned a unique channel. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| GPU PROFILE | INTELIWEB_GPU_PROFILE | — |