A desktop app for orchestrating ComfyUI workflows on Runpod Serverless endpoints — wildcard prompts, QwenVL prompt enhancer, job queue and output gallery. Backend bundled: nothing else to install.
Companion to the workers: runpod-qwen21 (Qwen Image 2.1 T2I/Edit + Pony) · runpod-minimax-h3 (MiniMax H3 video+audio)
Get the latest build from Releases — the backend is bundled, nothing else to install:
| Platform | File |
|---|---|
| macOS (Apple Silicon) | ForgeHub-*-arm64.dmg |
| Windows | ForgeHub.Setup.*.exe |
| Linux | ForgeHub-*.AppImage · forgehub-app_*_amd64.deb |
Unsigned builds — how to open them:
- macOS: run
xattr -dr com.apple.quarantine /Applications/ForgeHub.app(or right-click → Open), or install Sentinel —brew install --cask sentinel— and drop the app on "Allow unsigned app to launch". - Windows: click "More info → Run anyway".
Then set your Runpod API key in Settings — "Detect from account" lists your endpoints automatically.
macOS / Linux
git clone https://github.com/huchukato/ForgeHub.git && cd ForgeHub
./start.shWindows
git clone https://github.com/huchukato/ForgeHub.git && cd ForgeHub
start.batThe script handles everything: installs uv if missing, creates .venv and installs the backend (pip install -e .), runs npm install + frontend build, then starts on http://127.0.0.1:8484. On first run it copies .env.example → .env: fill it in (Runpod API key + endpoint id) and relaunch.
Options: ./start.sh --build forces a frontend rebuild · ./start.sh --dev starts backend + Vite dev server (:5173, hot reload).
Prerequisites: only Node.js (for the frontend build) — everything else is handled by uv.
Jobs always run on a RunPod serverless endpoint: /run → /status poll → base64 output saved to data/storage and served from /outputs/. Set your API key + endpoint in Settings (or .env) — "Detect from account" lists your endpoints automatically.
Wildcard expansion (__pmp/…__) and runtime selects happen backend-side — the wildcards/ directory is bundled; override with FORGEHUB_WILDCARD_DIRS (colon-separated).
FORGEHUB_HOST/FORGEHUB_PORT— backend bind (default0.0.0.0:8484)RUNPOD_API_KEY/RUNPOD_ENDPOINT_ID— serverless endpointFORGEHUB_STORAGE_DIR— output/upload storage (defaultdata/storage)FORGEHUB_WILDCARD_DIRS— wildcard dirs (default./wildcards)FORGEHUB_CHAT_LLM_URL/FORGEHUB_CHAT_LLM_MODEL/FORGEHUB_CHAT_LLM_KEY— optional prompt assist (OpenAI-compatible)FORGEHUB_CHAT_BASE_URL— optional QwenVL-Mod/qwenvl/chatendpointFORGEHUB_FRONTEND_DIR— frontend dist served from/
See .env.example for the full set.
cd forgehub-app
npm run dev # Vite dev server
npm run build # production build (served by the backend)
npm run electron:dev # Electron desktop in dev
npm run electron:build # dmg/exe via electron-builderThe packaged desktop app spawns its own bundled backend on 127.0.0.1:8484 — nothing to configure. In electron:dev it loads the Vite dev server, so start the backend too (e.g. ./start.sh).
JSON files in ComfyUI API format (Export API), with an optional .meta.json for metadata/parameters:
{
"id": "pony-txt2img",
"name": "Pony XL Txt2Img",
"category": "image",
"description": "Generate images with Pony Diffusion XL",
"tags": ["pony", "sdxl"],
"parameters": [],
"outputs": ["image"]
}Categories: agent, video, image, audio, other.
