Nodes/ComfyUI-Addoor/RunningHub Workflow Executor
ComfyUI Node

RunningHub Workflow Executor

Run a cloud ComfyUI workflow from your graph

By Eagle-CN·Created 2 years ago·Updated about a year ago· 75
RunningHub Workflow Executor
  • node_info_list
  • file_urls
  • task_id
  • msg
  • promptTips
  • taskStatus
  • fileType
  • code
  • json
api_key
workflow_id
seed0
max_attempts60
interval_seconds5.00

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 NODEINFOLIST format.
  • max_attempts / interval_seconds - together, your polling timeout. Bump max_attempts for 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.

Category🌻 Addoor/RHAPI

Inputs (6)

NameTypeDefaultDescription
api_keySTRING
workflow_idSTRING
node_info_listNODEINFOLIST
seedINT00–18446744073709550000
max_attemptsINT601–1000
interval_secondsFLOAT5.001–60

Outputs (8)

NameTypeDescription
file_urlsFILEURL_LIST
task_idSTRING
msgSTRING
promptTipsSTRING
taskStatusSTRING
fileTypeSTRING
codeSTRING
jsonSTRING