Fast-RH Settings
Keep your RunningHub API key out of the PNG you're about to post
- apiConfig
Here's the failure this node exists to prevent. You use RunningHub's official RH Settings node, which stores your api_key as a node parameter. You generate something good, you share the PNG. And because ComfyUI embeds the entire workflow - every parameter, every widget value - inside the image's metadata, you have just published your API key to anyone who opens the file in a text editor. That's not a theoretical risk; the workflow really is in the file, and it's how the whole "drag my image in to get my graph" sharing culture works.
Fast-RH Settings is a drop-in replacement for the official node that reads the key from a JSON file on your machine instead of from the node. It's the least glamorous node in this pack and the one I'd install first, because the alternative is leaking a billing credential every time you post a render.
What it does
Same job as the official RH Settings, new source for the secret. You give it three things:
base_url - the RunningHub site your key belongs to. It has to be the bare site, HTTPS, and one of the RunningHub .cn or .ai hosts, with no path, port, query string, or credentials embedded. The node strips a trailing slash for you, and validates the rest hard, so a pasted https://www.runninghub.ai/workflow/123 is rejected rather than silently mis-sent.
workflowId_webappId - the remote workflow or Web App ID you're executing. Required; empty string fails validation.
config_path - where the file holding the key lives, defaulting to config.json. Relative paths resolve against the plugin's own directory, not ComfyUI's root, so config.json means ComfyUI/custom_nodes/ComfyUI-Fast-RH/config.json. Absolute paths work too if you'd rather keep the key somewhere else entirely.
The output is one thing: apiConfig, a struct, which goes into the RunningHub RH Execute Workflow node - the same input the official RH Settings output feeds. Everything downstream of it stays exactly as it was.
Setup
Copy the example config and put your key in it:
cd ComfyUI/custom_nodes/ComfyUI-Fast-RH
cp config.example.json config.json
{
"api_key": "your-runninghub-api-key"
}
Then in the graph: set base_url to the site matching the key, paste the workflow ID, and connect apiConfig to your official RH execution node in place of the old Settings node. The key is never written into the workflow, so the workflow - and any image made with it - carries the site and the workflow ID but not the secret.
One nicety worth knowing: the node checks the config file's modification time and re-runs when it changes. Edit config.json with a new key, queue again, and the new key is used. No restart, no re-adding the node.
Install
The pack installs once for all five nodes - ComfyUI Manager (search "ComfyUI Fast-RH") or:
cd ComfyUI/custom_nodes
git clone https://github.com/mikolls/ComfyUI-Fast-RH
Restart ComfyUI afterwards. The only dependency is aiohttp>=3.8, which is worth a note because the official RunningHub packs are the ones with a track record of force-installing old numpy and transformers wheels and breaking unrelated custom nodes. This one doesn't touch your environment. You do still need the official ComfyUI_RH_APICall pack, since the executor consuming apiConfig is theirs.
Two things to be clear-eyed about
The key is on your disk, in plaintext, in a file. That's better than in every PNG you post, and worse than not having a key at all. If you share the plugin folder, a backup, or a whole ComfyUI snapshot, you've shared the key. Treat config.json the way you'd treat a .env.
ComfyUI custom nodes are arbitrary Python with your OS user's privileges. There's no sandbox and no review step - the LLMVISION incident is the proof that this gets exploited, and a node whose job is "hold my API key and call a network service" is precisely the shape of a tempting target. That's not a reason to avoid this node; it's a reason to read what you install. This one is small, its requirements.txt is one line, and it does what the README says it does.
Troubleshooting
"Missing config.json. Copy config.example.json to config.json and set your API key." You skipped the copy, or you're running the node from an unexpected directory and the default relative path isn't resolving to where the file is. Set config_path explicitly.
"api_key is not configured." The file exists but still holds the placeholder from the example, or the value is empty. The code rejects the literal placeholder string, so replace-with-your-runninghub-api-key counts as unset.
"base_url must be an HTTPS RunningHub .cn or .ai site URL." Almost always a full URL pasted from a browser tab. https://www.runninghub.ai is right; https://www.runninghub.ai/workflow/123 is not. Same error for a port, a trailing query string, or credentials in the URL.
Your key is safe going forward - not retroactively. The README is blunt about this: replacing the node doesn't remove the key from workflows and images created before you replaced it. If a key ever sat in a node parameter and you shared the output, rotate the key on RunningHub. Editing the old files later doesn't help, and you can't un-post an image.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| base_url | STRING | — | |
| workflowId_webappId | STRING | — | |
| config_path | STRING | config.json | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| apiConfig | STRUCT | — |