A desktop application for deploying and managing ComfyUI on cloud GPU providers (RunPod, Vast.ai) without touching a terminal. One-click model download, live output sync, GPU monitoring — all from a native window on your local machine.
- Overview
- Features
- Model Library
- Requirements
- Installation
- First Run
- Usage
- Security
- Building binaries
- Project structure
- Changelog
- Contributing
ComfyUI Cloud Manager bridges your local machine and a remote GPU server over SSH. You configure the connection once, then use the app to:
- Deploy model-download scripts from a curated library or upload your own
- Pull generated images/videos back to your Desktop automatically
- Monitor GPU usage in real time
- Download models from Civitai directly onto the remote server
No SSH terminal knowledge required for day-to-day use.
| Feature | Description |
|---|---|
| Script Library | 9 pre-built download scripts for popular video and image models, filterable by category |
| Custom script deploy | Upload and run any .sh script on the remote server |
| Civitai Download | Download any Civitai model directly to the server — no local storage used |
| Custom Nodes | Install nodes via git clone (public or private with GH token), update with git pull, or upload a local folder directly |
| Fetch once | One-shot rsync: pull all output files from the server to your local folder |
| Watch live | Background polling: new files are downloaded automatically at a configurable interval |
| GPU Monitor | Live VRAM usage, temperature, and utilization streamed via SSH |
| SSH Key Manager | Generate a dedicated ed25519 key-pair from inside the app, or select an existing one |
| System tray | App minimizes to tray; watch status is visible at a glance |
| Cross-platform | Linux, macOS, Windows |
Eight scripts are included, covering the latest open-source video and image generation models.
| Name | Size | Description |
|---|---|---|
| 10Eros v1 FP8 | ~65 GB | LTX 2.3 checkpoint + Gemma 3 12B encoder + spatial upscaler |
| 10Eros v1 BF16 | ~64 GB | Full-precision BF16 variant — recommended for A40 (48 GB VRAM) |
| Sulphur-2 FP8 | ~43 GB | LTX 2.3 Sulphur-2 checkpoint + encoder + VAE |
| LTX 2.3 Distilled 1.1 | ~55 GB | LTX 2.3 22B distilled full pack + IC-LoRA + enhancers |
| Wan 2.2 Bernini FP8 | ~43 GB | Bernini HIGH+LOW 14B FP8 + UMT5 encoder + Lightning LoRA |
| Wan 2.2 I2V FP8 | ~29 GB | Image-to-Video High+Low noise 14B FP8 |
| Name | Size | Description |
|---|---|---|
| FireRed Image Edit 1.1 | ~20 GB | FireRed 1.1 transformer + Qwen 2.5 VL encoder + Lightning LoRA |
| Qwen Image Edit AIO v23 | ~35 GB | Qwen-Image-Edit-Rapid AIO NSFW v23 + encoder + VAE |
| Z-Image Turbo FP8 | ~20 GB | Z-Image Turbo diffusion BF16 + Qwen 3.4B FP8 encoder |
All scripts download models directly from HuggingFace onto the remote server. No model files pass through your local machine.
- Node.js v18 or newer — nodejs.org/en/download
- SSH client — pre-installed on Linux, macOS, and Windows 10+
- rsync — pre-installed on Linux and macOS; on Windows install via WSL or Git for Windows
- ComfyUI already installed (use the official ComfyUI templates on both providers)
- SSH access enabled and port exposed
wgetorcurlavailable (standard on all GPU images)
Clone the repository, then run the appropriate script:
git clone https://github.com/daveinme/ComfyUI-Cloud-Manager.git
cd ComfyUI-Cloud-ManagerLinux / macOS:
./install.shWindows: double-click install.bat
On first run the script checks for Node.js, installs dependencies, creates a desktop shortcut, and launches the app.
After the first install, use the lighter start scripts — they skip the setup check and launch immediately:
Linux / macOS:
./start.shWindows: double-click start.bat
On Linux a ComfyUI Cloud Manager.desktop shortcut is also created in the app folder on first run — drag it to your Desktop or application launcher.
git clone https://github.com/daveinme/ComfyUI-Cloud-Manager.git
cd ComfyUI-Cloud-Manager
npm install
npm start- Generate an SSH key — open the SSH Key panel from the connection bar button. Click Generate key. The app creates
~/.ssh/comfy_manager(ed25519). Copy the displayed public key. - Add the public key to your server — paste it into the Authorized SSH Keys field of your RunPod or Vast.ai instance before starting it.
- Connect — enter the server host and port in the top bar, select your key, choose the provider, and click Connect. A quick connection test runs and shows GPU info in the log.
- Configure tokens — open Settings and enter your HuggingFace token (
hf_...). If you plan to download from Civitai, add your Civitai token too.
The top bar is always visible:
Provider ▾ | host or IP | port | SSH key ▾ | [Connect] [Open ComfyUI] [SSH Key]
- Provider — select RunPod or Vast.ai. This sets the default paths for models and output.
- Host / Port — copy them from your instance dashboard.
- SSH key — the dropdown lists all private keys found in
~/.ssh/. Select the one whose public key is on the server. - Connect — tests the connection and prints GPU info.
- Open ComfyUI — opens the ComfyUI web interface in your browser (port 8188).
The connection settings are saved automatically and restored on next launch.
From the library:
- Go to Deploy Script in the sidebar.
- Use the filter buttons (All / Video / Image) to browse the library.
- Click ▶ Run on any card.
The script is uploaded to /tmp/ on the server via SCP, then executed. Your HuggingFace token is injected as an environment variable for the duration of that SSH session — it is never stored on the server.
Custom script:
Click Browse next to the Custom .sh script field, select any local .sh file, and click ▶ Run.
Log output streams in real time in the log panel at the bottom.
- Go to Civitai Download in the sidebar.
- Paste a Civitai model URL (supports both
civitai.comandcivitai.red). - Choose the destination folder (
loras,checkpoints,diffusion_models, etc.). - Enter the file name (without
.safetensors). - Click ⬇ Download to Server.
The file is downloaded directly onto the remote server. Your Civitai token is passed securely from Settings.
The Custom Nodes panel lets you install and manage ComfyUI custom nodes on the remote server without opening a terminal.
Install from GitHub (git clone)
- Go to Custom Nodes in the sidebar.
- Paste the GitHub repository URL (e.g.
https://github.com/author/repo). - For private repositories, enter your GitHub personal access token in the GH Token field — it is used only for this clone and never stored on the server.
- Click ⬇ Clone. The node is cloned into
custom_nodes/and dependencies are installed automatically if arequirements.txtis present.
Update an installed node (git pull)
- Enter the node folder name (as it appears in
custom_nodes/). - Click ↑ Pull. The app runs
git pullon the remote folder.
Upload a local folder
Use this for private nodes that are not on GitHub at all (e.g. nodes under active development on your machine).
- Click Browse and select the node folder on your local machine.
- Click ⬆ Upload. The app uses rsync to transfer the folder to
custom_nodes/, automatically excluding__pycache__,.pyc, and.gitfiles. - If a
requirements.txtis found, dependencies are installed on the server automatically.
Note: after installing or updating a node, restart ComfyUI on the server for it to be loaded.
The Download Output panel has two modes:
📦 Fetch once Runs a single rsync to pull all files from the server's output folder to a local path. Choose a preset folder or browse for a custom one, set the subfolder name, and click Download Files.
👁 Watch live Polls the server at a configurable interval (default: 15 seconds) and downloads any new files automatically. Useful while a long generation is running — you see results arrive on your Desktop in real time. Watch runs in the background; the app minimizes to tray and shows the status there.
Local destination presets are configured in Settings under Local Output Paths.
Click ▶ Start Monitor to begin streaming GPU stats via SSH:
- VRAM used / total
- GPU temperature
- GPU utilization %
- Power draw
Click ■ Stop to end the stream.
| Field | Description |
|---|---|
| HuggingFace Token | hf_... token from huggingface.co/settings/tokens. Required for all model downloads. |
| Civitai Token | From your Civitai account settings. Required for Civitai downloads. |
| Local Output Paths | One preset per line, format Label|/absolute/path. These appear as quick-select buttons in the Download Output panel. |
| Remote Output Path | Override the auto-detected output path on the server (leave empty for default). |
| Remote Models Path | Override the auto-detected models path on the server (leave empty for default). |
Click Save after any change.
- Tokens are never hardcoded — all API keys live in
~/.config/comfy-cloud-manager/config.jsonon your local machine (permissions0600). - Tokens are never stored on the server — they are injected as shell environment variables for the lifetime of a single SSH session, then discarded.
- Scripts fail safely — each download script checks that
HF_TOKENis set before doing anything; if it is missing the script exits immediately with a clear error message. - SSH — the app uses
StrictHostKeyChecking=nofor convenience on ephemeral cloud instances. If you reuse the same server long-term, consider removing that flag inindex.js.
To produce standalone installable files that require no Node.js:
# Current platform only
npm run build:linux # → dist/*.AppImage
npm run build:win # → dist/*.exe (NSIS installer)
npm run build:mac # → dist/*.dmg
# All platforms at once (requires platform-specific toolchains)
npm run build:allOutput is written to dist/. Upload the binaries to GitHub Releases so users can download and run with a double-click.
Note: building for Windows on Linux requires Wine; building for macOS on Linux requires additional setup. The easiest approach is to run each build command on its native OS, or use GitHub Actions with a matrix build.
comfy_gui/
├── index.js # Main process — SSH, IPC handlers, file I/O
├── index.html # Renderer — all UI, CSS, and frontend JS
├── preload.js # Context bridge (exposes window.api to renderer)
├── log_window.html # Detached log window
├── package.json
├── install.sh # One-click launch — Linux / macOS
├── install.bat # One-click launch — Windows
└── scripts/
└── download/ # Model download scripts (.sh)
├── 10Eros_v1-bf16.sh
├── 10Eros_v1-fp8mixed.sh
├── FireRed-Image-Edit.1.1.sh
├── LTX23-Distilled-1.1.sh
├── Qwen-Image-Edit-Rapid-AIO-V23.sh
├── Sulphur2-dev-FP8-mixed.sh
├── Wan22_Bernini_fp8.sh
├── wan2.2_i2v_high_noise_14B_fp8_scaled.sh
└── Z-Image-Turbo-FP8.sh
New features
- Custom Nodes panel — install nodes via
git clone(public or private with GH token), update withgit pull, or upload a local folder via rsync. Dependencies fromrequirements.txtare installed automatically.__pycache__and.pycfiles are excluded from uploads.
Download scripts
10Eros_v1-bf16.sh— new script for the full BF16 variant of 10Eros v1 (recommended for A40 / 48 GB VRAM)LTX23-Distilled-1.1.sh— updated Kijai dynamic LoRA fromrank_105torank_111(distilled-1.1); addedsulphur_experimental_lora_v1Sulphur2-dev-FP8-mixed.sh— addedsulphur_experimental_lora_v1
- Script library with 8 download scripts
- Civitai direct download
- Fetch once / Watch live output sync
- GPU Monitor
- SSH Key Manager
- System tray
Pull requests are welcome. To add a new model to the library:
- Write a download script in
scripts/download/YourModel.shfollowing the existing pattern:- Auto-detect the ComfyUI path
- Guard on
HF_TOKEN/CIVITAI_TOKEN— no hardcoded keys - All output strings in English
- Verify installation at the end
- Add an entry to
LIBRARY_METAinindex.js:'YourModel.sh': { name: 'Display Name', gb: '~X GB', category: 'video|image', author: 'Studio', desc: 'Short description' }
- Open a PR with a brief description of the model.
MIT
