Compare commits
44 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4f3c48cb4f | ||
|
|
b1b02dc8e5 | ||
|
|
a060ff52ad | ||
|
|
42d73fe25d | ||
|
|
b5946344dc | ||
|
|
dd46e45aba | ||
|
|
61ee4549e1 | ||
|
|
9767f6244f | ||
|
|
0038d74b86 | ||
|
|
6b2163c61f | ||
|
|
56f976c6b5 | ||
|
|
3ee0bfe1ea | ||
|
|
cd9f003da1 | ||
|
|
c452524e3e | ||
|
|
13f98ddbd6 | ||
|
|
9a5c7c10de | ||
|
|
41998565db | ||
|
|
3c64a8eb18 | ||
|
|
962ba0b358 | ||
|
|
16780f91a3 | ||
|
|
5e5a06b0ff | ||
|
|
859e0f20b8 | ||
|
|
9a15d5ce4e | ||
|
|
e4bba28579 | ||
|
|
f3efddd849 | ||
|
|
39190f97d4 | ||
|
|
3b037c5011 | ||
|
|
79387d5396 | ||
|
|
62e747b74a | ||
|
|
9643aed8f8 | ||
|
|
f4fb9e3ab4 | ||
|
|
30487e6108 | ||
|
|
fd2d285af5 | ||
|
|
87bbf59d87 | ||
|
|
37e954626d | ||
|
|
829c7d8be6 | ||
|
|
3274885803 | ||
|
|
c6153ea67d | ||
|
|
191bffedcb | ||
|
|
9ddda81372 | ||
|
|
ddb3c4e3ce | ||
|
|
c87d27630b | ||
|
|
c1d0bb830e | ||
|
|
93dde4c985 |
34
README.md
34
README.md
@@ -2,9 +2,11 @@
|
|||||||
|
|
||||||
**ComfyUI-Manager** is an extension designed to enhance the usability of [ComfyUI](https://github.com/comfyanonymous/ComfyUI). It offers management functions to **install, remove, disable, and enable** various custom nodes of ComfyUI. Furthermore, this extension provides a hub feature and convenience functions to access a wide range of information within ComfyUI.
|
**ComfyUI-Manager** is an extension designed to enhance the usability of [ComfyUI](https://github.com/comfyanonymous/ComfyUI). It offers management functions to **install, remove, disable, and enable** various custom nodes of ComfyUI. Furthermore, this extension provides a hub feature and convenience functions to access a wide range of information within ComfyUI.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## NOTICE
|
## NOTICE
|
||||||
|
* V3.10: `double-click feature` is removed
|
||||||
|
* This feature has been moved to https://github.com/ltdrdata/comfyui-connection-helper
|
||||||
* V3.3.2: Overhauled. Officially supports [https://comfyregistry.org/](https://comfyregistry.org/).
|
* V3.3.2: Overhauled. Officially supports [https://comfyregistry.org/](https://comfyregistry.org/).
|
||||||
* You can see whole nodes info on [ComfyUI Nodes Info](https://ltdrdata.github.io/) page.
|
* You can see whole nodes info on [ComfyUI Nodes Info](https://ltdrdata.github.io/) page.
|
||||||
|
|
||||||
@@ -25,6 +27,7 @@ To install ComfyUI-Manager in addition to an existing installation of ComfyUI, y
|
|||||||
- standalone version
|
- standalone version
|
||||||
- select option: use windows default console window
|
- select option: use windows default console window
|
||||||
2. Download [scripts/install-manager-for-portable-version.bat](https://github.com/ltdrdata/ComfyUI-Manager/raw/main/scripts/install-manager-for-portable-version.bat) into installed `"ComfyUI_windows_portable"` directory
|
2. Download [scripts/install-manager-for-portable-version.bat](https://github.com/ltdrdata/ComfyUI-Manager/raw/main/scripts/install-manager-for-portable-version.bat) into installed `"ComfyUI_windows_portable"` directory
|
||||||
|
- Don't click. Right click the link and use save as...
|
||||||
3. double click `install-manager-for-portable-version.bat` batch file
|
3. double click `install-manager-for-portable-version.bat` batch file
|
||||||
|
|
||||||

|

|
||||||
@@ -50,6 +53,7 @@ python -m venv venv
|
|||||||
pip install comfy-cli
|
pip install comfy-cli
|
||||||
comfy install
|
comfy install
|
||||||
```
|
```
|
||||||
|
* See also: https://github.com/Comfy-Org/comfy-cli
|
||||||
|
|
||||||
|
|
||||||
### Installation[method4] (Installation for linux+venv: ComfyUI + ComfyUI-Manager)
|
### Installation[method4] (Installation for linux+venv: ComfyUI + ComfyUI-Manager)
|
||||||
@@ -58,6 +62,7 @@ To install ComfyUI with ComfyUI-Manager on Linux using a venv environment, you c
|
|||||||
* **prerequisite: python-is-python3, python3-venv, git**
|
* **prerequisite: python-is-python3, python3-venv, git**
|
||||||
|
|
||||||
1. Download [scripts/install-comfyui-venv-linux.sh](https://github.com/ltdrdata/ComfyUI-Manager/raw/main/scripts/install-comfyui-venv-linux.sh) into empty install directory
|
1. Download [scripts/install-comfyui-venv-linux.sh](https://github.com/ltdrdata/ComfyUI-Manager/raw/main/scripts/install-comfyui-venv-linux.sh) into empty install directory
|
||||||
|
- Don't click. Right click the link and use save as...
|
||||||
- ComfyUI will be installed in the subdirectory of the specified directory, and the directory will contain the generated executable script.
|
- ComfyUI will be installed in the subdirectory of the specified directory, and the directory will contain the generated executable script.
|
||||||
2. `chmod +x install-comfyui-venv-linux.sh`
|
2. `chmod +x install-comfyui-venv-linux.sh`
|
||||||
3. `./install-comfyui-venv-linux.sh`
|
3. `./install-comfyui-venv-linux.sh`
|
||||||
@@ -90,7 +95,7 @@ This repository provides Colab notebooks that allow you to install and use Comfy
|
|||||||
|
|
||||||
2. If you click on 'Install Custom Nodes' or 'Install Models', an installer dialog will open.
|
2. If you click on 'Install Custom Nodes' or 'Install Models', an installer dialog will open.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
* There are three DB modes: `DB: Channel (1day cache)`, `DB: Local`, and `DB: Channel (remote)`.
|
* There are three DB modes: `DB: Channel (1day cache)`, `DB: Local`, and `DB: Channel (remote)`.
|
||||||
* `Channel (1day cache)` utilizes Channel cache information with a validity period of one day to quickly display the list.
|
* `Channel (1day cache)` utilizes Channel cache information with a validity period of one day to quickly display the list.
|
||||||
@@ -146,7 +151,15 @@ In `ComfyUI-Manager` V3.0 and later, configuration files and dynamically generat
|
|||||||
* Saved snapshot files: `<USER_DIRECTORY>/default/ComfyUI-Manager/snapshots`
|
* Saved snapshot files: `<USER_DIRECTORY>/default/ComfyUI-Manager/snapshots`
|
||||||
* Startup script files: `<USER_DIRECTORY>/default/ComfyUI-Manager/startup-scripts`
|
* Startup script files: `<USER_DIRECTORY>/default/ComfyUI-Manager/startup-scripts`
|
||||||
* Component files: `<USER_DIRECTORY>/default/ComfyUI-Manager/components`
|
* Component files: `<USER_DIRECTORY>/default/ComfyUI-Manager/components`
|
||||||
|
|
||||||
|
|
||||||
|
## `extra_model_paths.yaml` Configuration
|
||||||
|
The following settings are applied based on the section marked as `is_default`.
|
||||||
|
|
||||||
|
* `custom_nodes`: Path for installing custom nodes
|
||||||
|
* Importing does not need to adhere to the path set as `is_default`, but this is the path where custom nodes are installed by the `ComfyUI Nodes Manager`.
|
||||||
|
* `download_model_base`: Path for downloading models
|
||||||
|
|
||||||
|
|
||||||
## Snapshot-Manager
|
## Snapshot-Manager
|
||||||
* When you press `Save snapshot` or use `Update All` on `Manager Menu`, the current installation status snapshot is saved.
|
* When you press `Save snapshot` or use `Update All` on `Manager Menu`, the current installation status snapshot is saved.
|
||||||
@@ -174,17 +187,18 @@ In `ComfyUI-Manager` V3.0 and later, configuration files and dynamically generat
|
|||||||
|
|
||||||
## Custom node support guide
|
## Custom node support guide
|
||||||
|
|
||||||
|
* **NOTICE:**
|
||||||
|
- You should no longer assume that the GitHub repository name will match the subdirectory name under `custom_nodes`. The name of the subdirectory under `custom_nodes` will now use the normalized name from the `name` field in `pyproject.toml`.
|
||||||
|
- Avoid relying on directory names for imports whenever possible.
|
||||||
|
|
||||||
* https://docs.comfy.org/registry/overview
|
* https://docs.comfy.org/registry/overview
|
||||||
|
* https://github.com/Comfy-Org/rfcs
|
||||||
|
|
||||||
|
**Special purpose files** (optional)
|
||||||
* **Special purpose files** (optional)
|
* `pyproject.toml` - Spec file for comfyregistry.
|
||||||
* `node_list.json` - When your custom nodes pattern of NODE_CLASS_MAPPINGS is not conventional, it is used to manually provide a list of nodes for reference. ([example](https://github.com/melMass/comfy_mtb/raw/main/node_list.json))
|
* `node_list.json` - When your custom nodes pattern of NODE_CLASS_MAPPINGS is not conventional, it is used to manually provide a list of nodes for reference. ([example](https://github.com/melMass/comfy_mtb/raw/main/node_list.json))
|
||||||
* `requirements.txt` - When installing, this pip requirements will be installed automatically
|
* `requirements.txt` - When installing, this pip requirements will be installed automatically
|
||||||
* `install.py` - When installing, it is automatically called
|
* `install.py` - When installing, it is automatically called
|
||||||
* `uninstall.py` - When uninstalling, it is automatically called
|
|
||||||
* `disable.py` - When disabled, it is automatically called
|
|
||||||
* When installing a custom node setup `.js` file, it is recommended to write this script for disabling.
|
|
||||||
* `enable.py` - When enabled, it is automatically called
|
|
||||||
* **All scripts are executed from the root path of the corresponding custom node.**
|
* **All scripts are executed from the root path of the corresponding custom node.**
|
||||||
|
|
||||||
|
|
||||||
@@ -267,6 +281,7 @@ In `ComfyUI-Manager` V3.0 and later, configuration files and dynamically generat
|
|||||||
* If you add the item `skip_migration_check = True` to `config.ini`, it will not check whether there are nodes that can be migrated at startup.
|
* If you add the item `skip_migration_check = True` to `config.ini`, it will not check whether there are nodes that can be migrated at startup.
|
||||||
* This option can be used if performance issues occur in a Colab+GDrive environment.
|
* This option can be used if performance issues occur in a Colab+GDrive environment.
|
||||||
|
|
||||||
|
|
||||||
## Scanner
|
## Scanner
|
||||||
When you run the `scan.sh` script:
|
When you run the `scan.sh` script:
|
||||||
|
|
||||||
@@ -290,6 +305,7 @@ When you run the `scan.sh` script:
|
|||||||
* if `SSL: CERTIFICATE_VERIFY_FAILED` error is occured.
|
* if `SSL: CERTIFICATE_VERIFY_FAILED` error is occured.
|
||||||
* Edit `config.ini` file: add `bypass_ssl = True`
|
* Edit `config.ini` file: add `bypass_ssl = True`
|
||||||
|
|
||||||
|
|
||||||
## Security policy
|
## Security policy
|
||||||
* Edit `config.ini` file: add `security_level = <LEVEL>`
|
* Edit `config.ini` file: add `security_level = <LEVEL>`
|
||||||
* `strong`
|
* `strong`
|
||||||
|
|||||||
16
cm-cli.py
16
cm-cli.py
@@ -20,12 +20,16 @@ sys.path.append(os.path.join(os.path.dirname(__file__), "glob"))
|
|||||||
|
|
||||||
import manager_util
|
import manager_util
|
||||||
|
|
||||||
|
# read env vars
|
||||||
|
# COMFYUI_FOLDERS_BASE_PATH is not required in cm-cli.py
|
||||||
|
# `comfy_path` should be resolved before importing manager_core
|
||||||
comfy_path = os.environ.get('COMFYUI_PATH')
|
comfy_path = os.environ.get('COMFYUI_PATH')
|
||||||
if comfy_path is None:
|
if comfy_path is None:
|
||||||
try:
|
try:
|
||||||
import folder_paths
|
import folder_paths
|
||||||
comfy_path = os.path.join(os.path.dirname(folder_paths.__file__))
|
comfy_path = os.path.join(os.path.dirname(folder_paths.__file__))
|
||||||
except:
|
except:
|
||||||
|
print("\n[bold yellow]WARN: The `COMFYUI_PATH` environment variable is not set. Assuming `custom_nodes/ComfyUI-Manager/../../` as the ComfyUI path.[/bold yellow]", file=sys.stderr)
|
||||||
comfy_path = os.path.abspath(os.path.join(manager_util.comfyui_manager_path, '..', '..'))
|
comfy_path = os.path.abspath(os.path.join(manager_util.comfyui_manager_path, '..', '..'))
|
||||||
|
|
||||||
sys.path.append(comfy_path)
|
sys.path.append(comfy_path)
|
||||||
@@ -36,14 +40,7 @@ import manager_core as core
|
|||||||
from manager_core import unified_manager
|
from manager_core import unified_manager
|
||||||
import cnr_utils
|
import cnr_utils
|
||||||
|
|
||||||
|
|
||||||
comfyui_manager_path = os.path.abspath(os.path.dirname(__file__))
|
comfyui_manager_path = os.path.abspath(os.path.dirname(__file__))
|
||||||
comfy_path = os.environ.get('COMFYUI_PATH')
|
|
||||||
|
|
||||||
if comfy_path is None:
|
|
||||||
print("\n[bold yellow]WARN: The `COMFYUI_PATH` environment variable is not set. Assuming `custom_nodes/ComfyUI-Manager/../../` as the ComfyUI path.[/bold yellow]", file=sys.stderr)
|
|
||||||
comfy_path = os.path.abspath(os.path.join(comfyui_manager_path, '..', '..'))
|
|
||||||
|
|
||||||
|
|
||||||
cm_global.pip_blacklist = ['torch', 'torchsde', 'torchvision']
|
cm_global.pip_blacklist = ['torch', 'torchsde', 'torchvision']
|
||||||
cm_global.pip_downgrade_blacklist = ['torch', 'torchsde', 'torchvision', 'transformers', 'safetensors', 'kornia']
|
cm_global.pip_downgrade_blacklist = ['torch', 'torchsde', 'torchvision', 'transformers', 'safetensors', 'kornia']
|
||||||
@@ -94,7 +91,8 @@ class Ctx:
|
|||||||
self.no_deps = False
|
self.no_deps = False
|
||||||
self.mode = 'cache'
|
self.mode = 'cache'
|
||||||
self.user_directory = None
|
self.user_directory = None
|
||||||
self.custom_nodes_paths = [os.path.join(core.comfy_path, 'custom_nodes')]
|
self.custom_nodes_paths = [os.path.join(core.comfy_base_path, 'custom_nodes')]
|
||||||
|
self.manager_files_directory = os.path.dirname(__file__)
|
||||||
|
|
||||||
if Ctx.folder_paths is None:
|
if Ctx.folder_paths is None:
|
||||||
try:
|
try:
|
||||||
@@ -117,7 +115,7 @@ class Ctx:
|
|||||||
if channel is not None:
|
if channel is not None:
|
||||||
self.channel = channel
|
self.channel = channel
|
||||||
|
|
||||||
asyncio.run(unified_manager.reload(cache_mode=self.mode == 'cache', dont_wait=False))
|
asyncio.run(unified_manager.reload(cache_mode=self.mode, dont_wait=False))
|
||||||
asyncio.run(unified_manager.load_nightly(self.channel, self.mode))
|
asyncio.run(unified_manager.load_nightly(self.channel, self.mode))
|
||||||
|
|
||||||
def set_no_deps(self, no_deps):
|
def set_no_deps(self, no_deps):
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -9,7 +9,7 @@
|
|||||||
"comfyui-layerdiffuse",
|
"comfyui-layerdiffuse",
|
||||||
"comfyui-liveportraitkj",
|
"comfyui-liveportraitkj",
|
||||||
"aigodlike-comfyui-translation",
|
"aigodlike-comfyui-translation",
|
||||||
"comfyui-reactor-node",
|
"comfyui-reactor",
|
||||||
"comfyui_instantid",
|
"comfyui_instantid",
|
||||||
"sd-dynamic-thresholding",
|
"sd-dynamic-thresholding",
|
||||||
"pr-was-node-suite-comfyui-47064894",
|
"pr-was-node-suite-comfyui-47064894",
|
||||||
|
|||||||
5870
github-stats.json
5870
github-stats.json
File diff suppressed because it is too large
Load Diff
@@ -5,6 +5,8 @@ import manager_util
|
|||||||
import toml
|
import toml
|
||||||
import os
|
import os
|
||||||
import asyncio
|
import asyncio
|
||||||
|
import json
|
||||||
|
import time
|
||||||
|
|
||||||
base_url = "https://api.comfy.org"
|
base_url = "https://api.comfy.org"
|
||||||
|
|
||||||
@@ -13,33 +15,64 @@ lock = asyncio.Lock()
|
|||||||
|
|
||||||
is_cache_loading = False
|
is_cache_loading = False
|
||||||
|
|
||||||
async def get_cnr_data(page=1, limit=1000, cache_mode=True, dont_wait=True):
|
async def get_cnr_data(cache_mode=True, dont_wait=True):
|
||||||
|
try:
|
||||||
|
return await _get_cnr_data(cache_mode, dont_wait)
|
||||||
|
except asyncio.TimeoutError:
|
||||||
|
print("A timeout occurred during the fetch process from ComfyRegistry.")
|
||||||
|
return await _get_cnr_data(cache_mode=True, dont_wait=True) # timeout fallback
|
||||||
|
|
||||||
|
async def _get_cnr_data(cache_mode=True, dont_wait=True):
|
||||||
global is_cache_loading
|
global is_cache_loading
|
||||||
|
|
||||||
uri = f'{base_url}/nodes?page={page}&limit={limit}'
|
uri = f'{base_url}/nodes'
|
||||||
|
|
||||||
def touch(json_obj):
|
async def fetch_all():
|
||||||
for v in json_obj['nodes']:
|
remained = True
|
||||||
|
page = 1
|
||||||
|
|
||||||
|
full_nodes = {}
|
||||||
|
while remained:
|
||||||
|
sub_uri = f'{base_url}/nodes?page={page}&limit=30'
|
||||||
|
sub_json_obj = await asyncio.wait_for(manager_util.get_data_with_cache(sub_uri, cache_mode=False, silent=True), timeout=30)
|
||||||
|
remained = page < sub_json_obj['totalPages']
|
||||||
|
|
||||||
|
for x in sub_json_obj['nodes']:
|
||||||
|
full_nodes[x['id']] = x
|
||||||
|
|
||||||
|
if page % 5 == 0:
|
||||||
|
print(f"FETCH ComfyRegistry Data: {page}/{sub_json_obj['totalPages']}")
|
||||||
|
|
||||||
|
page += 1
|
||||||
|
time.sleep(0.5)
|
||||||
|
|
||||||
|
print("FETCH ComfyRegistry Data [DONE]")
|
||||||
|
|
||||||
|
for v in full_nodes.values():
|
||||||
if 'latest_version' not in v:
|
if 'latest_version' not in v:
|
||||||
v['latest_version'] = dict(version='nightly')
|
v['latest_version'] = dict(version='nightly')
|
||||||
|
|
||||||
|
return {'nodes': list(full_nodes.values())}
|
||||||
|
|
||||||
if cache_mode:
|
if cache_mode:
|
||||||
if dont_wait:
|
|
||||||
json_obj = await manager_util.get_data_with_cache(uri, cache_mode=cache_mode, dont_wait=True) # fallback
|
|
||||||
|
|
||||||
if 'nodes' in json_obj:
|
|
||||||
touch(json_obj)
|
|
||||||
return json_obj['nodes']
|
|
||||||
else:
|
|
||||||
return {}
|
|
||||||
|
|
||||||
is_cache_loading = True
|
is_cache_loading = True
|
||||||
|
cache_state = manager_util.get_cache_state(uri)
|
||||||
|
|
||||||
|
if dont_wait:
|
||||||
|
if cache_state == 'not-cached':
|
||||||
|
return {}
|
||||||
|
else:
|
||||||
|
print("[ComfyUI-Manager] The ComfyRegistry cache update is still in progress, so an outdated cache is being used.")
|
||||||
|
with open(manager_util.get_cache_path(uri), 'r', encoding="UTF-8", errors="ignore") as json_file:
|
||||||
|
return json.load(json_file)['nodes']
|
||||||
|
|
||||||
|
if cache_state == 'cached':
|
||||||
|
with open(manager_util.get_cache_path(uri), 'r', encoding="UTF-8", errors="ignore") as json_file:
|
||||||
|
return json.load(json_file)['nodes']
|
||||||
|
|
||||||
try:
|
try:
|
||||||
json_obj = await manager_util.get_data_with_cache(uri, cache_mode=cache_mode)
|
json_obj = await fetch_all()
|
||||||
touch(json_obj)
|
manager_util.save_to_cache(uri, json_obj)
|
||||||
|
|
||||||
return json_obj['nodes']
|
return json_obj['nodes']
|
||||||
except:
|
except:
|
||||||
res = {}
|
res = {}
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ import manager_downloader
|
|||||||
from node_package import InstalledNodePackage
|
from node_package import InstalledNodePackage
|
||||||
|
|
||||||
|
|
||||||
version_code = [3, 8]
|
version_code = [3, 9, 5]
|
||||||
version_str = f"V{version_code[0]}.{version_code[1]}" + (f'.{version_code[2]}' if len(version_code) > 2 else '')
|
version_str = f"V{version_code[0]}.{version_code[1]}" + (f'.{version_code[2]}' if len(version_code) > 2 else '')
|
||||||
|
|
||||||
|
|
||||||
@@ -81,13 +81,18 @@ def get_comfyui_tag():
|
|||||||
|
|
||||||
|
|
||||||
def get_script_env():
|
def get_script_env():
|
||||||
copied = os.environ.copy()
|
new_env = os.environ.copy()
|
||||||
git_exe = get_config().get('git_exe')
|
git_exe = get_config().get('git_exe')
|
||||||
if git_exe is not None:
|
if git_exe is not None:
|
||||||
copied['GIT_EXE_PATH'] = git_exe
|
new_env['GIT_EXE_PATH'] = git_exe
|
||||||
copied['COMFYUI_PATH'] = comfy_path
|
|
||||||
|
|
||||||
return copied
|
if 'COMFYUI_PATH' not in new_env:
|
||||||
|
new_env['COMFYUI_PATH'] = comfy_path
|
||||||
|
|
||||||
|
if 'COMFYUI_FOLDERS_BASE_PATH' not in new_env:
|
||||||
|
new_env['COMFYUI_FOLDERS_BASE_PATH'] = comfy_path
|
||||||
|
|
||||||
|
return new_env
|
||||||
|
|
||||||
|
|
||||||
invalid_nodes = {}
|
invalid_nodes = {}
|
||||||
@@ -112,7 +117,7 @@ def check_invalid_nodes():
|
|||||||
sys.path.append(comfy_path)
|
sys.path.append(comfy_path)
|
||||||
import folder_paths
|
import folder_paths
|
||||||
except:
|
except:
|
||||||
raise Exception(f"Invalid COMFYUI_PATH: {comfy_path}")
|
raise Exception(f"Invalid COMFYUI_FOLDERS_BASE_PATH: {comfy_path}")
|
||||||
|
|
||||||
def check(root):
|
def check(root):
|
||||||
global invalid_nodes
|
global invalid_nodes
|
||||||
@@ -147,7 +152,10 @@ def check_invalid_nodes():
|
|||||||
print("\n---------------------------------------------------------------------------\n")
|
print("\n---------------------------------------------------------------------------\n")
|
||||||
|
|
||||||
|
|
||||||
|
# read env vars
|
||||||
comfy_path = os.environ.get('COMFYUI_PATH')
|
comfy_path = os.environ.get('COMFYUI_PATH')
|
||||||
|
comfy_base_path = os.environ.get('COMFYUI_FOLDERS_BASE_PATH')
|
||||||
|
|
||||||
if comfy_path is None:
|
if comfy_path is None:
|
||||||
try:
|
try:
|
||||||
import folder_paths
|
import folder_paths
|
||||||
@@ -155,6 +163,9 @@ if comfy_path is None:
|
|||||||
except:
|
except:
|
||||||
comfy_path = os.path.abspath(os.path.join(manager_util.comfyui_manager_path, '..', '..'))
|
comfy_path = os.path.abspath(os.path.join(manager_util.comfyui_manager_path, '..', '..'))
|
||||||
|
|
||||||
|
if comfy_base_path is None:
|
||||||
|
comfy_base_path = comfy_path
|
||||||
|
|
||||||
|
|
||||||
channel_list_template_path = os.path.join(manager_util.comfyui_manager_path, 'channels.list.template')
|
channel_list_template_path = os.path.join(manager_util.comfyui_manager_path, 'channels.list.template')
|
||||||
git_script_path = os.path.join(manager_util.comfyui_manager_path, "git_helper.py")
|
git_script_path = os.path.join(manager_util.comfyui_manager_path, "git_helper.py")
|
||||||
@@ -682,11 +693,10 @@ class UnifiedManager:
|
|||||||
self.active_nodes = {} # node_id -> node_version * fullpath
|
self.active_nodes = {} # node_id -> node_version * fullpath
|
||||||
|
|
||||||
# reload 'cnr_map' and 'repo_cnr_map'
|
# reload 'cnr_map' and 'repo_cnr_map'
|
||||||
cnrs = await cnr_utils.get_cnr_data(cache_mode=cache_mode, dont_wait=dont_wait)
|
cnrs = await cnr_utils.get_cnr_data(cache_mode=cache_mode=='cache', dont_wait=dont_wait)
|
||||||
|
|
||||||
for x in cnrs:
|
for x in cnrs:
|
||||||
self.cnr_map[x['id']] = x
|
self.cnr_map[x['id']] = x
|
||||||
|
|
||||||
if 'repository' in x:
|
if 'repository' in x:
|
||||||
normalized_url = git_utils.normalize_url(x['repository'])
|
normalized_url = git_utils.normalize_url(x['repository'])
|
||||||
self.repo_cnr_map[normalized_url] = x
|
self.repo_cnr_map[normalized_url] = x
|
||||||
@@ -838,7 +848,11 @@ class UnifiedManager:
|
|||||||
|
|
||||||
result = ManagedResult('fix')
|
result = ManagedResult('fix')
|
||||||
|
|
||||||
info = self.active_nodes.get(node_id)
|
if version_spec == 'unknown':
|
||||||
|
info = self.unknown_active_nodes.get(node_id)
|
||||||
|
else:
|
||||||
|
info = self.active_nodes.get(node_id)
|
||||||
|
|
||||||
if info is None or not os.path.exists(info[1]):
|
if info is None or not os.path.exists(info[1]):
|
||||||
return result.fail(f'not found: {node_id}@{version_spec}')
|
return result.fail(f'not found: {node_id}@{version_spec}')
|
||||||
|
|
||||||
@@ -1262,8 +1276,8 @@ class UnifiedManager:
|
|||||||
remote.fetch()
|
remote.fetch()
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
if 'detected dubious' in str(e):
|
if 'detected dubious' in str(e):
|
||||||
print("[ComfyUI-Manager] Try fixing 'dubious repository' error on 'ComfyUI' repository")
|
print(f"[ComfyUI-Manager] Try fixing 'dubious repository' error on '{repo_path}' repository")
|
||||||
safedir_path = comfy_path.replace('\\', '/')
|
safedir_path = repo_path.replace('\\', '/')
|
||||||
subprocess.run(['git', 'config', '--global', '--add', 'safe.directory', safedir_path])
|
subprocess.run(['git', 'config', '--global', '--add', 'safe.directory', safedir_path])
|
||||||
try:
|
try:
|
||||||
remote.fetch()
|
remote.fetch()
|
||||||
@@ -1537,7 +1551,6 @@ def write_config():
|
|||||||
"file_logging": get_config()['file_logging'],
|
"file_logging": get_config()['file_logging'],
|
||||||
'default_ui': get_config()['default_ui'],
|
'default_ui': get_config()['default_ui'],
|
||||||
'component_policy': get_config()['component_policy'],
|
'component_policy': get_config()['component_policy'],
|
||||||
'double_click_policy': get_config()['double_click_policy'],
|
|
||||||
'windows_selector_event_loop_policy': get_config()['windows_selector_event_loop_policy'],
|
'windows_selector_event_loop_policy': get_config()['windows_selector_event_loop_policy'],
|
||||||
'model_download_by_agent': get_config()['model_download_by_agent'],
|
'model_download_by_agent': get_config()['model_download_by_agent'],
|
||||||
'downgrade_blacklist': get_config()['downgrade_blacklist'],
|
'downgrade_blacklist': get_config()['downgrade_blacklist'],
|
||||||
@@ -1577,7 +1590,6 @@ def read_config():
|
|||||||
'file_logging': default_conf['file_logging'].lower() == 'true' if 'file_logging' in default_conf else True,
|
'file_logging': default_conf['file_logging'].lower() == 'true' if 'file_logging' in default_conf else True,
|
||||||
'default_ui': default_conf['default_ui'] if 'default_ui' in default_conf else 'none',
|
'default_ui': default_conf['default_ui'] if 'default_ui' in default_conf else 'none',
|
||||||
'component_policy': default_conf['component_policy'] if 'component_policy' in default_conf else 'workflow',
|
'component_policy': default_conf['component_policy'] if 'component_policy' in default_conf else 'workflow',
|
||||||
'double_click_policy': default_conf['double_click_policy'] if 'double_click_policy' in default_conf else 'copy-all',
|
|
||||||
'windows_selector_event_loop_policy': default_conf['windows_selector_event_loop_policy'].lower() == 'true' if 'windows_selector_event_loop_policy' in default_conf else False,
|
'windows_selector_event_loop_policy': default_conf['windows_selector_event_loop_policy'].lower() == 'true' if 'windows_selector_event_loop_policy' in default_conf else False,
|
||||||
'model_download_by_agent': default_conf['model_download_by_agent'].lower() == 'true' if 'model_download_by_agent' in default_conf else False,
|
'model_download_by_agent': default_conf['model_download_by_agent'].lower() == 'true' if 'model_download_by_agent' in default_conf else False,
|
||||||
'downgrade_blacklist': default_conf['downgrade_blacklist'] if 'downgrade_blacklist' in default_conf else '',
|
'downgrade_blacklist': default_conf['downgrade_blacklist'] if 'downgrade_blacklist' in default_conf else '',
|
||||||
@@ -1595,7 +1607,6 @@ def read_config():
|
|||||||
'file_logging': True,
|
'file_logging': True,
|
||||||
'default_ui': 'none',
|
'default_ui': 'none',
|
||||||
'component_policy': 'workflow',
|
'component_policy': 'workflow',
|
||||||
'double_click_policy': 'copy-all',
|
|
||||||
'windows_selector_event_loop_policy': False,
|
'windows_selector_event_loop_policy': False,
|
||||||
'model_download_by_agent': False,
|
'model_download_by_agent': False,
|
||||||
'downgrade_blacklist': '',
|
'downgrade_blacklist': '',
|
||||||
@@ -2312,8 +2323,8 @@ def update_path(repo_path, instant_execution=False, no_deps=False):
|
|||||||
remote.fetch()
|
remote.fetch()
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
if 'detected dubious' in str(e):
|
if 'detected dubious' in str(e):
|
||||||
print("[ComfyUI-Manager] Try fixing 'dubious repository' error on 'ComfyUI' repository")
|
print(f"[ComfyUI-Manager] Try fixing 'dubious repository' error on '{repo_path}' repository")
|
||||||
safedir_path = comfy_path.replace('\\', '/')
|
safedir_path = repo_path.replace('\\', '/')
|
||||||
subprocess.run(['git', 'config', '--global', '--add', 'safe.directory', safedir_path])
|
subprocess.run(['git', 'config', '--global', '--add', 'safe.directory', safedir_path])
|
||||||
try:
|
try:
|
||||||
remote.fetch()
|
remote.fetch()
|
||||||
@@ -2692,8 +2703,8 @@ def map_to_unified_keys(json_obj):
|
|||||||
return res
|
return res
|
||||||
|
|
||||||
|
|
||||||
async def get_unified_total_nodes(channel, mode):
|
async def get_unified_total_nodes(channel, mode, regsitry_cache_mode='cache'):
|
||||||
await unified_manager.reload(mode)
|
await unified_manager.reload(regsitry_cache_mode)
|
||||||
|
|
||||||
res = await unified_manager.get_custom_nodes(channel, mode)
|
res = await unified_manager.get_custom_nodes(channel, mode)
|
||||||
|
|
||||||
@@ -2776,6 +2787,7 @@ async def get_unified_total_nodes(channel, mode):
|
|||||||
author = cnr['publisher']['name']
|
author = cnr['publisher']['name']
|
||||||
title = cnr['name']
|
title = cnr['name']
|
||||||
reference = f"https://registry.comfy.org/nodes/{cnr['id']}"
|
reference = f"https://registry.comfy.org/nodes/{cnr['id']}"
|
||||||
|
repository = cnr.get('repository', '')
|
||||||
install_type = "cnr"
|
install_type = "cnr"
|
||||||
description = cnr.get('description', '')
|
description = cnr.get('description', '')
|
||||||
|
|
||||||
@@ -2807,7 +2819,7 @@ async def get_unified_total_nodes(channel, mode):
|
|||||||
if ver is None:
|
if ver is None:
|
||||||
ver = cnr['latest_version']['version']
|
ver = cnr['latest_version']['version']
|
||||||
|
|
||||||
item = dict(author=author, title=title, reference=reference, install_type=install_type,
|
item = dict(author=author, title=title, reference=reference, repository=repository, install_type=install_type,
|
||||||
description=description, state=state, updatable=updatable, version=ver)
|
description=description, state=state, updatable=updatable, version=ver)
|
||||||
|
|
||||||
if active_version:
|
if active_version:
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import os
|
|||||||
from urllib.parse import urlparse
|
from urllib.parse import urlparse
|
||||||
import urllib
|
import urllib
|
||||||
import sys
|
import sys
|
||||||
|
import logging
|
||||||
aria2 = os.getenv('COMFYUI_MANAGER_ARIA2_SERVER')
|
aria2 = os.getenv('COMFYUI_MANAGER_ARIA2_SERVER')
|
||||||
HF_ENDPOINT = os.getenv('HF_ENDPOINT')
|
HF_ENDPOINT = os.getenv('HF_ENDPOINT')
|
||||||
|
|
||||||
@@ -44,6 +44,7 @@ def basic_download_url(url, dest_folder: str, filename: str):
|
|||||||
def download_url(model_url: str, model_dir: str, filename: str):
|
def download_url(model_url: str, model_dir: str, filename: str):
|
||||||
if HF_ENDPOINT:
|
if HF_ENDPOINT:
|
||||||
model_url = model_url.replace('https://huggingface.co', HF_ENDPOINT)
|
model_url = model_url.replace('https://huggingface.co', HF_ENDPOINT)
|
||||||
|
logging.info(f"model_url replaced by HF_ENDPOINT, new = {model_url}")
|
||||||
if aria2:
|
if aria2:
|
||||||
return aria2_download_url(model_url, model_dir, filename)
|
return aria2_download_url(model_url, model_dir, filename)
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -161,10 +161,6 @@ def set_component_policy(mode):
|
|||||||
core.get_config()['component_policy'] = mode
|
core.get_config()['component_policy'] = mode
|
||||||
|
|
||||||
|
|
||||||
def set_double_click_policy(mode):
|
|
||||||
core.get_config()['double_click_policy'] = mode
|
|
||||||
|
|
||||||
|
|
||||||
def print_comfyui_version():
|
def print_comfyui_version():
|
||||||
global comfy_ui_hash
|
global comfy_ui_hash
|
||||||
global comfyui_tag
|
global comfyui_tag
|
||||||
@@ -566,7 +562,7 @@ async def fetch_customnode_list(request):
|
|||||||
else:
|
else:
|
||||||
channel = core.get_config()['channel_url']
|
channel = core.get_config()['channel_url']
|
||||||
|
|
||||||
node_packs = await core.get_unified_total_nodes(channel, request.rel_url.query["mode"])
|
node_packs = await core.get_unified_total_nodes(channel, request.rel_url.query["mode"], 'cache')
|
||||||
json_obj_github = core.get_data_by_mode(request.rel_url.query["mode"], 'github-stats.json', 'default')
|
json_obj_github = core.get_data_by_mode(request.rel_url.query["mode"], 'github-stats.json', 'default')
|
||||||
json_obj_extras = core.get_data_by_mode(request.rel_url.query["mode"], 'extras.json', 'default')
|
json_obj_extras = core.get_data_by_mode(request.rel_url.query["mode"], 'extras.json', 'default')
|
||||||
|
|
||||||
@@ -945,6 +941,8 @@ async def fix_custom_node(request):
|
|||||||
if res.result:
|
if res.result:
|
||||||
logging.info("\nAfter restarting ComfyUI, please refresh the browser.")
|
logging.info("\nAfter restarting ComfyUI, please refresh the browser.")
|
||||||
return web.json_response({}, content_type='application/json')
|
return web.json_response({}, content_type='application/json')
|
||||||
|
else:
|
||||||
|
logging.error(res.msg)
|
||||||
|
|
||||||
logging.error(f"\nERROR: An error occurred while fixing '{node_name}@{node_ver}'.")
|
logging.error(f"\nERROR: An error occurred while fixing '{node_name}@{node_ver}'.")
|
||||||
return web.Response(status=400, text=f"An error occurred while fixing '{node_name}@{node_ver}'.")
|
return web.Response(status=400, text=f"An error occurred while fixing '{node_name}@{node_ver}'.")
|
||||||
@@ -1141,9 +1139,9 @@ async def install_model(request):
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
if model_path is not None:
|
if model_path is not None:
|
||||||
logging.info(f"Install model '{json_data['name']}' into '{model_path}'")
|
|
||||||
|
|
||||||
model_url = json_data['url']
|
model_url = json_data['url']
|
||||||
|
logging.info(f"Install model '{json_data['name']}' from '{model_url}' into '{model_path}'")
|
||||||
if not core.get_config()['model_download_by_agent'] and (
|
if not core.get_config()['model_download_by_agent'] and (
|
||||||
model_url.startswith('https://github.com') or model_url.startswith('https://huggingface.co') or model_url.startswith('https://heibox.uni-heidelberg.de')):
|
model_url.startswith('https://github.com') or model_url.startswith('https://huggingface.co') or model_url.startswith('https://heibox.uni-heidelberg.de')):
|
||||||
model_dir = get_model_dir(json_data, True)
|
model_dir = get_model_dir(json_data, True)
|
||||||
@@ -1203,17 +1201,6 @@ async def component_policy(request):
|
|||||||
return web.Response(status=200)
|
return web.Response(status=200)
|
||||||
|
|
||||||
|
|
||||||
@routes.get("/manager/dbl_click/policy")
|
|
||||||
async def dbl_click_policy(request):
|
|
||||||
if "value" in request.rel_url.query:
|
|
||||||
set_double_click_policy(request.rel_url.query['value'])
|
|
||||||
core.write_config()
|
|
||||||
else:
|
|
||||||
return web.Response(text=core.get_config()['double_click_policy'], status=200)
|
|
||||||
|
|
||||||
return web.Response(status=200)
|
|
||||||
|
|
||||||
|
|
||||||
@routes.get("/manager/channel_url_list")
|
@routes.get("/manager/channel_url_list")
|
||||||
async def channel_url_list(request):
|
async def channel_url_list(request):
|
||||||
channels = core.get_channel_dict()
|
channels = core.get_channel_dict()
|
||||||
@@ -1432,8 +1419,8 @@ async def default_cache_update():
|
|||||||
await asyncio.gather(a, b, c, d, e)
|
await asyncio.gather(a, b, c, d, e)
|
||||||
|
|
||||||
# load at least once
|
# load at least once
|
||||||
await core.unified_manager.reload('cache', dont_wait=False)
|
await core.unified_manager.reload('remote', dont_wait=False)
|
||||||
await core.unified_manager.get_custom_nodes('default', 'cache')
|
await core.unified_manager.get_custom_nodes('default', 'remote')
|
||||||
|
|
||||||
# NOTE: hide migration button temporarily.
|
# NOTE: hide migration button temporarily.
|
||||||
# if not core.get_config()['skip_migration_check']:
|
# if not core.get_config()['skip_migration_check']:
|
||||||
|
|||||||
@@ -130,9 +130,34 @@ async def get_data(uri, silent=False):
|
|||||||
return json_obj
|
return json_obj
|
||||||
|
|
||||||
|
|
||||||
async def get_data_with_cache(uri, silent=False, cache_mode=True, dont_wait=False):
|
def get_cache_path(uri):
|
||||||
cache_uri = str(simple_hash(uri)) + '_' + os.path.basename(uri).replace('&', "_").replace('?', "_").replace('=', "_")
|
cache_uri = str(simple_hash(uri)) + '_' + os.path.basename(uri).replace('&', "_").replace('?', "_").replace('=', "_")
|
||||||
cache_uri = os.path.join(cache_dir, cache_uri+'.json')
|
return os.path.join(cache_dir, cache_uri+'.json')
|
||||||
|
|
||||||
|
|
||||||
|
def get_cache_state(uri):
|
||||||
|
cache_uri = get_cache_path(uri)
|
||||||
|
|
||||||
|
if not os.path.exists(cache_uri):
|
||||||
|
return "not-cached"
|
||||||
|
elif is_file_created_within_one_day(cache_uri):
|
||||||
|
return "cached"
|
||||||
|
|
||||||
|
return "expired"
|
||||||
|
|
||||||
|
|
||||||
|
def save_to_cache(uri, json_obj, silent=False):
|
||||||
|
cache_uri = get_cache_path(uri)
|
||||||
|
|
||||||
|
with cache_lock:
|
||||||
|
with open(cache_uri, "w", encoding='utf-8') as file:
|
||||||
|
json.dump(json_obj, file, indent=4, sort_keys=True)
|
||||||
|
if not silent:
|
||||||
|
logging.info(f"[ComfyUI-Manager] default cache updated: {uri}")
|
||||||
|
|
||||||
|
|
||||||
|
async def get_data_with_cache(uri, silent=False, cache_mode=True, dont_wait=False):
|
||||||
|
cache_uri = get_cache_path(uri)
|
||||||
|
|
||||||
if cache_mode and dont_wait:
|
if cache_mode and dont_wait:
|
||||||
# NOTE: return the cache if possible, even if it is expired, so do not cache
|
# NOTE: return the cache if possible, even if it is expired, so do not cache
|
||||||
|
|||||||
@@ -1061,28 +1061,6 @@ class ManagerMenuDialog extends ComfyDialog {
|
|||||||
set_component_policy(event.target.value);
|
set_component_policy(event.target.value);
|
||||||
});
|
});
|
||||||
|
|
||||||
let dbl_click_policy_combo = document.createElement("select");
|
|
||||||
dbl_click_policy_combo.setAttribute("title", "Sets the behavior when you double-click the title area of a node.");
|
|
||||||
dbl_click_policy_combo.className = "cm-menu-combo";
|
|
||||||
dbl_click_policy_combo.appendChild($el('option', { value: 'none', text: 'Double-Click: None' }, []));
|
|
||||||
dbl_click_policy_combo.appendChild($el('option', { value: 'copy-all', text: 'Double-Click: Copy All Connections' }, []));
|
|
||||||
dbl_click_policy_combo.appendChild($el('option', { value: 'copy-full', text: 'Double-Click: Copy All Connections and shape' }, []));
|
|
||||||
dbl_click_policy_combo.appendChild($el('option', { value: 'copy-input', text: 'Double-Click: Copy Input Connections' }, []));
|
|
||||||
dbl_click_policy_combo.appendChild($el('option', { value: 'possible-input', text: 'Double-Click: Possible Input Connections' }, []));
|
|
||||||
dbl_click_policy_combo.appendChild($el('option', { value: 'dual', text: 'Double-Click: Possible(left) + Copy(right)' }, []));
|
|
||||||
|
|
||||||
api.fetchApi('/manager/dbl_click/policy')
|
|
||||||
.then(response => response.text())
|
|
||||||
.then(data => {
|
|
||||||
dbl_click_policy_combo.value = data;
|
|
||||||
set_double_click_policy(data);
|
|
||||||
});
|
|
||||||
|
|
||||||
dbl_click_policy_combo.addEventListener('change', function (event) {
|
|
||||||
api.fetchApi(`/manager/dbl_click/policy?value=${event.target.value}`);
|
|
||||||
set_double_click_policy(event.target.value);
|
|
||||||
});
|
|
||||||
|
|
||||||
api.fetchApi('/manager/share_option')
|
api.fetchApi('/manager/share_option')
|
||||||
.then(response => response.text())
|
.then(response => response.text())
|
||||||
.then(data => {
|
.then(data => {
|
||||||
@@ -1111,7 +1089,6 @@ class ManagerMenuDialog extends ComfyDialog {
|
|||||||
default_ui_combo,
|
default_ui_combo,
|
||||||
share_combo,
|
share_combo,
|
||||||
component_policy_combo,
|
component_policy_combo,
|
||||||
dbl_click_policy_combo,
|
|
||||||
$el("br", {}, []),
|
$el("br", {}, []),
|
||||||
|
|
||||||
$el("br", {}, []),
|
$el("br", {}, []),
|
||||||
|
|||||||
@@ -975,7 +975,10 @@ export class CustomNodesManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const link = document.createElement('a');
|
const link = document.createElement('a');
|
||||||
link.href = rowItem.reference;
|
if(rowItem.originalData.repository)
|
||||||
|
link.href = rowItem.originalData.repository;
|
||||||
|
else
|
||||||
|
link.href = rowItem.reference;
|
||||||
link.target = '_blank';
|
link.target = '_blank';
|
||||||
link.innerHTML = `<b>${title}</b>`;
|
link.innerHTML = `<b>${title}</b>`;
|
||||||
container.appendChild(link);
|
container.appendChild(link);
|
||||||
|
|||||||
@@ -877,6 +877,62 @@
|
|||||||
"size": "5.16GB"
|
"size": "5.16GB"
|
||||||
},
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "comfyanonymous/cosmos_cv8x8x8_1.0.safetensors",
|
||||||
|
"type": "VAE",
|
||||||
|
"base": "Cosmos-1.0",
|
||||||
|
"save_path": "default",
|
||||||
|
"description": "VAE model for Cosmos 1.0",
|
||||||
|
"reference": "https://huggingface.co/comfyanonymous/cosmos_1.0_text_encoder_and_VAE_ComfyUI/tree/main",
|
||||||
|
"filename": "cosmos_cv8x8x8_1.0.safetensors",
|
||||||
|
"url": "https://huggingface.co/comfyanonymous/cosmos_1.0_text_encoder_and_VAE_ComfyUI/resolve/main/vae/cosmos_cv8x8x8_1.0.safetensors",
|
||||||
|
"size": "211MB"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "mcmonkey/Cosmos-1_0-Diffusion-7B-Text2World.safetensors",
|
||||||
|
"type": "diffusion_model",
|
||||||
|
"base": "Cosmos-1.0",
|
||||||
|
"save_path": "diffusion_models/cosmos-1.0",
|
||||||
|
"description": "Cosmos 1.0 Text2World Diffusion Model (7B)",
|
||||||
|
"reference": "https://huggingface.co/mcmonkey/cosmos-1.0",
|
||||||
|
"filename": "Cosmos-1_0-Diffusion-7B-Text2World.safetensors",
|
||||||
|
"url": "https://huggingface.co/mcmonkey/cosmos-1.0/resolve/main/Cosmos-1_0-Diffusion-7B-Text2World.safetensors",
|
||||||
|
"size": "14.5GB"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "mcmonkey/Cosmos-1_0-Diffusion-7B-Video2World.safetensors",
|
||||||
|
"type": "diffusion_model",
|
||||||
|
"base": "Cosmos-1.0",
|
||||||
|
"save_path": "diffusion_models/cosmos-1.0",
|
||||||
|
"description": "Cosmos 1.0 Video2World Diffusion Model (7B)",
|
||||||
|
"reference": "https://huggingface.co/mcmonkey/cosmos-1.0",
|
||||||
|
"filename": "Cosmos-1_0-Diffusion-7B-Video2World.safetensors",
|
||||||
|
"url": "https://huggingface.co/mcmonkey/cosmos-1.0/resolve/main/Cosmos-1_0-Diffusion-7B-Video2World.safetensors",
|
||||||
|
"size": "14.5GB"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "mcmonkey/Cosmos-1_0-Diffusion-14B-Text2World.safetensors",
|
||||||
|
"type": "diffusion_model",
|
||||||
|
"base": "Cosmos-1.0",
|
||||||
|
"save_path": "diffusion_models/cosmos-1.0",
|
||||||
|
"description": "Cosmos 1.0 Text2World Diffusion Model (14B)",
|
||||||
|
"reference": "https://huggingface.co/mcmonkey/cosmos-1.0",
|
||||||
|
"filename": "Cosmos-1_0-Diffusion-14B-Text2World.safetensors",
|
||||||
|
"url": "https://huggingface.co/mcmonkey/cosmos-1.0/resolve/main/Cosmos-1_0-Diffusion-14B-Text2World.safetensors",
|
||||||
|
"size": "28.5GB"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "mcmonkey/Cosmos-1_0-Diffusion-14B-Video2World.safetensors",
|
||||||
|
"type": "diffusion_model",
|
||||||
|
"base": "Cosmos-1.0",
|
||||||
|
"save_path": "diffusion_models/cosmos-1.0",
|
||||||
|
"description": "Cosmos 1.0 Video2World Diffusion Model (14B)",
|
||||||
|
"reference": "https://huggingface.co/mcmonkey/cosmos-1.0",
|
||||||
|
"filename": "Cosmos-1_0-Diffusion-14B-Video2World.safetensors",
|
||||||
|
"url": "https://huggingface.co/mcmonkey/cosmos-1.0/resolve/main/Cosmos-1_0-Diffusion-14B-Video2World.safetensors",
|
||||||
|
"size": "28.5GB"
|
||||||
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"name": "google-t5/t5-base",
|
"name": "google-t5/t5-base",
|
||||||
"type": "clip",
|
"type": "clip",
|
||||||
@@ -2259,6 +2315,18 @@
|
|||||||
"url": "https://huggingface.co/CiaraRowles/TemporalDiff/resolve/main/temporaldiff-v1-animatediff.ckpt",
|
"url": "https://huggingface.co/CiaraRowles/TemporalDiff/resolve/main/temporaldiff-v1-animatediff.ckpt",
|
||||||
"size": "1.67GB"
|
"size": "1.67GB"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "Leoxing/pia.ckpt",
|
||||||
|
"type": "animatediff-pia",
|
||||||
|
"base": "SD1.x",
|
||||||
|
"save_path": "animatediff_models",
|
||||||
|
"description": "AnimateDiff-PIA Model",
|
||||||
|
"reference": "https://huggingface.co/Leoxing/PIA/tree/main",
|
||||||
|
"filename": "pia.ckpt",
|
||||||
|
"url": "https://huggingface.co/Leoxing/PIA/resolve/main/pia.ckpt",
|
||||||
|
"size": "1.67GB"
|
||||||
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"name": "animatediff/v2_lora_PanLeft.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)",
|
"name": "animatediff/v2_lora_PanLeft.ckpt (ComfyUI-AnimateDiff-Evolved) (Updated path)",
|
||||||
"type": "motion lora",
|
"type": "motion lora",
|
||||||
|
|||||||
@@ -9,7 +9,268 @@
|
|||||||
"description": "If you see this message, your ComfyUI-Manager is outdated.\nDev channel provides only the list of the developing nodes. If you want to find the complete node list, please go to the Default channel."
|
"description": "If you see this message, your ComfyUI-Manager is outdated.\nDev channel provides only the list of the developing nodes. If you want to find the complete node list, please go to the Default channel."
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
{
|
||||||
|
"author": "HuangYuChuh",
|
||||||
|
"title": "ComfyUI-DeepSeek_Toolkit [WIP]",
|
||||||
|
"reference": "https://github.com/HuangYuChuh/ComfyUI-DeepSeek_Toolkit",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/HuangYuChuh/ComfyUI-DeepSeek_Toolkit"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "ComfyUI-DeepSeek_Toolkit is a deep learning toolkit for ComfyUI that integrates the DeepSeek Janus model, offering functionalities for image generation and image understanding.\nNOTE: The files in the repo are not organized."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "comfyuiblog",
|
||||||
|
"title": "deepseek_prompt_generator_comfyui [WIP]",
|
||||||
|
"reference": "https://github.com/comfyuiblog/deepseek_prompt_generator_comfyui",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/comfyuiblog/deepseek_prompt_generator_comfyui"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "Prompt Expansion for Stable Diffusion, using Deepseek API.\nNOTE: The files in the repo are not organized."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "risunobushi",
|
||||||
|
"title": "ComfyUI_HEXtoRGB",
|
||||||
|
"reference": "https://github.com/risunobushi/ComfyUI_HEXtoRGB",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/risunobushi/ComfyUI_HEXtoRGB"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "NODES: Hex to RGB Converter"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "EmanueleUniroma2",
|
||||||
|
"title": "ComfyUI-FLAC-to-WAV [WIP]",
|
||||||
|
"reference": "https://github.com/EmanueleUniroma2/ComfyUI-FLAC-to-WAV",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/EmanueleUniroma2/ComfyUI-FLAC-to-WAV"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "A custom node to convert flac files to wav inside comfy UI\nComfyUI Custom Node: FLAC to WAV Converter Welcome to the ComfyUI Custom Node: FLAC to WAV Converter repository! This project provides a custom node for ComfyUI that allows you to easily convert .flac audio files to .wav format, making it simpler to work with a variety of audio tools and applications.\nNOTE: The files in the repo are not organized."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "eyekayem",
|
||||||
|
"title": "comfyui_runway_gen3",
|
||||||
|
"reference": "https://github.com/eyekayem/comfyui_runway_gen3",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/eyekayem/comfyui_runway_gen3"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "NODES: Runway Video Gen, Runway Video Preview"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "StartHua",
|
||||||
|
"title": "Comfyui_CXH_joy_caption [SECURITY SCREENING]",
|
||||||
|
"reference": "https://github.com/StartHua/Comfyui_CXH_joy_caption",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/StartHua/Comfyui_CXH_joy_caption"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "Nodes:Joy_caption_load, Joy_caption\nNOTE:This node pack has been transitioned to a security screening status due to policy."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "kijai",
|
||||||
|
"title": "ComfyUI-ComfyUI-Hunyuan3DWrapper [WIP]",
|
||||||
|
"reference": "https://github.com/kijai/ComfyUI-Hunyuan3DWrapper",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/kijai/ComfyUI-Hunyuan3DWrapper"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "Wrapper nodes for https://github.com/Tencent/Hunyuan3D-2, additional installation steps needed, please check the github repository"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "7BEII",
|
||||||
|
"title": "comfyui-promptbymood [WIP]",
|
||||||
|
"reference": "https://github.com/7BEII/Comfyui_PDuse",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/7BEII/Comfyui_PDuse"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "NODES:PD_groupfontsize unnify, PD_grownumber-JSON, PD_add or delete words, PD_Image Crop Location, PD_Image centerCrop, PD_GetImageSize\nNOTE: The files in the repo are not organized."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "RLW-Chars",
|
||||||
|
"title": "comfyui-promptbymood [WIP]",
|
||||||
|
"reference": "https://github.com/RLW-Chars/comfyui-promptbymood",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/RLW-Chars/comfyui-promptbymood"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "A plugin for ComfyUI to create random prompts.\nNOTE: The files in the repo are not organized."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "mohamedsobhi777",
|
||||||
|
"title": "ComfyUI-FramerComfy [WIP]",
|
||||||
|
"reference": "https://github.com/mohamedsobhi777/ComfyUI-FramerComfy",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/mohamedsobhi777/ComfyUI-FramerComfy"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "NODES: FramerComfy Input String/Number/Image/Float/Boolean/Image, ...\nNOTE: The files in the repo are not organized."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "naderzare",
|
||||||
|
"title": "comfyui-inodes",
|
||||||
|
"reference": "https://github.com/naderzare/comfyui-inodes",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/naderzare/comfyui-inodes"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "NODES: If-Else, Multiline Split, Azure AI API"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "sizzlebop",
|
||||||
|
"title": "ComfyUI LLM Prompt Enhancer [WIP]",
|
||||||
|
"reference": "https://github.com/sizzlebop/comfyui-llm-prompt-enhancer",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/sizzlebop/comfyui-llm-prompt-enhancer"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "A powerful custom node for ComfyUI that enhances your prompts using various Language Learning Models (LLMs). This node supports multiple LLM providers and offers various enhancement styles to help you create better, more detailed prompts for image generation.\nNOTE: The files in the repo are not organized."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "a-One-Fan",
|
||||||
|
"title": "ComfyUI-Blenderesque-Nodes [WIP]",
|
||||||
|
"reference": "https://github.com/a-One-Fan/ComfyUI-Blenderesque-Nodes",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/a-One-Fan/ComfyUI-Blenderesque-Nodes"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "Blender-like nodes for ComfyUI."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "yanhuifair",
|
||||||
|
"title": "comfyui-deepseek [WIP]",
|
||||||
|
"reference": "https://github.com/yanhuifair/comfyui-deepseek",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/yanhuifair/comfyui-deepseek"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "Implement deepseek API call [a/https://api-docs.deepseek.com/](Implement deepseek API call https://api-docs.deepseek.com/)\nNOTE: The files in the repo are not organized."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "807502278",
|
||||||
|
"title": "ComfyUI_TensorRT_Merge [WIP]",
|
||||||
|
"reference": "https://github.com/807502278/ComfyUI_TensorRT_Merge",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/807502278/ComfyUI_TensorRT_Merge"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "Non diffusion models supported by TensorRT, merged Comfyui plugin, added onnx automatic download and trt model conversion nodes."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "IfnotFr",
|
||||||
|
"title": "ComfyUI-Ifnot-Pack",
|
||||||
|
"reference": "https://github.com/IfnotFr/ComfyUI-Ifnot-Pack",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/IfnotFr/ComfyUI-Ifnot-Pack"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "NODES: Face Crop, [w/A pack of custom nodes used in my projects. Not intended to be used by other persons as the usage is not documented. But if something interests you in this repository, go for it !]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "zmwv823",
|
||||||
|
"title": "ComfyUI-VideoDiffusion",
|
||||||
|
"reference": "https://github.com/zmwv823/ComfyUI-VideoDiffusion",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/zmwv823/ComfyUI-VideoDiffusion"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "[a/LatentSync](https://github.com/bytedance/LatentSync) and [a/Sonic](https://github.com/jixiaozhong/Sonic). [w/Just for study purpose. It's not for directly use, u should know how to fix issues.]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "KihongK",
|
||||||
|
"title": "ComfyUI-RoysNodes [WIP]",
|
||||||
|
"reference": "https://github.com/KihongK/comfyui-roysnodes",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/KihongK/comfyui-roysnodes"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "WIP custom nodes for Creation of AI images & videos"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "catboxanon",
|
||||||
|
"title": "ComfyUI-Pixelsmith [WIP]",
|
||||||
|
"reference": "https://github.com/catboxanon/ComfyUI-Pixelsmith",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/catboxanon/ComfyUI-Pixelsmith"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "NODES: Pixelsmith"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "smthemex",
|
||||||
|
"title": "ComfyUI_MangaNinjia [WIP]",
|
||||||
|
"reference": "https://github.com/smthemex/ComfyUI_MangaNinjia",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/smthemex/ComfyUI_MangaNinjia"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "ComfyUI_MangaNinjia is a ComfyUI node of MangaNinja which is a Line Art Colorization with Precise Reference Following method.\nNOTE: invalid pyproject.toml file."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "hunterssl",
|
||||||
|
"title": "ComfyUI_SSLNodes",
|
||||||
|
"reference": "https://github.com/hunterssl/ComfyUI_SSLNodes",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/hunterssl/ComfyUI_SSLNodes"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "NODES: SSL Load Json, SSL Get Json Keys Count, SSL Load Checkpoint By Name, SSL Random Num In Loop, SSL Save Image Outside"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "ammahmoudi",
|
||||||
|
"title": "ComfyUI-Legendary-Nodes",
|
||||||
|
"reference": "https://github.com/ammahmoudi/ComfyUI-Legendary-Nodes",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/ammahmoudi/ComfyUI-Legendary-Nodes"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "NODES: Legendary Lora URL Loader, Legendary Lora URL Loader"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "yichengup",
|
||||||
|
"title": "Comfyui-NodeSpark",
|
||||||
|
"reference": "https://github.com/yichengup/Comfyui-NodeSpark",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/yichengup/Comfyui-NodeSpark"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "NODES: Image Circle Warp, Image Stretch, Image Wave Warp, Liquify Effect"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "kijai",
|
||||||
|
"title": "ComfyUI-VideoNoiseWarp [WIP]",
|
||||||
|
"reference": "https://github.com/kijai/ComfyUI-VideoNoiseWarp",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/kijai/ComfyUI-VideoNoiseWarp"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "Nodes to generate noise from video for [a/https://github.com/Eyeline-Research/Go-with-the-Flow](https://github.com/Eyeline-Research/Go-with-the-Flow)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "muvich3n",
|
||||||
|
"title": "ComfyUI-Claude-I2T",
|
||||||
|
"reference": "https://github.com/muvich3n/ComfyUI-Claude-I2T",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/muvich3n/ComfyUI-Claude-I2T"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "NODES: Claude Image to Prompt Generator"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "maekawataiki",
|
||||||
|
"title": "ComfyUI-ALB-Login",
|
||||||
|
"reference": "https://github.com/maekawataiki/ComfyUI-ALB-Login",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/maekawataiki/ComfyUI-ALB-Login"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "Auth library to inspect token provided by ALB to protect ComfyUI."
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"author": "ArmandAlbert",
|
"author": "ArmandAlbert",
|
||||||
"title": "Kwai_font_comfyui",
|
"title": "Kwai_font_comfyui",
|
||||||
@@ -409,7 +670,7 @@
|
|||||||
"https://github.com/warshanks/Shank-Tools"
|
"https://github.com/warshanks/Shank-Tools"
|
||||||
],
|
],
|
||||||
"install_type": "git-clone",
|
"install_type": "git-clone",
|
||||||
"description": "NODES: Tile Calculator, Resolution Divider"
|
"description": "NODES: Tile Calculator, Resolution Divider, Height & Width"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"author": "BaronVonBoolean",
|
"author": "BaronVonBoolean",
|
||||||
@@ -1245,7 +1506,7 @@
|
|||||||
"https://github.com/Poukpalaova/ComfyUI-FRED-Nodes"
|
"https://github.com/Poukpalaova/ComfyUI-FRED-Nodes"
|
||||||
],
|
],
|
||||||
"install_type": "git-clone",
|
"install_type": "git-clone",
|
||||||
"description": "This repository contains custom nodes for ComfyUI. This is a work in progress (WIP).\nNOTE: The files in the repo are not organized."
|
"description": "Multiple nodes that ease the process.\nNOTE: The files in the repo are not organized."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"author": "blurymind",
|
"author": "blurymind",
|
||||||
@@ -1677,7 +1938,7 @@
|
|||||||
"https://github.com/hgabha/WWAA-CustomNodes"
|
"https://github.com/hgabha/WWAA-CustomNodes"
|
||||||
],
|
],
|
||||||
"install_type": "git-clone",
|
"install_type": "git-clone",
|
||||||
"description": "Custom Nodes for ComfyUI made by the team at [a/WeirdWonderfulAI.Art](https://weirdwonderfulai.art/) These are developed based on the needs where there was a gap to make our workflows better. You are welcome to use it as you see fit."
|
"description": "Custom Nodes for ComfyUI made by the team at [a/WeirdWonderfulAI.Art](https://weirdwonderfulai.art/). Line Count, Join String, Dither Image, Image Batch Loader"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"author": "IgPoly",
|
"author": "IgPoly",
|
||||||
@@ -2269,17 +2530,6 @@
|
|||||||
"install_type": "git-clone",
|
"install_type": "git-clone",
|
||||||
"description": "Stable Diffusion is an image generation technique based on diffusion models. Its core idea involves simulating diffusion processes by iteratively adding noise and using neural networks to predict and remove the noise, thereby generating high-quality images. This approach is not limited to image generation; with appropriate network architecture and training data, it can be adapted for various other tasks. The application of neural networks extends beyond image generation. By adjusting network structures and loss functions, neural networks can also perform tasks such as classification and regression. This flexibility makes neural networks a powerful tool for handling a wide range of machine learning tasks. This project aims to expand custom neural network layers (such as linear layers, convolutional layers, etc.) within ComfyUI and provide simplified task training functionalities. Through this project, users can easily construct custom neural network layers and perform training in ComfyUI using a graphical interface."
|
"description": "Stable Diffusion is an image generation technique based on diffusion models. Its core idea involves simulating diffusion processes by iteratively adding noise and using neural networks to predict and remove the noise, thereby generating high-quality images. This approach is not limited to image generation; with appropriate network architecture and training data, it can be adapted for various other tasks. The application of neural networks extends beyond image generation. By adjusting network structures and loss functions, neural networks can also perform tasks such as classification and regression. This flexibility makes neural networks a powerful tool for handling a wide range of machine learning tasks. This project aims to expand custom neural network layers (such as linear layers, convolutional layers, etc.) within ComfyUI and provide simplified task training functionalities. Through this project, users can easily construct custom neural network layers and perform training in ComfyUI using a graphical interface."
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"author": "alexgenovese",
|
|
||||||
"title": "comfyui_CfgPlusPlus [WIP]",
|
|
||||||
"id": "cfgpp",
|
|
||||||
"reference": "https://gitea.com/NotEvilGirl/cfgpp",
|
|
||||||
"files": [
|
|
||||||
"https://gitea.com/NotEvilGirl/cfgpp"
|
|
||||||
],
|
|
||||||
"install_type": "git-clone",
|
|
||||||
"description": "CFG++ implemented according to [a/https://cfgpp-diffusion.github.io](https://cfgpp-diffusion.github.io). Basically modified DDIM sampler that makes sampling work at low CFG values (0 ~ 2). Read the CFG++ paper for more details"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"author": "Fucci-Mateo",
|
"author": "Fucci-Mateo",
|
||||||
"title": "ComfyUI-Airtable [WIP]",
|
"title": "ComfyUI-Airtable [WIP]",
|
||||||
@@ -3426,16 +3676,6 @@
|
|||||||
"install_type": "git-clone",
|
"install_type": "git-clone",
|
||||||
"description": "Unofficial ComfyUI extension of clip-interrogator"
|
"description": "Unofficial ComfyUI extension of clip-interrogator"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"author": "prismwastaken",
|
|
||||||
"title": "prism-tools",
|
|
||||||
"reference": "https://github.com/prismwastaken/prism-comfyui-tools",
|
|
||||||
"files": [
|
|
||||||
"https://github.com/prismwastaken/prism-comfyui-tools"
|
|
||||||
],
|
|
||||||
"install_type": "git-clone",
|
|
||||||
"description": "prism-tools"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"author": "poisenbery",
|
"author": "poisenbery",
|
||||||
"title": "NudeNet-Detector-Provider [WIP]",
|
"title": "NudeNet-Detector-Provider [WIP]",
|
||||||
|
|||||||
@@ -1,12 +1,4 @@
|
|||||||
{
|
{
|
||||||
"https://gitea.com/NotEvilGirl/cfgpp": [
|
|
||||||
[
|
|
||||||
"CFG++"
|
|
||||||
],
|
|
||||||
{
|
|
||||||
"title_aux": "comfyui_CfgPlusPlus [WIP]"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"https://github.com/17Retoucher/ComfyUI_Fooocus": [
|
"https://github.com/17Retoucher/ComfyUI_Fooocus": [
|
||||||
[
|
[
|
||||||
"BasicScheduler",
|
"BasicScheduler",
|
||||||
@@ -170,6 +162,30 @@
|
|||||||
"title_aux": "ComfyUI-Prompt-Plus [WIP]"
|
"title_aux": "ComfyUI-Prompt-Plus [WIP]"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"https://github.com/7BEII/Comfyui_PDuse": [
|
||||||
|
[
|
||||||
|
"BatchChangeNodeColor",
|
||||||
|
"BatchJsonIncremental",
|
||||||
|
"PD_GetImageSize",
|
||||||
|
"PD_Image_Crop_Location",
|
||||||
|
"PD_Image_centerCrop",
|
||||||
|
"PD_RemoveColorWords",
|
||||||
|
"PD_node"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "comfyui-promptbymood [WIP]"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"https://github.com/807502278/ComfyUI_TensorRT_Merge": [
|
||||||
|
[
|
||||||
|
"BiRefNet2_tensort",
|
||||||
|
"building_tensorrt_engine",
|
||||||
|
"load_BiRefNet2_General"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "ComfyUI_TensorRT_Merge [WIP]"
|
||||||
|
}
|
||||||
|
],
|
||||||
"https://github.com/A4P7J1N7M05OT/ComfyUI-ManualSigma": [
|
"https://github.com/A4P7J1N7M05OT/ComfyUI-ManualSigma": [
|
||||||
[
|
[
|
||||||
"ManualSigma"
|
"ManualSigma"
|
||||||
@@ -315,6 +331,7 @@
|
|||||||
"> Rotate Image",
|
"> Rotate Image",
|
||||||
"> Saturation",
|
"> Saturation",
|
||||||
"> Save Image",
|
"> Save Image",
|
||||||
|
"> Save Text",
|
||||||
"> Scale Image to Side",
|
"> Scale Image to Side",
|
||||||
"> Scanlines",
|
"> Scanlines",
|
||||||
"> Sharpen",
|
"> Sharpen",
|
||||||
@@ -552,10 +569,14 @@
|
|||||||
"VTS Clip Text Encode",
|
"VTS Clip Text Encode",
|
||||||
"VTS Color Mask To Mask",
|
"VTS Color Mask To Mask",
|
||||||
"VTS Conditioning Set Batch Mask",
|
"VTS Conditioning Set Batch Mask",
|
||||||
|
"VTS Create Character Mask",
|
||||||
"VTS Images Crop From Masks",
|
"VTS Images Crop From Masks",
|
||||||
|
"VTS Images Scale",
|
||||||
"VTS Merge Delimited Text",
|
"VTS Merge Delimited Text",
|
||||||
"VTS Reduce Batch Size",
|
"VTS Reduce Batch Size",
|
||||||
|
"VTS Render People Kps",
|
||||||
"VTS To Text",
|
"VTS To Text",
|
||||||
|
"VTS_Load_Pose_Keypoints",
|
||||||
"Vts Text To Batch Prompt"
|
"Vts Text To Batch Prompt"
|
||||||
],
|
],
|
||||||
{
|
{
|
||||||
@@ -696,7 +717,8 @@
|
|||||||
"https://github.com/DraconicDragon/ComfyUI_e621_booru_toolkit": [
|
"https://github.com/DraconicDragon/ComfyUI_e621_booru_toolkit": [
|
||||||
[
|
[
|
||||||
"GetBooruPost",
|
"GetBooruPost",
|
||||||
"TagEncode"
|
"TagEncode",
|
||||||
|
"TagWikiFetch"
|
||||||
],
|
],
|
||||||
{
|
{
|
||||||
"title_aux": "ComfyUI e621 booru Toolkit"
|
"title_aux": "ComfyUI e621 booru Toolkit"
|
||||||
@@ -755,6 +777,14 @@
|
|||||||
"title_aux": "ComfyUI-MusicGen [WIP]"
|
"title_aux": "ComfyUI-MusicGen [WIP]"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"https://github.com/EmanueleUniroma2/ComfyUI-FLAC-to-WAV": [
|
||||||
|
[
|
||||||
|
"AudioToWavConverter"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "ComfyUI-FLAC-to-WAV [WIP]"
|
||||||
|
}
|
||||||
|
],
|
||||||
"https://github.com/EmilioPlumed/ComfyUI-Math": [
|
"https://github.com/EmilioPlumed/ComfyUI-Math": [
|
||||||
[
|
[
|
||||||
"GreatestCommonDenominator",
|
"GreatestCommonDenominator",
|
||||||
@@ -889,6 +919,24 @@
|
|||||||
"title_aux": "comfyui_HavocsCall_Custom_Nodes"
|
"title_aux": "comfyui_HavocsCall_Custom_Nodes"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"https://github.com/HuangYuChuh/ComfyUI-DeepSeek_Toolkit": [
|
||||||
|
[
|
||||||
|
"DeepSeekImageGeneration",
|
||||||
|
"DeepSeekImageUnderstanding",
|
||||||
|
"DeepSeekModelLoader"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "ComfyUI-DeepSeek_Toolkit [WIP]"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"https://github.com/IfnotFr/ComfyUI-Ifnot-Pack": [
|
||||||
|
[
|
||||||
|
"Face Crop"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "ComfyUI-Ifnot-Pack"
|
||||||
|
}
|
||||||
|
],
|
||||||
"https://github.com/IgPoly/ComfyUI-igTools": [
|
"https://github.com/IgPoly/ComfyUI-igTools": [
|
||||||
[
|
[
|
||||||
"IGT_SimpleTilesCalc"
|
"IGT_SimpleTilesCalc"
|
||||||
@@ -999,6 +1047,19 @@
|
|||||||
"title_aux": "ComfyUI-PNG2SVG2PNG"
|
"title_aux": "ComfyUI-PNG2SVG2PNG"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"https://github.com/KihongK/comfyui-roysnodes": [
|
||||||
|
[
|
||||||
|
"CLIPMultiTextEncode",
|
||||||
|
"Create_ConditionLoRA",
|
||||||
|
"Create_ConditionLoRA_MainPrompt",
|
||||||
|
"Load_ConditionLoRA",
|
||||||
|
"OpenAI_Summarize",
|
||||||
|
"Unzip_ConditionLoRA"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "ComfyUI-RoysNodes [WIP]"
|
||||||
|
}
|
||||||
|
],
|
||||||
"https://github.com/KoreTeknology/ComfyUI-Nai-Production-Nodes-Pack": [
|
"https://github.com/KoreTeknology/ComfyUI-Nai-Production-Nodes-Pack": [
|
||||||
[
|
[
|
||||||
"Brightness Image",
|
"Brightness Image",
|
||||||
@@ -1192,7 +1253,12 @@
|
|||||||
],
|
],
|
||||||
"https://github.com/PATATAJEC/Patatajec-Nodes": [
|
"https://github.com/PATATAJEC/Patatajec-Nodes": [
|
||||||
[
|
[
|
||||||
"HyvidSwitcher"
|
"HyvidSwitcher",
|
||||||
|
"ImageSequenceFromBatch",
|
||||||
|
"MidiReader",
|
||||||
|
"MidiToFrameSequences",
|
||||||
|
"VideoCounter",
|
||||||
|
"VideoSequencer"
|
||||||
],
|
],
|
||||||
{
|
{
|
||||||
"title_aux": "Patatajec-Nodes [WIP]"
|
"title_aux": "Patatajec-Nodes [WIP]"
|
||||||
@@ -1268,6 +1334,14 @@
|
|||||||
"title_aux": "ComfyUI-QuasimondoNodes [WIP]"
|
"title_aux": "ComfyUI-QuasimondoNodes [WIP]"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"https://github.com/RLW-Chars/comfyui-promptbymood": [
|
||||||
|
[
|
||||||
|
"Prompt By Mood"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "comfyui-promptbymood [WIP]"
|
||||||
|
}
|
||||||
|
],
|
||||||
"https://github.com/RicherdLee/comfyui-oss-image-save": [
|
"https://github.com/RicherdLee/comfyui-oss-image-save": [
|
||||||
[
|
[
|
||||||
"SaveImageOSS"
|
"SaveImageOSS"
|
||||||
@@ -1450,6 +1524,32 @@
|
|||||||
"title_aux": "Comfyui_CXH_CRM"
|
"title_aux": "Comfyui_CXH_CRM"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"https://github.com/StartHua/Comfyui_CXH_joy_caption": [
|
||||||
|
[
|
||||||
|
"CXH_DownloadAndLoadFlorence2Model",
|
||||||
|
"CXH_Florence2Run",
|
||||||
|
"CXH_HG_Model_Load",
|
||||||
|
"CXH_IC_Lora_Florence2Run",
|
||||||
|
"CXH_IC_lora_reversal",
|
||||||
|
"CXH_Ic_lora_Joy_batch",
|
||||||
|
"CXH_Min2_6_classifiy",
|
||||||
|
"CXH_Min2_6_prompt_Run",
|
||||||
|
"CXH_MinCP3_4B_Chat",
|
||||||
|
"CXH_MinCP3_4B_Load",
|
||||||
|
"CXH_SmolVlm_Load",
|
||||||
|
"CXH_SmolVlm_Run",
|
||||||
|
"Joy_caption",
|
||||||
|
"Joy_caption_alpha_batch",
|
||||||
|
"Joy_caption_alpha_batch_Dirs",
|
||||||
|
"Joy_caption_alpha_load",
|
||||||
|
"Joy_caption_alpha_prompt",
|
||||||
|
"Joy_caption_alpha_run",
|
||||||
|
"Joy_caption_load"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "Comfyui_CXH_joy_caption [SECURITY SCREENING]"
|
||||||
|
}
|
||||||
|
],
|
||||||
"https://github.com/StartHua/Comfyui_Flux_Style_Ctr": [
|
"https://github.com/StartHua/Comfyui_Flux_Style_Ctr": [
|
||||||
[
|
[
|
||||||
"CXH_StyleModelApply"
|
"CXH_StyleModelApply"
|
||||||
@@ -1571,6 +1671,50 @@
|
|||||||
"title_aux": "ComfyUI-PuLID-ZHO [WIP]"
|
"title_aux": "ComfyUI-PuLID-ZHO [WIP]"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"https://github.com/a-One-Fan/ComfyUI-Blenderesque-Nodes": [
|
||||||
|
[
|
||||||
|
"BlenderAlphaConvert",
|
||||||
|
"BlenderAlphaOver",
|
||||||
|
"BlenderBlackbody",
|
||||||
|
"BlenderBokehImage",
|
||||||
|
"BlenderBrightnessContrast",
|
||||||
|
"BlenderClamp",
|
||||||
|
"BlenderCombineColor",
|
||||||
|
"BlenderCombineXYZ",
|
||||||
|
"BlenderConvertColorspace",
|
||||||
|
"BlenderCornerPin",
|
||||||
|
"BlenderCrop",
|
||||||
|
"BlenderDisplace",
|
||||||
|
"BlenderExposure",
|
||||||
|
"BlenderFlip",
|
||||||
|
"BlenderGamma",
|
||||||
|
"BlenderHueSaturationValue",
|
||||||
|
"BlenderInvertColor",
|
||||||
|
"BlenderLensDistortion",
|
||||||
|
"BlenderMapRange",
|
||||||
|
"BlenderMapUV",
|
||||||
|
"BlenderMath",
|
||||||
|
"BlenderMix",
|
||||||
|
"BlenderMovieDistortion",
|
||||||
|
"BlenderRGB",
|
||||||
|
"BlenderRGBtoBW",
|
||||||
|
"BlenderRotate",
|
||||||
|
"BlenderScale",
|
||||||
|
"BlenderSeparateColor",
|
||||||
|
"BlenderSeparateXYZ",
|
||||||
|
"BlenderSetAlpha",
|
||||||
|
"BlenderTonemap",
|
||||||
|
"BlenderTransform",
|
||||||
|
"BlenderTranslate",
|
||||||
|
"BlenderValue",
|
||||||
|
"BlenderVectorMath",
|
||||||
|
"BlenderWavelength",
|
||||||
|
"BlenderZCombine"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "ComfyUI-Blenderesque-Nodes [WIP]"
|
||||||
|
}
|
||||||
|
],
|
||||||
"https://github.com/aiden1020/ComfyUI_Artcoder": [
|
"https://github.com/aiden1020/ComfyUI_Artcoder": [
|
||||||
[
|
[
|
||||||
"ArtCoder"
|
"ArtCoder"
|
||||||
@@ -1637,6 +1781,15 @@
|
|||||||
"title_aux": "Dream Project Video Batches [WIP]"
|
"title_aux": "Dream Project Video Batches [WIP]"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"https://github.com/ammahmoudi/ComfyUI-Legendary-Nodes": [
|
||||||
|
[
|
||||||
|
"Legendary Dataset Saver",
|
||||||
|
"Legendary Lora URL Loader"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "ComfyUI-Legendary-Nodes"
|
||||||
|
}
|
||||||
|
],
|
||||||
"https://github.com/animEEEmpire/ComfyUI-Animemory-Loader": [
|
"https://github.com/animEEEmpire/ComfyUI-Animemory-Loader": [
|
||||||
[
|
[
|
||||||
"AnimemoryNode"
|
"AnimemoryNode"
|
||||||
@@ -1696,8 +1849,8 @@
|
|||||||
],
|
],
|
||||||
"https://github.com/backearth1/Comfyui-MiniMax-Video": [
|
"https://github.com/backearth1/Comfyui-MiniMax-Video": [
|
||||||
[
|
[
|
||||||
|
"ImageToPrompt",
|
||||||
"MiniMaxAIAPIClient",
|
"MiniMaxAIAPIClient",
|
||||||
"MiniMaxImage2Prompt",
|
|
||||||
"MiniMaxImage2Video",
|
"MiniMaxImage2Video",
|
||||||
"MiniMaxPreviewVideo"
|
"MiniMaxPreviewVideo"
|
||||||
],
|
],
|
||||||
@@ -1976,6 +2129,14 @@
|
|||||||
"title_aux": "ComfyUI Signal Processing [WIP]"
|
"title_aux": "ComfyUI Signal Processing [WIP]"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"https://github.com/catboxanon/ComfyUI-Pixelsmith": [
|
||||||
|
[
|
||||||
|
"Pixelsmith"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "ComfyUI-Pixelsmith [WIP]"
|
||||||
|
}
|
||||||
|
],
|
||||||
"https://github.com/celll1/cel_sampler": [
|
"https://github.com/celll1/cel_sampler": [
|
||||||
[
|
[
|
||||||
"latent_tracker"
|
"latent_tracker"
|
||||||
@@ -2130,6 +2291,7 @@
|
|||||||
"ExponentialScheduler",
|
"ExponentialScheduler",
|
||||||
"FeatherMask",
|
"FeatherMask",
|
||||||
"FlipSigmas",
|
"FlipSigmas",
|
||||||
|
"FluxDisableGuidance",
|
||||||
"FluxGuidance",
|
"FluxGuidance",
|
||||||
"FreeU",
|
"FreeU",
|
||||||
"FreeU_V2",
|
"FreeU_V2",
|
||||||
@@ -2377,6 +2539,14 @@
|
|||||||
"title_aux": "ComfyUI-Comflow"
|
"title_aux": "ComfyUI-Comflow"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"https://github.com/comfyuiblog/deepseek_prompt_generator_comfyui": [
|
||||||
|
[
|
||||||
|
"DeepSeek_Prompt_Generator"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "deepseek_prompt_generator_comfyui [WIP]"
|
||||||
|
}
|
||||||
|
],
|
||||||
"https://github.com/corbin-hayden13/ComfyUI-Better-Dimensions": [
|
"https://github.com/corbin-hayden13/ComfyUI-Better-Dimensions": [
|
||||||
[
|
[
|
||||||
"BetterImageDimensions",
|
"BetterImageDimensions",
|
||||||
@@ -2585,6 +2755,15 @@
|
|||||||
"title_aux": "Scripting"
|
"title_aux": "Scripting"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"https://github.com/eyekayem/comfyui_runway_gen3": [
|
||||||
|
[
|
||||||
|
"RunwayVideoGenerator",
|
||||||
|
"RunwayVideoPreview"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "comfyui_runway_gen3"
|
||||||
|
}
|
||||||
|
],
|
||||||
"https://github.com/fablestudio/ComfyUI-Showrunner-Utils": [
|
"https://github.com/fablestudio/ComfyUI-Showrunner-Utils": [
|
||||||
[
|
[
|
||||||
"AlignFace",
|
"AlignFace",
|
||||||
@@ -2864,6 +3043,19 @@
|
|||||||
"title_aux": "ComfyUI_Easy_Nodes_hui"
|
"title_aux": "ComfyUI_Easy_Nodes_hui"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"https://github.com/hunterssl/ComfyUI_SSLNodes": [
|
||||||
|
[
|
||||||
|
"SSLGetJsonKeysCount",
|
||||||
|
"SSLLoadCheckpointByName",
|
||||||
|
"SSLLoadJson",
|
||||||
|
"SSLRandomNumInLoop",
|
||||||
|
"SSLRandomSeedInLoop",
|
||||||
|
"SSLSaveImageOutside"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "ComfyUI_SSLNodes"
|
||||||
|
}
|
||||||
|
],
|
||||||
"https://github.com/hy134300/comfyui-hb-node": [
|
"https://github.com/hy134300/comfyui-hb-node": [
|
||||||
[
|
[
|
||||||
"generate story",
|
"generate story",
|
||||||
@@ -2939,27 +3131,26 @@
|
|||||||
],
|
],
|
||||||
"https://github.com/jammyfu/ComfyUI_PaintingCoderUtils": [
|
"https://github.com/jammyfu/ComfyUI_PaintingCoderUtils": [
|
||||||
[
|
[
|
||||||
"ClickPopup",
|
"PaintingCoder::DynamicImageCombiner",
|
||||||
"ColorPicker",
|
"PaintingCoder::DynamicMaskCombiner",
|
||||||
"DynamicImageCombiner",
|
"PaintingCoder::ImageLatentCreator",
|
||||||
"DynamicMaskCombiner",
|
"PaintingCoder::ImageLatentCreatorPlus",
|
||||||
"ImageLatentCreator",
|
"PaintingCoder::ImageResolutionAdjuster",
|
||||||
"ImageResolutionAdjuster",
|
"PaintingCoder::ImageSizeCreator",
|
||||||
"ImageSizeCreator",
|
"PaintingCoder::ImageSizeCreatorPlus",
|
||||||
"ImageToBase64",
|
|
||||||
"MaskPreview",
|
|
||||||
"MultilineTextInput",
|
|
||||||
"PaintingCoder::ImageSwitch",
|
"PaintingCoder::ImageSwitch",
|
||||||
|
"PaintingCoder::ImageToBase64",
|
||||||
"PaintingCoder::LatentSwitch",
|
"PaintingCoder::LatentSwitch",
|
||||||
|
"PaintingCoder::MaskPreview",
|
||||||
"PaintingCoder::MaskSwitch",
|
"PaintingCoder::MaskSwitch",
|
||||||
|
"PaintingCoder::MultilineTextInput",
|
||||||
|
"PaintingCoder::OutputToTextConverter",
|
||||||
|
"PaintingCoder::RemoveEmptyLinesAndLeadingSpaces",
|
||||||
|
"PaintingCoder::ShowTextPlus",
|
||||||
|
"PaintingCoder::SimpleTextInput",
|
||||||
|
"PaintingCoder::TextCombiner",
|
||||||
"PaintingCoder::TextSwitch",
|
"PaintingCoder::TextSwitch",
|
||||||
"PaintingCoder::WebImageLoader",
|
"PaintingCoder::WebImageLoader"
|
||||||
"RemoveEmptyLinesAndLeadingSpaces",
|
|
||||||
"RemoveEmptyLinesAndLeadingSpacesAdvance",
|
|
||||||
"ShowTextPlus",
|
|
||||||
"SimpleTextInput",
|
|
||||||
"TextCombiner",
|
|
||||||
"WebImageLoader"
|
|
||||||
],
|
],
|
||||||
{
|
{
|
||||||
"title_aux": "ComfyUI PaintingCoderUtils Nodes [WIP]"
|
"title_aux": "ComfyUI PaintingCoderUtils Nodes [WIP]"
|
||||||
@@ -2990,6 +3181,7 @@
|
|||||||
"DictionaryToJSON",
|
"DictionaryToJSON",
|
||||||
"ImageToSolidBackground",
|
"ImageToSolidBackground",
|
||||||
"JSONToDictionary",
|
"JSONToDictionary",
|
||||||
|
"LiftFromBackground",
|
||||||
"LoadImageAndInfoFromPath",
|
"LoadImageAndInfoFromPath",
|
||||||
"LookupWord",
|
"LookupWord",
|
||||||
"ReplaceWords",
|
"ReplaceWords",
|
||||||
@@ -3082,6 +3274,7 @@
|
|||||||
"ForceMinimumBatchSize",
|
"ForceMinimumBatchSize",
|
||||||
"ImageCompositeChained",
|
"ImageCompositeChained",
|
||||||
"MatchImageCountToMaskCount",
|
"MatchImageCountToMaskCount",
|
||||||
|
"ParallaxTest",
|
||||||
"RandomCharacterPrompts",
|
"RandomCharacterPrompts",
|
||||||
"TargetLocationCrop",
|
"TargetLocationCrop",
|
||||||
"TargetLocationPaste",
|
"TargetLocationPaste",
|
||||||
@@ -3133,12 +3326,14 @@
|
|||||||
[
|
[
|
||||||
"KAndyCivitImagesAPI",
|
"KAndyCivitImagesAPI",
|
||||||
"KAndyCivitPromptAPI",
|
"KAndyCivitPromptAPI",
|
||||||
|
"KAndyImageSave",
|
||||||
"KAndyImagesByCss",
|
"KAndyImagesByCss",
|
||||||
"KAndyLoadImageFromUrl",
|
"KAndyLoadImageFromUrl",
|
||||||
"KAndyNoiseCondition",
|
"KAndyNoiseCondition",
|
||||||
"KCivitaiPostAPI",
|
"KCivitaiPostAPI",
|
||||||
"KPornImageAPI",
|
"KPornImageAPI",
|
||||||
"KPromtGen"
|
"KPromtGen",
|
||||||
|
"KandySimplePrompt"
|
||||||
],
|
],
|
||||||
{
|
{
|
||||||
"title_aux": "ComfyUI-KAndy"
|
"title_aux": "ComfyUI-KAndy"
|
||||||
@@ -3228,6 +3423,39 @@
|
|||||||
"title_aux": "ComfyUI-FollowYourEmojiWrapper [WIP]"
|
"title_aux": "ComfyUI-FollowYourEmojiWrapper [WIP]"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"https://github.com/kijai/ComfyUI-Hunyuan3DWrapper": [
|
||||||
|
[
|
||||||
|
"CV2InpaintTexture",
|
||||||
|
"DownloadAndLoadHy3DDelightModel",
|
||||||
|
"DownloadAndLoadHy3DPaintModel",
|
||||||
|
"Hy3DApplyTexture",
|
||||||
|
"Hy3DBakeFromMultiview",
|
||||||
|
"Hy3DCameraConfig",
|
||||||
|
"Hy3DDelightImage",
|
||||||
|
"Hy3DDiffusersSchedulerConfig",
|
||||||
|
"Hy3DExportMesh",
|
||||||
|
"Hy3DGenerateMesh",
|
||||||
|
"Hy3DGetMeshPBRTextures",
|
||||||
|
"Hy3DIMRemesh",
|
||||||
|
"Hy3DLoadMesh",
|
||||||
|
"Hy3DMeshInfo",
|
||||||
|
"Hy3DMeshUVWrap",
|
||||||
|
"Hy3DMeshVerticeInpaintTexture",
|
||||||
|
"Hy3DModelLoader",
|
||||||
|
"Hy3DPostprocessMesh",
|
||||||
|
"Hy3DRenderMultiView",
|
||||||
|
"Hy3DRenderMultiViewDepth",
|
||||||
|
"Hy3DRenderSingleView",
|
||||||
|
"Hy3DSampleMultiView",
|
||||||
|
"Hy3DSetMeshPBRAttributes",
|
||||||
|
"Hy3DSetMeshPBRTextures",
|
||||||
|
"Hy3DTorchCompileSettings",
|
||||||
|
"Hy3DVAEDecode"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "ComfyUI-ComfyUI-Hunyuan3DWrapper [WIP]"
|
||||||
|
}
|
||||||
|
],
|
||||||
"https://github.com/kijai/ComfyUI-HunyuanVideoWrapper": [
|
"https://github.com/kijai/ComfyUI-HunyuanVideoWrapper": [
|
||||||
[
|
[
|
||||||
"DownloadAndLoadHyVideoTextEncoder",
|
"DownloadAndLoadHyVideoTextEncoder",
|
||||||
@@ -3301,6 +3529,16 @@
|
|||||||
"title_aux": "ComfyUI nodes for VEnhancer [WIP]"
|
"title_aux": "ComfyUI nodes for VEnhancer [WIP]"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"https://github.com/kijai/ComfyUI-VideoNoiseWarp": [
|
||||||
|
[
|
||||||
|
"GetWarpedNoiseFromVideo",
|
||||||
|
"GetWarpedNoiseFromVideoAnimateDiff",
|
||||||
|
"GetWarpedNoiseFromVideoCogVideoX"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "ComfyUI-VideoNoiseWarp [WIP]"
|
||||||
|
}
|
||||||
|
],
|
||||||
"https://github.com/kimara-ai/ComfyUI-Kimara-AI-Advanced-Watermarks": [
|
"https://github.com/kimara-ai/ComfyUI-Kimara-AI-Advanced-Watermarks": [
|
||||||
[
|
[
|
||||||
"KimaraAIBatchImages",
|
"KimaraAIBatchImages",
|
||||||
@@ -3312,8 +3550,13 @@
|
|||||||
],
|
],
|
||||||
"https://github.com/kk8bit/KayTool": [
|
"https://github.com/kk8bit/KayTool": [
|
||||||
[
|
[
|
||||||
|
"Abc_Math",
|
||||||
|
"Baidu_Translater",
|
||||||
"Color_Adjustment",
|
"Color_Adjustment",
|
||||||
"Custom_Save_Image"
|
"Custom_Save_Image",
|
||||||
|
"Display_Any",
|
||||||
|
"Image_Size_Extractor",
|
||||||
|
"Strong_Prompt"
|
||||||
],
|
],
|
||||||
{
|
{
|
||||||
"title_aux": "KayTool"
|
"title_aux": "KayTool"
|
||||||
@@ -3762,6 +4005,19 @@
|
|||||||
"title_aux": "ComfyUI-Calendar-Node [WIP]"
|
"title_aux": "ComfyUI-Calendar-Node [WIP]"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"https://github.com/mohamedsobhi777/ComfyUI-FramerComfy": [
|
||||||
|
[
|
||||||
|
"FramerComfyBooleanInputNode",
|
||||||
|
"FramerComfyFloatInputNode",
|
||||||
|
"FramerComfyInputImageNode",
|
||||||
|
"FramerComfyInputNumberNode",
|
||||||
|
"FramerComfyInputStringNode",
|
||||||
|
"FramerComfySaveImageNode"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "ComfyUI-FramerComfy [WIP]"
|
||||||
|
}
|
||||||
|
],
|
||||||
"https://github.com/monate0615/ComfyUI-Affine-Transform": [
|
"https://github.com/monate0615/ComfyUI-Affine-Transform": [
|
||||||
[
|
[
|
||||||
"AffineTransform"
|
"AffineTransform"
|
||||||
@@ -3787,6 +4043,40 @@
|
|||||||
"title_aux": "ComfyUI GLIGEN GUI Node"
|
"title_aux": "ComfyUI GLIGEN GUI Node"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"https://github.com/muvich3n/ComfyUI-Claude-I2T": [
|
||||||
|
[
|
||||||
|
"ClaudeImageToPrompt"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "ComfyUI-Claude-I2T"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"https://github.com/naderzare/comfyui-inodes": [
|
||||||
|
[
|
||||||
|
"IAzureAiApi",
|
||||||
|
"ICutStrings",
|
||||||
|
"IIfElse",
|
||||||
|
"ILLMExecute",
|
||||||
|
"ILLMExecute2",
|
||||||
|
"ILoadAzureAiApi",
|
||||||
|
"ILoadOllamaApi",
|
||||||
|
"IMultilineSplitToStrings",
|
||||||
|
"IPassImage",
|
||||||
|
"IPostProcessLLMResponse",
|
||||||
|
"IPromptGenerator",
|
||||||
|
"IRandomChoiceToStrings",
|
||||||
|
"ISaveImage",
|
||||||
|
"ISaveText",
|
||||||
|
"IStringsCounter",
|
||||||
|
"IStringsToFile",
|
||||||
|
"IStringsToString",
|
||||||
|
"ITimesToStrings",
|
||||||
|
"IZipImages"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "comfyui-inodes"
|
||||||
|
}
|
||||||
|
],
|
||||||
"https://github.com/neeltheninja/ComfyUI-TempFileDeleter": [
|
"https://github.com/neeltheninja/ComfyUI-TempFileDeleter": [
|
||||||
[
|
[
|
||||||
"TempCleaner"
|
"TempCleaner"
|
||||||
@@ -4040,14 +4330,6 @@
|
|||||||
"title_aux": "anyPython [UNSAFE]"
|
"title_aux": "anyPython [UNSAFE]"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"https://github.com/prismwastaken/prism-comfyui-tools": [
|
|
||||||
[
|
|
||||||
"Prism-RandomNormal"
|
|
||||||
],
|
|
||||||
{
|
|
||||||
"title_aux": "prism-tools"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"https://github.com/prodogape/ComfyUI-clip-interrogator": [
|
"https://github.com/prodogape/ComfyUI-clip-interrogator": [
|
||||||
[
|
[
|
||||||
"ComfyUIClipInterrogator",
|
"ComfyUIClipInterrogator",
|
||||||
@@ -4109,6 +4391,14 @@
|
|||||||
"title_aux": "ComfyUI_FocusMask"
|
"title_aux": "ComfyUI_FocusMask"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"https://github.com/risunobushi/ComfyUI_HEXtoRGB": [
|
||||||
|
[
|
||||||
|
"HexToRGB"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "ComfyUI_HEXtoRGB"
|
||||||
|
}
|
||||||
|
],
|
||||||
"https://github.com/rouxianmantou/comfyui-rxmt-nodes": [
|
"https://github.com/rouxianmantou/comfyui-rxmt-nodes": [
|
||||||
[
|
[
|
||||||
"CheckValueTypeNode"
|
"CheckValueTypeNode"
|
||||||
@@ -4236,6 +4526,23 @@
|
|||||||
"title_aux": "ComfyUI_CheckPointLoader_Ext [WIP]"
|
"title_aux": "ComfyUI_CheckPointLoader_Ext [WIP]"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"https://github.com/sizzlebop/comfyui-llm-prompt-enhancer": [
|
||||||
|
[
|
||||||
|
"PromptEnhancer"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "ComfyUI LLM Prompt Enhancer [WIP]"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"https://github.com/smthemex/ComfyUI_MangaNinjia": [
|
||||||
|
[
|
||||||
|
"MangaNinjiaLoader",
|
||||||
|
"MangaNinjiaSampler"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "ComfyUI_MangaNinjia [WIP]"
|
||||||
|
}
|
||||||
|
],
|
||||||
"https://github.com/sofakid/dandy": [
|
"https://github.com/sofakid/dandy": [
|
||||||
[
|
[
|
||||||
"DandyBooleanCollector",
|
"DandyBooleanCollector",
|
||||||
@@ -4505,6 +4812,7 @@
|
|||||||
],
|
],
|
||||||
"https://github.com/warshanks/Shank-Tools": [
|
"https://github.com/warshanks/Shank-Tools": [
|
||||||
[
|
[
|
||||||
|
"HeightWidth",
|
||||||
"ResolutionDivider",
|
"ResolutionDivider",
|
||||||
"TileCalculator"
|
"TileCalculator"
|
||||||
],
|
],
|
||||||
@@ -4608,6 +4916,27 @@
|
|||||||
"title_aux": "ComfyUI-FairLab"
|
"title_aux": "ComfyUI-FairLab"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"https://github.com/yanhuifair/comfyui-deepseek": [
|
||||||
|
[
|
||||||
|
"DeepSeekChatNode",
|
||||||
|
"DeepSeekChatProNode",
|
||||||
|
"DeepSeekReasonerNode"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "comfyui-deepseek [WIP]"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"https://github.com/yichengup/Comfyui-NodeSpark": [
|
||||||
|
[
|
||||||
|
"ImageCircleWarp",
|
||||||
|
"ImageStretch",
|
||||||
|
"ImageWaveWarp",
|
||||||
|
"LiquifyNode"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "Comfyui-NodeSpark"
|
||||||
|
}
|
||||||
|
],
|
||||||
"https://github.com/yojimbodayne/ComfyUI-Dropbox-API": [
|
"https://github.com/yojimbodayne/ComfyUI-Dropbox-API": [
|
||||||
[
|
[
|
||||||
"FetchTokenFromDropbox",
|
"FetchTokenFromDropbox",
|
||||||
@@ -4646,6 +4975,19 @@
|
|||||||
"title_aux": "Comfyui_image2prompt"
|
"title_aux": "Comfyui_image2prompt"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"https://github.com/zmwv823/ComfyUI-VideoDiffusion": [
|
||||||
|
[
|
||||||
|
"UL_LatentSyncLoader",
|
||||||
|
"UL_LatentSyncProcess",
|
||||||
|
"UL_LatentSyncSampler",
|
||||||
|
"UL_SonicLoader",
|
||||||
|
"UL_SonicProcess",
|
||||||
|
"UL_SonicSampler"
|
||||||
|
],
|
||||||
|
{
|
||||||
|
"title_aux": "ComfyUI-VideoDiffusion"
|
||||||
|
}
|
||||||
|
],
|
||||||
"https://github.com/zyd232/ComfyUI-zyd232-Nodes": [
|
"https://github.com/zyd232/ComfyUI-zyd232-Nodes": [
|
||||||
[
|
[
|
||||||
"zyd232 ImagesPixelsCompare"
|
"zyd232 ImagesPixelsCompare"
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -11,6 +11,79 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
{
|
||||||
|
"author": "vpakarinen",
|
||||||
|
"title": "ComfyUI-GenerationTimer [REMOVED]",
|
||||||
|
"reference": "https://github.com/vpakarinen/ComfyUI-GenerationTimer",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/vpakarinen/ComfyUI-GenerationTimer"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "NODES: Generation Timer, Image Timer, Timer Display"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "RedRayz",
|
||||||
|
"title": "ComfyUI-Danbooru-To-WD [REMOVED]",
|
||||||
|
"id": "danbooru2wd",
|
||||||
|
"reference": "https://github.com/RedRayz/ComfyUI-Danbooru-To-WD",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/RedRayz/ComfyUI-Danbooru-To-WD"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "Converts booru tags to a format suitable for Waifu Diffusion(or Danbooru based models)."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "alexgenovese",
|
||||||
|
"title": "comfyui_CfgPlusPlus [REMOVED]",
|
||||||
|
"id": "cfgpp",
|
||||||
|
"reference": "https://gitea.com/NotEvilGirl/cfgpp",
|
||||||
|
"files": [
|
||||||
|
"https://gitea.com/NotEvilGirl/cfgpp"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "CFG++ implemented according to [a/https://cfgpp-diffusion.github.io](https://cfgpp-diffusion.github.io). Basically modified DDIM sampler that makes sampling work at low CFG values (0 ~ 2). Read the CFG++ paper for more details"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "hosterosi",
|
||||||
|
"title": "ComfyUI OpenAI Node",
|
||||||
|
"reference": "https://github.com/hosterosi/ComfyUI_OpenAI [REMOVED]",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/hosterosi/ComfyUI_OpenAI"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "This custom node for ComfyUI allows users to input multiline text and select a specific line by its number. The node processes the input and returns the selected line along with its index."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "Gourieff",
|
||||||
|
"title": "ReActor Node for ComfyUI [DISABLED]",
|
||||||
|
"id": "reactor",
|
||||||
|
"reference": "https://github.com/Gourieff/comfyui-reactor-node",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/Gourieff/comfyui-reactor-node"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "The Fast and Simple 'roop-like' Face Swap Extension Node for ComfyUI, based on ReActor (ex Roop-GE) SD-WebUI Face Swap Extension"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "prismwastaken",
|
||||||
|
"title": "prism-tools [REMOVED]",
|
||||||
|
"reference": "https://github.com/prismwastaken/prism-comfyui-tools",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/prismwastaken/prism-comfyui-tools"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "prism-tools"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "42lux",
|
||||||
|
"title": "ComfyUI-safety-checker [DEPRECATED]",
|
||||||
|
"reference": "https://github.com/42lux/ComfyUI-safety-checker",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/42lux/ComfyUI-safety-checker"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "A NSFW/Safety Checker Node for ComfyUI."
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"author": "riverolls",
|
"author": "riverolls",
|
||||||
"title": "ComfyUI-FJDH",
|
"title": "ComfyUI-FJDH",
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,73 @@
|
|||||||
{
|
{
|
||||||
"models": [
|
"models": [
|
||||||
|
{
|
||||||
|
"name": "Leoxing/pia.ckpt",
|
||||||
|
"type": "animatediff-pia",
|
||||||
|
"base": "SD1.x",
|
||||||
|
"save_path": "animatediff_models",
|
||||||
|
"description": "AnimateDiff-PIA Model",
|
||||||
|
"reference": "https://huggingface.co/Leoxing/PIA/tree/main",
|
||||||
|
"filename": "pia.ckpt",
|
||||||
|
"url": "https://huggingface.co/Leoxing/PIA/resolve/main/pia.ckpt",
|
||||||
|
"size": "1.67GB"
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "comfyanonymous/cosmos_cv8x8x8_1.0.safetensors",
|
||||||
|
"type": "VAE",
|
||||||
|
"base": "Cosmos-1.0",
|
||||||
|
"save_path": "default",
|
||||||
|
"description": "VAE model for Cosmos 1.0",
|
||||||
|
"reference": "https://huggingface.co/comfyanonymous/cosmos_1.0_text_encoder_and_VAE_ComfyUI/tree/main",
|
||||||
|
"filename": "cosmos_cv8x8x8_1.0.safetensors",
|
||||||
|
"url": "https://huggingface.co/comfyanonymous/cosmos_1.0_text_encoder_and_VAE_ComfyUI/resolve/main/vae/cosmos_cv8x8x8_1.0.safetensors",
|
||||||
|
"size": "211MB"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "mcmonkey/Cosmos-1_0-Diffusion-7B-Text2World.safetensors",
|
||||||
|
"type": "diffusion_model",
|
||||||
|
"base": "Cosmos-1.0",
|
||||||
|
"save_path": "diffusion_models/cosmos-1.0",
|
||||||
|
"description": "Cosmos 1.0 Text2World Diffusion Model (7B)",
|
||||||
|
"reference": "https://huggingface.co/mcmonkey/cosmos-1.0",
|
||||||
|
"filename": "Cosmos-1_0-Diffusion-7B-Text2World.safetensors",
|
||||||
|
"url": "https://huggingface.co/mcmonkey/cosmos-1.0/resolve/main/Cosmos-1_0-Diffusion-7B-Text2World.safetensors",
|
||||||
|
"size": "14.5GB"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "mcmonkey/Cosmos-1_0-Diffusion-7B-Video2World.safetensors",
|
||||||
|
"type": "diffusion_model",
|
||||||
|
"base": "Cosmos-1.0",
|
||||||
|
"save_path": "diffusion_models/cosmos-1.0",
|
||||||
|
"description": "Cosmos 1.0 Video2World Diffusion Model (7B)",
|
||||||
|
"reference": "https://huggingface.co/mcmonkey/cosmos-1.0",
|
||||||
|
"filename": "Cosmos-1_0-Diffusion-7B-Video2World.safetensors",
|
||||||
|
"url": "https://huggingface.co/mcmonkey/cosmos-1.0/resolve/main/Cosmos-1_0-Diffusion-7B-Video2World.safetensors",
|
||||||
|
"size": "14.5GB"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "mcmonkey/Cosmos-1_0-Diffusion-14B-Text2World.safetensors",
|
||||||
|
"type": "diffusion_model",
|
||||||
|
"base": "Cosmos-1.0",
|
||||||
|
"save_path": "diffusion_models/cosmos-1.0",
|
||||||
|
"description": "Cosmos 1.0 Text2World Diffusion Model (14B)",
|
||||||
|
"reference": "https://huggingface.co/mcmonkey/cosmos-1.0",
|
||||||
|
"filename": "Cosmos-1_0-Diffusion-14B-Text2World.safetensors",
|
||||||
|
"url": "https://huggingface.co/mcmonkey/cosmos-1.0/resolve/main/Cosmos-1_0-Diffusion-14B-Text2World.safetensors",
|
||||||
|
"size": "28.5GB"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "mcmonkey/Cosmos-1_0-Diffusion-14B-Video2World.safetensors",
|
||||||
|
"type": "diffusion_model",
|
||||||
|
"base": "Cosmos-1.0",
|
||||||
|
"save_path": "diffusion_models/cosmos-1.0",
|
||||||
|
"description": "Cosmos 1.0 Video2World Diffusion Model (14B)",
|
||||||
|
"reference": "https://huggingface.co/mcmonkey/cosmos-1.0",
|
||||||
|
"filename": "Cosmos-1_0-Diffusion-14B-Video2World.safetensors",
|
||||||
|
"url": "https://huggingface.co/mcmonkey/cosmos-1.0/resolve/main/Cosmos-1_0-Diffusion-14B-Video2World.safetensors",
|
||||||
|
"size": "28.5GB"
|
||||||
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"name": "Comfy-Org/llava_llama3_fp8_scaled.safetensors",
|
"name": "Comfy-Org/llava_llama3_fp8_scaled.safetensors",
|
||||||
"type": "clip",
|
"type": "clip",
|
||||||
@@ -594,140 +662,6 @@
|
|||||||
"filename": "dmd2_sdxl_4step_lora_fp16.safetensors",
|
"filename": "dmd2_sdxl_4step_lora_fp16.safetensors",
|
||||||
"url": "https://huggingface.co/tianweiy/DMD2/resolve/main/dmd2_sdxl_4step_lora_fp16.safetensors",
|
"url": "https://huggingface.co/tianweiy/DMD2/resolve/main/dmd2_sdxl_4step_lora_fp16.safetensors",
|
||||||
"size": "394MB"
|
"size": "394MB"
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
"name": "Hyper-SD LoRA (1step) - SD1.5",
|
|
||||||
"type": "lora",
|
|
||||||
"base": "SD1.5",
|
|
||||||
"save_path": "loras/HyperSD/SD15",
|
|
||||||
"description": "Hyper-SD LoRA (1step) - SD1.5",
|
|
||||||
"reference": "https://huggingface.co/ByteDance/Hyper-SD",
|
|
||||||
"filename": "Hyper-SD15-1step-lora.safetensors",
|
|
||||||
"url": "https://huggingface.co/ByteDance/Hyper-SD/resolve/main/Hyper-SD15-1step-lora.safetensors",
|
|
||||||
"size": "269MB"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Hyper-SD LoRA (2steps) - SD1.5",
|
|
||||||
"type": "lora",
|
|
||||||
"base": "SD1.5",
|
|
||||||
"save_path": "loras/HyperSD/SD15",
|
|
||||||
"description": "Hyper-SD LoRA (2steps) - SD1.5",
|
|
||||||
"reference": "https://huggingface.co/ByteDance/Hyper-SD",
|
|
||||||
"filename": "Hyper-SD15-2steps-lora.safetensors",
|
|
||||||
"url": "https://huggingface.co/ByteDance/Hyper-SD/resolve/main/Hyper-SD15-2steps-lora.safetensors",
|
|
||||||
"size": "269MB"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Hyper-SD LoRA (4steps) - SD1.5",
|
|
||||||
"type": "lora",
|
|
||||||
"base": "SD1.5",
|
|
||||||
"save_path": "loras/HyperSD/SD15",
|
|
||||||
"description": "Hyper-SD LoRA (4steps)",
|
|
||||||
"reference": "https://huggingface.co/ByteDance/Hyper-SD",
|
|
||||||
"filename": "Hyper-SD15-4steps-lora.safetensors",
|
|
||||||
"url": "https://huggingface.co/ByteDance/Hyper-SD/resolve/main/Hyper-SD15-4steps-lora.safetensors",
|
|
||||||
"size": "269MB"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Hyper-SD LoRA (8steps) - SD1.5",
|
|
||||||
"type": "lora",
|
|
||||||
"base": "SD1.5",
|
|
||||||
"save_path": "loras/HyperSD/SD15",
|
|
||||||
"description": "Hyper-SD LoRA (8steps)",
|
|
||||||
"reference": "https://huggingface.co/ByteDance/Hyper-SD",
|
|
||||||
"filename": "Hyper-SD15-8steps-lora.safetensors",
|
|
||||||
"url": "https://huggingface.co/ByteDance/Hyper-SD/resolve/main/Hyper-SD15-8steps-lora.safetensors",
|
|
||||||
"size": "269MB"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Hyper-SD CFG LoRA (8steps) - SD1.5",
|
|
||||||
"type": "lora",
|
|
||||||
"base": "SD1.5",
|
|
||||||
"save_path": "loras/HyperSD/SD15",
|
|
||||||
"description": "Hyper-SD CFG LoRA (8steps)",
|
|
||||||
"reference": "https://huggingface.co/ByteDance/Hyper-SD",
|
|
||||||
"filename": "Hyper-SD15-8steps-CFG-lora.safetensors",
|
|
||||||
"url": "https://huggingface.co/ByteDance/Hyper-SD/resolve/main/Hyper-SD15-8steps-CFG-lora.safetensors",
|
|
||||||
"size": "269MB"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Hyper-SD CFG LoRA (12steps) - SD1.5",
|
|
||||||
"type": "lora",
|
|
||||||
"base": "SD1.5",
|
|
||||||
"save_path": "loras/HyperSD/SD15",
|
|
||||||
"description": "Hyper-SD CFG LoRA (12steps)",
|
|
||||||
"reference": "https://huggingface.co/ByteDance/Hyper-SD",
|
|
||||||
"filename": "Hyper-SD15-12steps-CFG-lora.safetensors",
|
|
||||||
"url": "https://huggingface.co/ByteDance/Hyper-SD/resolve/main/Hyper-SD15-12steps-CFG-lora.safetensors",
|
|
||||||
"size": "269MB"
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
"name": "Hyper-SD LoRA (1step) - SDXL",
|
|
||||||
"type": "lora",
|
|
||||||
"base": "SDXL",
|
|
||||||
"save_path": "loras/HyperSD/SDXL",
|
|
||||||
"description": "Hyper-SD LoRA (1step) - SDXL",
|
|
||||||
"reference": "https://huggingface.co/ByteDance/Hyper-SD",
|
|
||||||
"filename": "Hyper-SDXL-1step-lora.safetensors",
|
|
||||||
"url": "https://huggingface.co/ByteDance/Hyper-SD/resolve/main/Hyper-SDXL-1step-lora.safetensors",
|
|
||||||
"size": "787MB"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Hyper-SD LoRA (2steps) - SDXL",
|
|
||||||
"type": "lora",
|
|
||||||
"base": "SDXL",
|
|
||||||
"save_path": "loras/HyperSD/SDXL",
|
|
||||||
"description": "Hyper-SD LoRA (2steps) - SDXL",
|
|
||||||
"reference": "https://huggingface.co/ByteDance/Hyper-SD",
|
|
||||||
"filename": "Hyper-SDXL-2steps-lora.safetensors",
|
|
||||||
"url": "https://huggingface.co/ByteDance/Hyper-SD/resolve/main/Hyper-SDXL-2steps-lora.safetensors",
|
|
||||||
"size": "787MB"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Hyper-SD LoRA (4steps) - SDXL",
|
|
||||||
"type": "lora",
|
|
||||||
"base": "SDXL",
|
|
||||||
"save_path": "loras/HyperSD/SDXL",
|
|
||||||
"description": "Hyper-SD LoRA (4steps) - SDXL",
|
|
||||||
"reference": "https://huggingface.co/ByteDance/Hyper-SD",
|
|
||||||
"filename": "Hyper-SD15-4steps-lora.safetensors",
|
|
||||||
"url": "https://huggingface.co/ByteDance/Hyper-SD/resolve/main/Hyper-SD15-4steps-lora.safetensors",
|
|
||||||
"size": "787MB"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Hyper-SD LoRA (8steps) - SDXL",
|
|
||||||
"type": "lora",
|
|
||||||
"base": "SDXL",
|
|
||||||
"save_path": "loras/HyperSD/SDXL",
|
|
||||||
"description": "Hyper-SD LoRA (8steps) - SDXL",
|
|
||||||
"reference": "https://huggingface.co/ByteDance/Hyper-SD",
|
|
||||||
"filename": "Hyper-SDXL-8steps-lora.safetensors",
|
|
||||||
"url": "https://huggingface.co/ByteDance/Hyper-SD/resolve/main/Hyper-SDXL-8steps-lora.safetensors",
|
|
||||||
"size": "787MB"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Hyper-SD CFG LoRA (8steps) - SDXL",
|
|
||||||
"type": "lora",
|
|
||||||
"base": "SDXL",
|
|
||||||
"save_path": "loras/HyperSD/SDXL",
|
|
||||||
"description": "Hyper-SD CFG LoRA (8steps) - SDXL",
|
|
||||||
"reference": "https://huggingface.co/ByteDance/Hyper-SD",
|
|
||||||
"filename": "Hyper-SDXL-8steps-CFG-lora.safetensors",
|
|
||||||
"url": "https://huggingface.co/ByteDance/Hyper-SD/resolve/main/Hyper-SDXL-8steps-CFG-lora.safetensors",
|
|
||||||
"size": "787MB"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Hyper-SD CFG LoRA (12steps) - SDXL",
|
|
||||||
"type": "lora",
|
|
||||||
"base": "SDXL",
|
|
||||||
"save_path": "loras/HyperSD/SDXL",
|
|
||||||
"description": "Hyper-SD CFG LoRA (12steps) - SDXL",
|
|
||||||
"reference": "https://huggingface.co/ByteDance/Hyper-SD",
|
|
||||||
"filename": "Hyper-SDXL-12steps-CFG-lora.safetensors",
|
|
||||||
"url": "https://huggingface.co/ByteDance/Hyper-SD/resolve/main/Hyper-SDXL-12steps-CFG-lora.safetensors",
|
|
||||||
"size": "787MB"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -74,9 +74,18 @@ def check_file_logging():
|
|||||||
check_file_logging()
|
check_file_logging()
|
||||||
|
|
||||||
comfy_path = os.environ.get('COMFYUI_PATH')
|
comfy_path = os.environ.get('COMFYUI_PATH')
|
||||||
|
comfy_base_path = os.environ.get('COMFYUI_FOLDERS_BASE_PATH')
|
||||||
|
|
||||||
|
if comfy_path is None:
|
||||||
|
# legacy env var
|
||||||
|
comfy_path = os.environ.get('COMFYUI_PATH')
|
||||||
|
|
||||||
if comfy_path is None:
|
if comfy_path is None:
|
||||||
comfy_path = os.path.abspath(os.path.dirname(sys.modules['__main__'].__file__))
|
comfy_path = os.path.abspath(os.path.dirname(sys.modules['__main__'].__file__))
|
||||||
|
|
||||||
|
if comfy_base_path is None:
|
||||||
|
comfy_base_path = comfy_path
|
||||||
|
|
||||||
sys.__comfyui_manager_register_message_collapse = register_message_collapse
|
sys.__comfyui_manager_register_message_collapse = register_message_collapse
|
||||||
sys.__comfyui_manager_is_import_failed_extension = is_import_failed_extension
|
sys.__comfyui_manager_is_import_failed_extension = is_import_failed_extension
|
||||||
cm_global.register_api('cm.register_message_collapse', register_message_collapse)
|
cm_global.register_api('cm.register_message_collapse', register_message_collapse)
|
||||||
@@ -205,6 +214,9 @@ try:
|
|||||||
if enable_file_logging:
|
if enable_file_logging:
|
||||||
log_path_base = os.path.join(folder_paths.user_directory, 'comfyui')
|
log_path_base = os.path.join(folder_paths.user_directory, 'comfyui')
|
||||||
|
|
||||||
|
if not os.path.exists(folder_paths.user_directory):
|
||||||
|
os.makedirs(folder_paths.user_directory)
|
||||||
|
|
||||||
if os.path.exists(f"{log_path_base}{postfix}.log"):
|
if os.path.exists(f"{log_path_base}{postfix}.log"):
|
||||||
if os.path.exists(f"{log_path_base}{postfix}.prev.log"):
|
if os.path.exists(f"{log_path_base}{postfix}.prev.log"):
|
||||||
if os.path.exists(f"{log_path_base}{postfix}.prev2.log"):
|
if os.path.exists(f"{log_path_base}{postfix}.prev2.log"):
|
||||||
@@ -427,6 +439,7 @@ print("** Platform:", platform.system())
|
|||||||
print("** Python version:", sys.version)
|
print("** Python version:", sys.version)
|
||||||
print("** Python executable:", sys.executable)
|
print("** Python executable:", sys.executable)
|
||||||
print("** ComfyUI Path:", comfy_path)
|
print("** ComfyUI Path:", comfy_path)
|
||||||
|
print("** ComfyUI Base Folder Path:", comfy_base_path)
|
||||||
print("** User directory:", folder_paths.user_directory)
|
print("** User directory:", folder_paths.user_directory)
|
||||||
print("** ComfyUI-Manager config path:", manager_config_path)
|
print("** ComfyUI-Manager config path:", manager_config_path)
|
||||||
|
|
||||||
@@ -558,7 +571,8 @@ if os.path.exists(restore_snapshot_path):
|
|||||||
|
|
||||||
print("[ComfyUI-Manager] Restore snapshot.")
|
print("[ComfyUI-Manager] Restore snapshot.")
|
||||||
new_env = os.environ.copy()
|
new_env = os.environ.copy()
|
||||||
new_env["COMFYUI_PATH"] = comfy_path
|
if 'COMFYUI_FOLDERS_BASE_PATH' not in new_env:
|
||||||
|
new_env["COMFYUI_FOLDERS_BASE_PATH"] = comfy_path
|
||||||
|
|
||||||
cmd_str = [sys.executable, cm_cli_path, 'restore-snapshot', restore_snapshot_path]
|
cmd_str = [sys.executable, cm_cli_path, 'restore-snapshot', restore_snapshot_path]
|
||||||
exit_code = process_wrap(cmd_str, custom_nodes_base_path, handler=msg_capture, env=new_env)
|
exit_code = process_wrap(cmd_str, custom_nodes_base_path, handler=msg_capture, env=new_env)
|
||||||
@@ -601,7 +615,8 @@ def execute_lazy_install_script(repo_path, executable):
|
|||||||
install_cmd = [executable, "install.py"]
|
install_cmd = [executable, "install.py"]
|
||||||
|
|
||||||
new_env = os.environ.copy()
|
new_env = os.environ.copy()
|
||||||
new_env["COMFYUI_PATH"] = comfy_path
|
if 'COMFYUI_FOLDERS_BASE_PATH' not in new_env:
|
||||||
|
new_env["COMFYUI_FOLDERS_BASE_PATH"] = comfy_path
|
||||||
process_wrap(install_cmd, repo_path, env=new_env)
|
process_wrap(install_cmd, repo_path, env=new_env)
|
||||||
|
|
||||||
|
|
||||||
@@ -703,7 +718,8 @@ if os.path.exists(script_list_path):
|
|||||||
print(f"\n## Execute install/(de)activation script for '{script[0]}'")
|
print(f"\n## Execute install/(de)activation script for '{script[0]}'")
|
||||||
|
|
||||||
new_env = os.environ.copy()
|
new_env = os.environ.copy()
|
||||||
new_env["COMFYUI_PATH"] = comfy_path
|
if 'COMFYUI_FOLDERS_BASE_PATH' not in new_env:
|
||||||
|
new_env["COMFYUI_FOLDERS_BASE_PATH"] = comfy_path
|
||||||
exit_code = process_wrap(script[1:], script[0], env=new_env)
|
exit_code = process_wrap(script[1:], script[0], env=new_env)
|
||||||
|
|
||||||
if exit_code != 0:
|
if exit_code != 0:
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
[project]
|
[project]
|
||||||
name = "comfyui-manager"
|
name = "comfyui-manager"
|
||||||
description = "ComfyUI-Manager provides features to install and manage custom nodes for ComfyUI, as well as various functionalities to assist with ComfyUI."
|
description = "ComfyUI-Manager provides features to install and manage custom nodes for ComfyUI, as well as various functionalities to assist with ComfyUI."
|
||||||
version = "3.8"
|
version = "3.10"
|
||||||
license = { file = "LICENSE.txt" }
|
license = { file = "LICENSE.txt" }
|
||||||
dependencies = ["GitPython", "PyGithub", "matrix-client==0.4.0", "transformers", "huggingface-hub>0.20", "typer", "rich", "typing-extensions"]
|
dependencies = ["GitPython", "PyGithub", "matrix-client==0.4.0", "transformers", "huggingface-hub>0.20", "typer", "rich", "typing-extensions"]
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user