RunningHub Workflow Executor
Run a cloud ComfyUI workflow from your graph
- node_info_list
- file_urls
- task_id
- msg
- promptTips
- taskStatus
- fileType
- code
- json
This node calls out to RunningHub - a cloud ComfyUI platform (runninghub.ai) - and runs one of your workflows on their GPUs, then hands the results back into your local graph. So it's not a generation node in the usual sense. It's a remote-control: submit a job to RunningHub's API, wait for it to finish, collect the output file URLs.
Why this exists
RunningHub is one of the hosted-ComfyUI services people use when they don't have (or don't want to tie up) local hardware - the community routinely weighs it against RunPod for exactly this. It exposes the ComfyUI API, so anything you can build there you can trigger over HTTP. This node is Addoor's wrapper around that API: instead of writing a Python script to POST a job and poll for completion, you drop a node in your graph, point it at a workflow you've saved on RunningHub, and let it offload the heavy lifting to the cloud. Handy when the expensive step (a video render, a big upscale) should run on someone else's GPU while your local instance stays light.
How it works
You supply your RunningHub api_key and the workflow_id of a workflow saved on your account. node_info_list is where you override inputs on that remote workflow - the prompt, a seed, whichever nodes you want to change per run - in RunningHub's expected format. The node submits the task, then polls: every interval_seconds, up to max_attempts times, it asks RunningHub whether the job is done. Multiply those two and you get your timeout budget - the default 60 attempts × 5 seconds is a five-minute ceiling. When the job completes, you get back the results.
The inputs that matter
- api_key - your RunningHub API key. This is a credential; strip it before sharing the workflow.
- workflow_id - the ID of the workflow living on your RunningHub account.
- node_info_list - the per-run overrides, in RunningHub's
NODEINFOLISTformat. - max_attempts / interval_seconds - together, your polling timeout. Bump
max_attemptsfor slow jobs.
There are eight outputs, but the ones you'll wire are file_urls (the result files RunningHub produced), task_id (the job handle), taskStatus and code (did it succeed), and msg / promptTips (error text when it didn't). json is the raw response if you want to parse it yourself.
Common issues
The number-one failure is a timeout: a video or heavy job that runs longer than max_attempts × interval_seconds returns before it's done. Raise max_attempts for anything slow. Beyond that, the obvious prerequisites - you need a RunningHub account, a valid API key, and a workflow_id that actually exists there - and the node_info_list format has to match what RunningHub expects, so lift it from their API docs rather than guessing. Because this hits an external service, ordinary network and rate-limit rules apply: check taskStatus/code before trusting file_urls, and read msg when something comes back empty.
Installing ComfyUI-Addoor
ComfyUI-Addoor (葵花宝典) is a utility pack from developer Eagle-CN, and the RunningHub node lives in its RHAPI group. ComfyUI Manager: Install Custom Nodes → search "ComfyUI-Addoor" → install → restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/Eagle-CN/ComfyUI-Addoor.git
cd ComfyUI-Addoor
pip install -r requirements.txt
Restart and find it under 🌻 Addoor / RHAPI. You'll also need a RunningHub account and API key before it does anything.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| api_key | STRING | — | |
| workflow_id | STRING | — | |
| node_info_list | NODEINFOLIST | — | |
| seed | INT | 00–18446744073709550000 | — |
| max_attempts | INT | 601–1000 | — |
| interval_seconds | FLOAT | 5.001–60 | — |
Outputs (8)
| Name | Type | Description |
|---|---|---|
| file_urls | FILEURL_LIST | — |
| task_id | STRING | — |
| msg | STRING | — |
| promptTips | STRING | — |
| taskStatus | STRING | — |
| fileType | STRING | — |
| code | STRING | — |
| json | STRING | — |