C2C Farm Cluster Status
Peek at your whole render farm's capacity in one node — without opening a dashboard
- cluster_json
If you've ever queued a big render and sat there wondering whether your backend is actually free, C2C_ClusterStatus is the node that answers it from inside the graph. It polls every registered render-farm backend and returns live capacity - queue depth, VRAM, reachability - as a JSON string. No dashboard tab, no browser, just wire it to a text display node and you've got a health check you can eyeball before hitting queue.
This is the monitoring half of the pack's C2C Farm subsystem, which also includes C2C_Submit (dispatch a workflow to a remote backend) and C2C_JobHistory (audit log). The whole thing is a Tractor-style spooler that speaks the standard ComfyUI HTTP API to each backend - the backends themselves are full ComfyUI instances, whether they're Docker containers on your LAN, an AKS pool, or a RunPod pod. If you're not running a farm, this node has nothing to show you; but if you are, it's the cheapest possible way to see cluster state.
How it works
Pick a single backend or all, and the node walks the registered backends from renderfarm/config/backends.json, asking each enabled one for its capacity() through its adapter. Disabled backends get marked "reachable": false, "disabled": true; a backend that throws while being polled gets an error message truncated into the report instead of crashing the graph. The output is a JSON object with a backends array - parse it, stringify it, or just read it in a text node.
Two implementation details are worth knowing. First, the node forces a refresh on roughly a five-second cadence (its IS_CHANGED buckets on time.time() // 5), so it doesn't sit stale in the graph - it genuinely reflects live state. Second, it reports capacity through the backend adapters, which means the exact fields (queue depth, VRAM free, etc.) depend on what the adapter can read from that backend. If a backend reports reachable but you expected more detail, check the adapter rather than the node.
Inputs and output
Just one input: backend, an enum of all plus every registered backend name. If you have no backends configured, the list collapses to a placeholder. Output is a single cluster_json STRING.
Installing it
This ships in Code2Collapse/ComfyUI-CustomNodePacks. ComfyUI Manager → search "CustomNodePacks", or:
cd ComfyUI/custom_nodes
git clone https://github.com/Code2Collapse/ComfyUI-CustomNodePacks.git
Restart ComfyUI. The farm subsystem pulls in a couple of extra packages (requests, websocket-client) plus optional cloud-storage SDKs - the renderfarm's own requirements file spells out which provider needs which pip install. For just this node, though, there's nothing extra to fetch.
Gotchas
The honest gotcha is configuration: a fresh clone ships with backends.json where every backend is "enabled": false, so the first thing you'll see is a JSON full of disabled: true entries. That's not a bug - it's the pack refusing to phone random hosts. Edit renderfarm/config/backends.json, point a backend at your real ComfyUI instance, set enabled: true, and restart. And don't expect this node to work standalone on a machine that never set up a farm; it's a dashboard-in-a-node, and a dashboard needs something to watch.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| backend | COMBO | One backend, or 'all' for the whole cluster. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| cluster_json | STRING | — |