Git Repository Installer 📦
The node that installs other nodes from inside your graph
- status_message
- success
- installed_path
GitInstaller is the odd one out in the Frame Utilitys pack - a pack of video-editing nodes that happens to ship a node for installing other packs, straight from the graph. No terminal, no Manager search, no copy-pasting. You type a GitHub URL, hit run, and it clones the repo into ComfyUI/custom_nodes, pip-installs its requirements, and hands you a status message. If you've ever pasted a friend's workflow and spent twenty minutes hunting down missing nodes, you can see the appeal: a self-installing graph.
How it actually works
Behind the scenes it's just subprocess running git clone into the custom_nodes directory (it assumes that's the parent folder of the pack itself), then pip install -r requirements.txt using the same Python interpreter ComfyUI is running under. That's a real detail: because it uses sys.executable, it installs into your ComfyUI environment, so it works with the embedded Python on Windows standalone builds, not just system Python.
It's pickier about URLs than you might expect. Only github.com URLs pass validation - HTTPS or [email protected]: SSH - so no GitLab, no self-hosted, no raw tarballs. It also tidies the URL for you: pasting a .../tree/main/ link gets cleaned up and .git is appended, so a browser-copied URL works.
The inputs and outputs that matter
github_url- the repo you want. Default is a placeholder, so it's a required real value.install_requirements-trueby default; it runs pip on the repo'srequirements.txt. If the file is empty or comments-only, it says so and skips, rather than erroring.force_reinstall-falseby default. If the folder already exists and this is off, you get "Repository already exists" and nothing happens. Flip it on and it deletes the existing folder before re-cloning, so be sure before you enable it.custom_folder_name- optional; overrides the folder name derived from the URL.
Outputs: status_message (a string you can read in the UI), success (a boolean you can wire into conditional logic), and installed_path (the absolute path the repo landed in).
The honest take
ComfyUI Manager already does this, and it does it with more safety rails. Installing arbitrary code from inside the graph is exactly the attack surface that's burned this community before - malware has arrived through custom node installs, and a node that clones and executes whatever URL you feed it is that same mechanism with the guardrails removed. It's a handy tool for people who hate terminals, and genuinely useful if you're building a "set up this machine" workflow. But treat it like the foot-gun it is: only point it at repos you've actually read. Worth knowing too: it can't hot-reload. The node itself tells you to restart ComfyUI before the newly installed pack shows up, which slightly undercuts the "no terminal, no restart" fantasy.
Troubleshooting
- "Repository already exists" - the folder's there from a prior install. Enable
force_reinstall(and accept it wipes the folder) or pick acustom_folder_name. - Clone fails / "Git is not available" -
gitmust be on your system PATH. On Windows standalone installs it often isn't; installing Git for Windows fixes it. - URL rejected - it must be a GitHub URL, HTTPS or
[email protected]:. Double-check you didn't paste a GitHub user profile page.
Installing this pack
It's a standard install: in ComfyUI Manager search "ComfyUI-FrameUtilitys" (or "Frame Utility"), or clone it yourself:
cd ComfyUI/custom_nodes
git clone https://github.com/lum3on/ComfyUI-FrameUtilitys
Restart ComfyUI and you're done. No model downloads, and the pack's requirements.txt is pure comments - it leans entirely on the torch/torchvision/numpy/Pillow that ComfyUI already ships.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| github_url | STRING | https://github.com/username/repo.git | — |
| install_requirements | BOOLEAN | true | — |
| force_reinstall | BOOLEAN | false | — |
| custom_folder_nameopt | STRING | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| status_message | STRING | — |
| success | BOOLEAN | — |
| installed_path | STRING | — |