mirror of
https://github.com/Comfy-Org/ComfyUI-Manager.git
synced 2026-02-17 00:22:31 +08:00
add new node:comfyui-RDC,This is the node that converts the document into a RAG knowledge base in JSON format
This commit is contained in:
commit
85e3f02cf2
@ -46,10 +46,7 @@ comfyui_manager_path = os.path.abspath(os.path.dirname(__file__))
|
|||||||
cm_global.pip_blacklist = {'torch', 'torchaudio', 'torchsde', 'torchvision'}
|
cm_global.pip_blacklist = {'torch', 'torchaudio', 'torchsde', 'torchvision'}
|
||||||
cm_global.pip_downgrade_blacklist = ['torch', 'torchaudio', 'torchsde', 'torchvision', 'transformers', 'safetensors', 'kornia']
|
cm_global.pip_downgrade_blacklist = ['torch', 'torchaudio', 'torchsde', 'torchvision', 'transformers', 'safetensors', 'kornia']
|
||||||
|
|
||||||
if sys.version_info < (3, 13):
|
cm_global.pip_overrides = {}
|
||||||
cm_global.pip_overrides = {'numpy': 'numpy<2'}
|
|
||||||
else:
|
|
||||||
cm_global.pip_overrides = {}
|
|
||||||
|
|
||||||
if os.path.exists(os.path.join(manager_util.comfyui_manager_path, "pip_overrides.json")):
|
if os.path.exists(os.path.join(manager_util.comfyui_manager_path, "pip_overrides.json")):
|
||||||
with open(os.path.join(manager_util.comfyui_manager_path, "pip_overrides.json"), 'r', encoding="UTF-8", errors="ignore") as json_file:
|
with open(os.path.join(manager_util.comfyui_manager_path, "pip_overrides.json"), 'r', encoding="UTF-8", errors="ignore") as json_file:
|
||||||
@ -152,9 +149,6 @@ class Ctx:
|
|||||||
with open(core.manager_pip_overrides_path, 'r', encoding="UTF-8", errors="ignore") as json_file:
|
with open(core.manager_pip_overrides_path, 'r', encoding="UTF-8", errors="ignore") as json_file:
|
||||||
cm_global.pip_overrides = json.load(json_file)
|
cm_global.pip_overrides = json.load(json_file)
|
||||||
|
|
||||||
if sys.version_info < (3, 13):
|
|
||||||
cm_global.pip_overrides = {'numpy': 'numpy<2'}
|
|
||||||
|
|
||||||
if os.path.exists(core.manager_pip_blacklist_path):
|
if os.path.exists(core.manager_pip_blacklist_path):
|
||||||
with open(core.manager_pip_blacklist_path, 'r', encoding="UTF-8", errors="ignore") as f:
|
with open(core.manager_pip_blacklist_path, 'r', encoding="UTF-8", errors="ignore") as f:
|
||||||
for x in f.readlines():
|
for x in f.readlines():
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
8929
github-stats.json
8929
github-stats.json
File diff suppressed because it is too large
Load Diff
@ -43,7 +43,7 @@ import manager_downloader
|
|||||||
from node_package import InstalledNodePackage
|
from node_package import InstalledNodePackage
|
||||||
|
|
||||||
|
|
||||||
version_code = [3, 33, 1]
|
version_code = [3, 34, 1]
|
||||||
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 '')
|
||||||
|
|
||||||
|
|
||||||
@ -400,32 +400,72 @@ class ManagedResult:
|
|||||||
return self
|
return self
|
||||||
|
|
||||||
|
|
||||||
class NormalizedKeyDict(dict):
|
class NormalizedKeyDict:
|
||||||
|
def __init__(self):
|
||||||
|
self._store = {}
|
||||||
|
self._key_map = {}
|
||||||
|
|
||||||
def _normalize_key(self, key):
|
def _normalize_key(self, key):
|
||||||
if isinstance(key, str):
|
if isinstance(key, str):
|
||||||
return key.strip().lower()
|
return key.strip().lower()
|
||||||
return key
|
return key
|
||||||
|
|
||||||
def __setitem__(self, key, value):
|
def __setitem__(self, key, value):
|
||||||
super().__setitem__(self._normalize_key(key), value)
|
norm_key = self._normalize_key(key)
|
||||||
|
self._key_map[norm_key] = key
|
||||||
|
self._store[key] = value
|
||||||
|
|
||||||
def __getitem__(self, key):
|
def __getitem__(self, key):
|
||||||
return super().__getitem__(self._normalize_key(key))
|
norm_key = self._normalize_key(key)
|
||||||
|
original_key = self._key_map[norm_key]
|
||||||
|
return self._store[original_key]
|
||||||
|
|
||||||
def __delitem__(self, key):
|
def __delitem__(self, key):
|
||||||
return super().__delitem__(self._normalize_key(key))
|
norm_key = self._normalize_key(key)
|
||||||
|
original_key = self._key_map.pop(norm_key)
|
||||||
|
del self._store[original_key]
|
||||||
|
|
||||||
def __contains__(self, key):
|
def __contains__(self, key):
|
||||||
return super().__contains__(self._normalize_key(key))
|
return self._normalize_key(key) in self._key_map
|
||||||
|
|
||||||
def get(self, key, default=None):
|
def get(self, key, default=None):
|
||||||
return super().get(self._normalize_key(key), default)
|
return self[key] if key in self else default
|
||||||
|
|
||||||
def setdefault(self, key, default=None):
|
def setdefault(self, key, default=None):
|
||||||
return super().setdefault(self._normalize_key(key), default)
|
if key in self:
|
||||||
|
return self[key]
|
||||||
|
self[key] = default
|
||||||
|
return default
|
||||||
|
|
||||||
def pop(self, key, default=None):
|
def pop(self, key, default=None):
|
||||||
return super().pop(self._normalize_key(key), default)
|
if key in self:
|
||||||
|
val = self[key]
|
||||||
|
del self[key]
|
||||||
|
return val
|
||||||
|
if default is not None:
|
||||||
|
return default
|
||||||
|
raise KeyError(key)
|
||||||
|
|
||||||
|
def keys(self):
|
||||||
|
return self._store.keys()
|
||||||
|
|
||||||
|
def values(self):
|
||||||
|
return self._store.values()
|
||||||
|
|
||||||
|
def items(self):
|
||||||
|
return self._store.items()
|
||||||
|
|
||||||
|
def __iter__(self):
|
||||||
|
return iter(self._store)
|
||||||
|
|
||||||
|
def __len__(self):
|
||||||
|
return len(self._store)
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
return repr(self._store)
|
||||||
|
|
||||||
|
def to_dict(self):
|
||||||
|
return dict(self._store)
|
||||||
|
|
||||||
|
|
||||||
class UnifiedManager:
|
class UnifiedManager:
|
||||||
@ -842,7 +882,7 @@ class UnifiedManager:
|
|||||||
channel = normalize_channel(channel)
|
channel = normalize_channel(channel)
|
||||||
nodes = await self.load_nightly(channel, mode)
|
nodes = await self.load_nightly(channel, mode)
|
||||||
|
|
||||||
res = {}
|
res = NormalizedKeyDict()
|
||||||
added_cnr = set()
|
added_cnr = set()
|
||||||
for v in nodes.values():
|
for v in nodes.values():
|
||||||
v = v[0]
|
v = v[0]
|
||||||
@ -1698,12 +1738,15 @@ def read_config():
|
|||||||
}
|
}
|
||||||
|
|
||||||
except Exception:
|
except Exception:
|
||||||
manager_util.use_uv = False
|
import importlib.util
|
||||||
|
# temporary disable `uv` on Windows by default (https://github.com/Comfy-Org/ComfyUI-Manager/issues/1969)
|
||||||
|
manager_util.use_uv = importlib.util.find_spec("uv") is not None and platform.system() != "Windows"
|
||||||
|
|
||||||
return {
|
return {
|
||||||
'http_channel_enabled': False,
|
'http_channel_enabled': False,
|
||||||
'preview_method': manager_funcs.get_current_preview_method(),
|
'preview_method': manager_funcs.get_current_preview_method(),
|
||||||
'git_exe': '',
|
'git_exe': '',
|
||||||
'use_uv': False,
|
'use_uv': manager_util.use_uv,
|
||||||
'channel_url': DEFAULT_CHANNEL,
|
'channel_url': DEFAULT_CHANNEL,
|
||||||
'default_cache_as_channel_url': False,
|
'default_cache_as_channel_url': False,
|
||||||
'share_option': 'all',
|
'share_option': 'all',
|
||||||
@ -3068,6 +3111,11 @@ async def restore_snapshot(snapshot_path, git_helper_extras=None):
|
|||||||
info = yaml.load(snapshot_file, Loader=yaml.SafeLoader)
|
info = yaml.load(snapshot_file, Loader=yaml.SafeLoader)
|
||||||
info = info['custom_nodes']
|
info = info['custom_nodes']
|
||||||
|
|
||||||
|
if 'pips' in info and info['pips']:
|
||||||
|
pips = info['pips']
|
||||||
|
else:
|
||||||
|
pips = {}
|
||||||
|
|
||||||
# for cnr restore
|
# for cnr restore
|
||||||
cnr_info = info.get('cnr_custom_nodes')
|
cnr_info = info.get('cnr_custom_nodes')
|
||||||
if cnr_info is not None:
|
if cnr_info is not None:
|
||||||
@ -3274,6 +3322,8 @@ async def restore_snapshot(snapshot_path, git_helper_extras=None):
|
|||||||
unified_manager.repo_install(repo_url, to_path, instant_execution=True, no_deps=False, return_postinstall=False)
|
unified_manager.repo_install(repo_url, to_path, instant_execution=True, no_deps=False, return_postinstall=False)
|
||||||
cloned_repos.append(repo_name)
|
cloned_repos.append(repo_name)
|
||||||
|
|
||||||
|
manager_util.restore_pip_snapshot(pips, git_helper_extras)
|
||||||
|
|
||||||
# print summary
|
# print summary
|
||||||
for x in cloned_repos:
|
for x in cloned_repos:
|
||||||
print(f"[ INSTALLED ] {x}")
|
print(f"[ INSTALLED ] {x}")
|
||||||
|
|||||||
@ -589,7 +589,7 @@ async def task_worker():
|
|||||||
return 'success'
|
return 'success'
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logging.error(f"[ComfyUI-Manager] ERROR: {e}", file=sys.stderr)
|
logging.error(f"[ComfyUI-Manager] ERROR: {e}")
|
||||||
|
|
||||||
return f"Model installation error: {model_url}"
|
return f"Model installation error: {model_url}"
|
||||||
|
|
||||||
@ -865,7 +865,7 @@ async def fetch_customnode_list(request):
|
|||||||
|
|
||||||
channel = found
|
channel = found
|
||||||
|
|
||||||
result = dict(channel=channel, node_packs=node_packs)
|
result = dict(channel=channel, node_packs=node_packs.to_dict())
|
||||||
|
|
||||||
return web.json_response(result, content_type='application/json')
|
return web.json_response(result, content_type='application/json')
|
||||||
|
|
||||||
|
|||||||
@ -15,7 +15,6 @@ import re
|
|||||||
import logging
|
import logging
|
||||||
import platform
|
import platform
|
||||||
import shlex
|
import shlex
|
||||||
import cm_global
|
|
||||||
|
|
||||||
|
|
||||||
cache_lock = threading.Lock()
|
cache_lock = threading.Lock()
|
||||||
@ -327,6 +326,32 @@ torch_torchvision_torchaudio_version_map = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def torch_rollback(prev):
|
||||||
|
spec = prev.split('+')
|
||||||
|
if len(spec) > 1:
|
||||||
|
platform = spec[1]
|
||||||
|
else:
|
||||||
|
cmd = make_pip_cmd(['install', '--force', 'torch', 'torchvision', 'torchaudio'])
|
||||||
|
subprocess.check_output(cmd, universal_newlines=True)
|
||||||
|
logging.error(cmd)
|
||||||
|
return
|
||||||
|
|
||||||
|
torch_ver = StrictVersion(spec[0])
|
||||||
|
torch_ver = f"{torch_ver.major}.{torch_ver.minor}.{torch_ver.patch}"
|
||||||
|
torch_torchvision_torchaudio_ver = torch_torchvision_torchaudio_version_map.get(torch_ver)
|
||||||
|
|
||||||
|
if torch_torchvision_torchaudio_ver is None:
|
||||||
|
cmd = make_pip_cmd(['install', '--pre', 'torch', 'torchvision', 'torchaudio',
|
||||||
|
'--index-url', f"https://download.pytorch.org/whl/nightly/{platform}"])
|
||||||
|
logging.info("[ComfyUI-Manager] restore PyTorch to nightly version")
|
||||||
|
else:
|
||||||
|
torchvision_ver, torchaudio_ver = torch_torchvision_torchaudio_ver
|
||||||
|
cmd = make_pip_cmd(['install', f'torch=={torch_ver}', f'torchvision=={torchvision_ver}', f"torchaudio=={torchaudio_ver}",
|
||||||
|
'--index-url', f"https://download.pytorch.org/whl/{platform}"])
|
||||||
|
logging.info(f"[ComfyUI-Manager] restore PyTorch to {torch_ver}+{platform}")
|
||||||
|
|
||||||
|
subprocess.check_output(cmd, universal_newlines=True)
|
||||||
|
|
||||||
|
|
||||||
class PIPFixer:
|
class PIPFixer:
|
||||||
def __init__(self, prev_pip_versions, comfyui_path, manager_files_path):
|
def __init__(self, prev_pip_versions, comfyui_path, manager_files_path):
|
||||||
@ -334,32 +359,6 @@ class PIPFixer:
|
|||||||
self.comfyui_path = comfyui_path
|
self.comfyui_path = comfyui_path
|
||||||
self.manager_files_path = manager_files_path
|
self.manager_files_path = manager_files_path
|
||||||
|
|
||||||
def torch_rollback(self):
|
|
||||||
spec = self.prev_pip_versions['torch'].split('+')
|
|
||||||
if len(spec) > 0:
|
|
||||||
platform = spec[1]
|
|
||||||
else:
|
|
||||||
cmd = make_pip_cmd(['install', '--force', 'torch', 'torchvision', 'torchaudio'])
|
|
||||||
subprocess.check_output(cmd, universal_newlines=True)
|
|
||||||
logging.error(cmd)
|
|
||||||
return
|
|
||||||
|
|
||||||
torch_ver = StrictVersion(spec[0])
|
|
||||||
torch_ver = f"{torch_ver.major}.{torch_ver.minor}.{torch_ver.patch}"
|
|
||||||
torch_torchvision_torchaudio_ver = torch_torchvision_torchaudio_version_map.get(torch_ver)
|
|
||||||
|
|
||||||
if torch_torchvision_torchaudio_ver is None:
|
|
||||||
cmd = make_pip_cmd(['install', '--pre', 'torch', 'torchvision', 'torchaudio',
|
|
||||||
'--index-url', f"https://download.pytorch.org/whl/nightly/{platform}"])
|
|
||||||
logging.info("[ComfyUI-Manager] restore PyTorch to nightly version")
|
|
||||||
else:
|
|
||||||
torchvision_ver, torchaudio_ver = torch_torchvision_torchaudio_ver
|
|
||||||
cmd = make_pip_cmd(['install', f'torch=={torch_ver}', f'torchvision=={torchvision_ver}', f"torchaudio=={torchaudio_ver}",
|
|
||||||
'--index-url', f"https://download.pytorch.org/whl/{platform}"])
|
|
||||||
logging.info(f"[ComfyUI-Manager] restore PyTorch to {torch_ver}+{platform}")
|
|
||||||
|
|
||||||
subprocess.check_output(cmd, universal_newlines=True)
|
|
||||||
|
|
||||||
def fix_broken(self):
|
def fix_broken(self):
|
||||||
new_pip_versions = get_installed_packages(True)
|
new_pip_versions = get_installed_packages(True)
|
||||||
|
|
||||||
@ -381,7 +380,7 @@ class PIPFixer:
|
|||||||
elif self.prev_pip_versions['torch'] != new_pip_versions['torch'] \
|
elif self.prev_pip_versions['torch'] != new_pip_versions['torch'] \
|
||||||
or self.prev_pip_versions['torchvision'] != new_pip_versions['torchvision'] \
|
or self.prev_pip_versions['torchvision'] != new_pip_versions['torchvision'] \
|
||||||
or self.prev_pip_versions['torchaudio'] != new_pip_versions['torchaudio']:
|
or self.prev_pip_versions['torchaudio'] != new_pip_versions['torchaudio']:
|
||||||
self.torch_rollback()
|
torch_rollback(self.prev_pip_versions['torch'])
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logging.error("[ComfyUI-Manager] Failed to restore PyTorch")
|
logging.error("[ComfyUI-Manager] Failed to restore PyTorch")
|
||||||
logging.error(e)
|
logging.error(e)
|
||||||
@ -412,32 +411,14 @@ class PIPFixer:
|
|||||||
|
|
||||||
if len(targets) > 0:
|
if len(targets) > 0:
|
||||||
for x in targets:
|
for x in targets:
|
||||||
if sys.version_info < (3, 13):
|
cmd = make_pip_cmd(['install', f"{x}=={versions[0].version_string}"])
|
||||||
cmd = make_pip_cmd(['install', f"{x}=={versions[0].version_string}", "numpy<2"])
|
subprocess.check_output(cmd, universal_newlines=True)
|
||||||
subprocess.check_output(cmd, universal_newlines=True)
|
|
||||||
|
|
||||||
logging.info(f"[ComfyUI-Manager] 'opencv' dependencies were fixed: {targets}")
|
logging.info(f"[ComfyUI-Manager] 'opencv' dependencies were fixed: {targets}")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logging.error("[ComfyUI-Manager] Failed to restore opencv")
|
logging.error("[ComfyUI-Manager] Failed to restore opencv")
|
||||||
logging.error(e)
|
logging.error(e)
|
||||||
|
|
||||||
# fix numpy
|
|
||||||
if sys.version_info >= (3, 13):
|
|
||||||
logging.info("[ComfyUI-Manager] In Python 3.13 and above, PIP Fixer does not downgrade `numpy` below version 2.0. If you need to force a downgrade of `numpy`, please use `pip_auto_fix.list`.")
|
|
||||||
else:
|
|
||||||
try:
|
|
||||||
np = new_pip_versions.get('numpy')
|
|
||||||
if cm_global.pip_overrides.get('numpy') == 'numpy<2':
|
|
||||||
if np is not None:
|
|
||||||
if StrictVersion(np) >= StrictVersion('2'):
|
|
||||||
cmd = make_pip_cmd(['install', "numpy<2"])
|
|
||||||
subprocess.check_output(cmd , universal_newlines=True)
|
|
||||||
|
|
||||||
logging.info("[ComfyUI-Manager] 'numpy' dependency were fixed")
|
|
||||||
except Exception as e:
|
|
||||||
logging.error("[ComfyUI-Manager] Failed to restore numpy")
|
|
||||||
logging.error(e)
|
|
||||||
|
|
||||||
# fix missing frontend
|
# fix missing frontend
|
||||||
try:
|
try:
|
||||||
# NOTE: package name in requirements is 'comfyui-frontend-package'
|
# NOTE: package name in requirements is 'comfyui-frontend-package'
|
||||||
@ -537,3 +518,69 @@ def robust_readlines(fullpath):
|
|||||||
|
|
||||||
print(f"[ComfyUI-Manager] Failed to recognize encoding for: {fullpath}")
|
print(f"[ComfyUI-Manager] Failed to recognize encoding for: {fullpath}")
|
||||||
return []
|
return []
|
||||||
|
|
||||||
|
|
||||||
|
def restore_pip_snapshot(pips, options):
|
||||||
|
non_url = []
|
||||||
|
local_url = []
|
||||||
|
non_local_url = []
|
||||||
|
|
||||||
|
for k, v in pips.items():
|
||||||
|
# NOTE: skip torch related packages
|
||||||
|
if k.startswith("torch==") or k.startswith("torchvision==") or k.startswith("torchaudio==") or k.startswith("nvidia-"):
|
||||||
|
continue
|
||||||
|
|
||||||
|
if v == "":
|
||||||
|
non_url.append(k)
|
||||||
|
else:
|
||||||
|
if v.startswith('file:'):
|
||||||
|
local_url.append(v)
|
||||||
|
else:
|
||||||
|
non_local_url.append(v)
|
||||||
|
|
||||||
|
|
||||||
|
# restore other pips
|
||||||
|
failed = []
|
||||||
|
if '--pip-non-url' in options:
|
||||||
|
# try all at once
|
||||||
|
res = 1
|
||||||
|
try:
|
||||||
|
res = subprocess.check_output(make_pip_cmd(['install'] + non_url))
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
|
||||||
|
# fallback
|
||||||
|
if res != 0:
|
||||||
|
for x in non_url:
|
||||||
|
res = 1
|
||||||
|
try:
|
||||||
|
res = subprocess.check_output(make_pip_cmd(['install', '--no-deps', x]))
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
|
||||||
|
if res != 0:
|
||||||
|
failed.append(x)
|
||||||
|
|
||||||
|
if '--pip-non-local-url' in options:
|
||||||
|
for x in non_local_url:
|
||||||
|
res = 1
|
||||||
|
try:
|
||||||
|
res = subprocess.check_output(make_pip_cmd(['install', '--no-deps', x]))
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
|
||||||
|
if res != 0:
|
||||||
|
failed.append(x)
|
||||||
|
|
||||||
|
if '--pip-local-url' in options:
|
||||||
|
for x in local_url:
|
||||||
|
res = 1
|
||||||
|
try:
|
||||||
|
res = subprocess.check_output(make_pip_cmd(['install', '--no-deps', x]))
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
|
||||||
|
if res != 0:
|
||||||
|
failed.append(x)
|
||||||
|
|
||||||
|
print(f"Installation failed for pip packages: {failed}")
|
||||||
@ -2,6 +2,8 @@ import sys
|
|||||||
import subprocess
|
import subprocess
|
||||||
import os
|
import os
|
||||||
|
|
||||||
|
import manager_util
|
||||||
|
|
||||||
|
|
||||||
def security_check():
|
def security_check():
|
||||||
print("[START] Security scan")
|
print("[START] Security scan")
|
||||||
@ -66,11 +68,11 @@ https://blog.comfy.org/comfyui-statement-on-the-ultralytics-crypto-miner-situati
|
|||||||
"lolMiner": [os.path.join(comfyui_path, 'lolMiner')]
|
"lolMiner": [os.path.join(comfyui_path, 'lolMiner')]
|
||||||
}
|
}
|
||||||
|
|
||||||
installed_pips = subprocess.check_output([sys.executable, '-m', "pip", "freeze"], text=True)
|
installed_pips = subprocess.check_output(manager_util.make_pip_cmd(["freeze"]), text=True)
|
||||||
|
|
||||||
detected = set()
|
detected = set()
|
||||||
try:
|
try:
|
||||||
anthropic_info = subprocess.check_output([sys.executable, '-m', "pip", "show", "anthropic"], text=True, stderr=subprocess.DEVNULL)
|
anthropic_info = subprocess.check_output(manager_util.make_pip_cmd(["show", "anthropic"]), text=True, stderr=subprocess.DEVNULL)
|
||||||
anthropic_reqs = [x for x in anthropic_info.split('\n') if x.startswith("Requires")][0].split(': ')[1]
|
anthropic_reqs = [x for x in anthropic_info.split('\n') if x.startswith("Requires")][0].split(': ')[1]
|
||||||
if "pycrypto" in anthropic_reqs:
|
if "pycrypto" in anthropic_reqs:
|
||||||
location = [x for x in anthropic_info.split('\n') if x.startswith("Location")][0].split(': ')[1]
|
location = [x for x in anthropic_info.split('\n') if x.startswith("Location")][0].split(': ')[1]
|
||||||
|
|||||||
@ -202,7 +202,7 @@ export class CopusShareDialog extends ComfyDialog {
|
|||||||
this.LockInput = $el("input", {
|
this.LockInput = $el("input", {
|
||||||
type: "text",
|
type: "text",
|
||||||
placeholder: "",
|
placeholder: "",
|
||||||
style: {
|
style: {
|
||||||
width: "100px",
|
width: "100px",
|
||||||
padding: "7px",
|
padding: "7px",
|
||||||
borderRadius: "4px",
|
borderRadius: "4px",
|
||||||
@ -342,15 +342,11 @@ export class CopusShareDialog extends ComfyDialog {
|
|||||||
["0/70"]
|
["0/70"]
|
||||||
);
|
);
|
||||||
// Additional Inputs Section
|
// Additional Inputs Section
|
||||||
const additionalInputsSection = $el(
|
const additionalInputsSection = $el("div", { style: { ...sectionStyle } }, [
|
||||||
"div",
|
$el("label", { style: labelStyle }, ["3️⃣ Title "]),
|
||||||
{ style: { ...sectionStyle, } },
|
this.TitleInput,
|
||||||
[
|
titleNumDom,
|
||||||
$el("label", { style: labelStyle }, ["3️⃣ Title "]),
|
]);
|
||||||
this.TitleInput,
|
|
||||||
titleNumDom,
|
|
||||||
]
|
|
||||||
);
|
|
||||||
const SubtitleSection = $el("div", { style: sectionStyle }, [
|
const SubtitleSection = $el("div", { style: sectionStyle }, [
|
||||||
$el("label", { style: labelStyle }, ["4️⃣ Subtitle "]),
|
$el("label", { style: labelStyle }, ["4️⃣ Subtitle "]),
|
||||||
this.SubTitleInput,
|
this.SubTitleInput,
|
||||||
@ -392,11 +388,31 @@ export class CopusShareDialog extends ComfyDialog {
|
|||||||
},
|
},
|
||||||
[
|
[
|
||||||
this.radioButtonsCheck_lock,
|
this.radioButtonsCheck_lock,
|
||||||
$el("div", { style: { marginLeft: "5px" ,display:'flex',alignItems:'center'} }, [
|
$el(
|
||||||
$el("span", { style: { marginLeft: "5px" } }, ["ON"]),
|
"div",
|
||||||
$el("span", { style: { marginLeft: "20px",marginRight:'10px' ,color:'#fff'} }, ["Price US$"]),
|
{
|
||||||
this.LockInput
|
style: {
|
||||||
]),
|
marginLeft: "5px",
|
||||||
|
display: "flex",
|
||||||
|
alignItems: "center",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
[
|
||||||
|
$el("span", { style: { marginLeft: "5px" } }, ["ON"]),
|
||||||
|
$el(
|
||||||
|
"span",
|
||||||
|
{
|
||||||
|
style: {
|
||||||
|
marginLeft: "20px",
|
||||||
|
marginRight: "10px",
|
||||||
|
color: "#fff",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
["Price US$"]
|
||||||
|
),
|
||||||
|
this.LockInput,
|
||||||
|
]
|
||||||
|
),
|
||||||
]
|
]
|
||||||
),
|
),
|
||||||
$el(
|
$el(
|
||||||
@ -404,14 +420,28 @@ export class CopusShareDialog extends ComfyDialog {
|
|||||||
{ style: { display: "flex", alignItems: "center", cursor: "pointer" } },
|
{ style: { display: "flex", alignItems: "center", cursor: "pointer" } },
|
||||||
[
|
[
|
||||||
this.radioButtonsCheckOff_lock,
|
this.radioButtonsCheckOff_lock,
|
||||||
$el("span", { style: { marginLeft: "5px" } }, ["OFF"]),
|
$el(
|
||||||
|
"div",
|
||||||
|
{
|
||||||
|
style: {
|
||||||
|
marginLeft: "5px",
|
||||||
|
display: "flex",
|
||||||
|
alignItems: "center",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
[
|
||||||
|
$el("span", { style: { marginLeft: "5px" } }, ["OFF"]),
|
||||||
|
]
|
||||||
|
),
|
||||||
]
|
]
|
||||||
),
|
),
|
||||||
|
|
||||||
$el(
|
$el(
|
||||||
"p",
|
"p",
|
||||||
{ style: { fontSize: "16px", color: "#fff", margin: "10px 0 0 0" } },
|
{ style: { fontSize: "16px", color: "#fff", margin: "10px 0 0 0" } },
|
||||||
["Get paid from your workflow. You can change the price and withdraw your earnings on Copus."]
|
[
|
||||||
|
"Get paid from your workflow. You can change the price and withdraw your earnings on Copus.",
|
||||||
|
]
|
||||||
),
|
),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
@ -432,7 +462,7 @@ export class CopusShareDialog extends ComfyDialog {
|
|||||||
});
|
});
|
||||||
|
|
||||||
const blockChainSection = $el("div", { style: sectionStyle }, [
|
const blockChainSection = $el("div", { style: sectionStyle }, [
|
||||||
$el("label", { style: labelStyle }, ["7️⃣ Store on blockchain "]),
|
$el("label", { style: labelStyle }, ["8️⃣ Store on blockchain "]),
|
||||||
$el(
|
$el(
|
||||||
"label",
|
"label",
|
||||||
{
|
{
|
||||||
@ -463,6 +493,139 @@ export class CopusShareDialog extends ComfyDialog {
|
|||||||
),
|
),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
this.ratingRadioButtonsCheck0 = $el("input", {
|
||||||
|
type: "radio",
|
||||||
|
name: "content_rating",
|
||||||
|
value: "0",
|
||||||
|
id: "content_rating0",
|
||||||
|
});
|
||||||
|
this.ratingRadioButtonsCheck1 = $el("input", {
|
||||||
|
type: "radio",
|
||||||
|
name: "content_rating",
|
||||||
|
value: "1",
|
||||||
|
id: "content_rating1",
|
||||||
|
});
|
||||||
|
this.ratingRadioButtonsCheck2 = $el("input", {
|
||||||
|
type: "radio",
|
||||||
|
name: "content_rating",
|
||||||
|
value: "2",
|
||||||
|
id: "content_rating2",
|
||||||
|
});
|
||||||
|
this.ratingRadioButtonsCheck_1 = $el("input", {
|
||||||
|
type: "radio",
|
||||||
|
name: "content_rating",
|
||||||
|
value: "-1",
|
||||||
|
id: "content_rating_1",
|
||||||
|
checked: true,
|
||||||
|
});
|
||||||
|
|
||||||
|
// content rating
|
||||||
|
const contentRatingSection = $el("div", { style: sectionStyle }, [
|
||||||
|
$el("label", { style: labelStyle }, ["7️⃣ Content rating "]),
|
||||||
|
$el(
|
||||||
|
"label",
|
||||||
|
{
|
||||||
|
style: {
|
||||||
|
marginTop: "10px",
|
||||||
|
display: "flex",
|
||||||
|
alignItems: "center",
|
||||||
|
cursor: "pointer",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
[
|
||||||
|
this.ratingRadioButtonsCheck0,
|
||||||
|
$el("img", {
|
||||||
|
style: {
|
||||||
|
width: "12px",
|
||||||
|
height: "12px",
|
||||||
|
marginLeft: "5px",
|
||||||
|
},
|
||||||
|
src: "https://static.copus.io/images/client/202507/test/b9f17da83b054d53cd0cb4508c2c30dc.png",
|
||||||
|
}),
|
||||||
|
$el("span", { style: { marginLeft: "5px", color: "#fff" } }, [
|
||||||
|
"All ages",
|
||||||
|
]),
|
||||||
|
]
|
||||||
|
),
|
||||||
|
$el(
|
||||||
|
"p",
|
||||||
|
{ style: { fontSize: "10px", color: "#fff", marginLeft: "20px" } },
|
||||||
|
["Safe for all viewers; no profanity, violence, or mature themes."]
|
||||||
|
),
|
||||||
|
$el(
|
||||||
|
"label",
|
||||||
|
{ style: { display: "flex", alignItems: "center", cursor: "pointer" } },
|
||||||
|
[
|
||||||
|
this.ratingRadioButtonsCheck1,
|
||||||
|
$el("img", {
|
||||||
|
style: {
|
||||||
|
width: "12px",
|
||||||
|
height: "12px",
|
||||||
|
marginLeft: "5px",
|
||||||
|
},
|
||||||
|
src: "https://static.copus.io/images/client/202507/test/7848bc0d3690671df21c7cf00c4cfc81.png",
|
||||||
|
}),
|
||||||
|
$el("span", { style: { marginLeft: "5px", color: "#fff" } }, [
|
||||||
|
"13+ (Teen)",
|
||||||
|
]),
|
||||||
|
]
|
||||||
|
),
|
||||||
|
$el(
|
||||||
|
"p",
|
||||||
|
{ style: { fontSize: "10px", color: "#fff", marginLeft: "20px" } },
|
||||||
|
[
|
||||||
|
"Mild language, light themes, or cartoon violence; no explicit content. ",
|
||||||
|
]
|
||||||
|
),
|
||||||
|
$el(
|
||||||
|
"label",
|
||||||
|
{ style: { display: "flex", alignItems: "center", cursor: "pointer" } },
|
||||||
|
[
|
||||||
|
this.ratingRadioButtonsCheck2,
|
||||||
|
$el("img", {
|
||||||
|
style: {
|
||||||
|
width: "12px",
|
||||||
|
height: "12px",
|
||||||
|
marginLeft: "5px",
|
||||||
|
},
|
||||||
|
src: "https://static.copus.io/images/client/202507/test/bc51839c208d68d91173e43c23bff039.png",
|
||||||
|
}),
|
||||||
|
$el("span", { style: { marginLeft: "5px", color: "#fff" } }, [
|
||||||
|
"18+ (Explicit)",
|
||||||
|
]),
|
||||||
|
]
|
||||||
|
),
|
||||||
|
$el(
|
||||||
|
"p",
|
||||||
|
{ style: { fontSize: "10px", color: "#fff", marginLeft: "20px" } },
|
||||||
|
[
|
||||||
|
"Explicit content, including sexual content, strong violence, or intense themes. ",
|
||||||
|
]
|
||||||
|
),
|
||||||
|
$el(
|
||||||
|
"label",
|
||||||
|
{ style: { display: "flex", alignItems: "center", cursor: "pointer" } },
|
||||||
|
[
|
||||||
|
this.ratingRadioButtonsCheck_1,
|
||||||
|
$el("img", {
|
||||||
|
style: {
|
||||||
|
width: "12px",
|
||||||
|
height: "12px",
|
||||||
|
marginLeft: "5px",
|
||||||
|
},
|
||||||
|
src: "https://static.copus.io/images/client/202507/test/5c802fdcaaea4e7bbed37393eec0d5ba.png",
|
||||||
|
}),
|
||||||
|
$el("span", { style: { marginLeft: "5px", color: "#fff" } }, [
|
||||||
|
"Not Rated",
|
||||||
|
]),
|
||||||
|
]
|
||||||
|
),
|
||||||
|
$el(
|
||||||
|
"p",
|
||||||
|
{ style: { fontSize: "10px", color: "#fff", marginLeft: "20px" } },
|
||||||
|
["No age rating provided."]
|
||||||
|
),
|
||||||
|
]);
|
||||||
|
|
||||||
// Message Section
|
// Message Section
|
||||||
this.message = $el(
|
this.message = $el(
|
||||||
@ -526,6 +689,7 @@ export class CopusShareDialog extends ComfyDialog {
|
|||||||
DescriptionSection,
|
DescriptionSection,
|
||||||
// contestSection,
|
// contestSection,
|
||||||
blockChainSection_lock,
|
blockChainSection_lock,
|
||||||
|
contentRatingSection,
|
||||||
blockChainSection,
|
blockChainSection,
|
||||||
this.message,
|
this.message,
|
||||||
buttonsSection,
|
buttonsSection,
|
||||||
@ -587,7 +751,9 @@ export class CopusShareDialog extends ComfyDialog {
|
|||||||
url: data,
|
url: data,
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
throw new Error("make sure your API key is correct and try again later");
|
throw new Error(
|
||||||
|
"make sure your API key is correct and try again later"
|
||||||
|
);
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
if (e?.response?.status === 413) {
|
if (e?.response?.status === 413) {
|
||||||
@ -628,8 +794,15 @@ export class CopusShareDialog extends ComfyDialog {
|
|||||||
subTitle: this.SubTitleInput.value,
|
subTitle: this.SubTitleInput.value,
|
||||||
content: this.descriptionInput.value,
|
content: this.descriptionInput.value,
|
||||||
storeOnChain: this.radioButtonsCheck.checked ? true : false,
|
storeOnChain: this.radioButtonsCheck.checked ? true : false,
|
||||||
lockState:this.radioButtonsCheck_lock.checked ? 2 : 0,
|
lockState: this.radioButtonsCheck_lock.checked ? 2 : 0,
|
||||||
unlockPrice:this.LockInput.value,
|
unlockPrice: this.LockInput.value,
|
||||||
|
rating: this.ratingRadioButtonsCheck0.checked
|
||||||
|
? 0
|
||||||
|
: this.ratingRadioButtonsCheck1.checked
|
||||||
|
? 1
|
||||||
|
: this.ratingRadioButtonsCheck2.checked
|
||||||
|
? 2
|
||||||
|
: -1,
|
||||||
};
|
};
|
||||||
|
|
||||||
if (!this.keyInput.value) {
|
if (!this.keyInput.value) {
|
||||||
@ -644,8 +817,8 @@ export class CopusShareDialog extends ComfyDialog {
|
|||||||
throw new Error("Title is required");
|
throw new Error("Title is required");
|
||||||
}
|
}
|
||||||
|
|
||||||
if(this.radioButtonsCheck_lock.checked){
|
if (this.radioButtonsCheck_lock.checked) {
|
||||||
if (!this.LockInput.value){
|
if (!this.LockInput.value) {
|
||||||
throw new Error("Price is required");
|
throw new Error("Price is required");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -695,23 +868,23 @@ export class CopusShareDialog extends ComfyDialog {
|
|||||||
"Uploading workflow..."
|
"Uploading workflow..."
|
||||||
);
|
);
|
||||||
|
|
||||||
if (res.status && res.data.status && res.data) {
|
if (res.status && res.data.status && res.data) {
|
||||||
localStorage.setItem("copus_token",this.keyInput.value);
|
localStorage.setItem("copus_token", this.keyInput.value);
|
||||||
const { data } = res.data;
|
const { data } = res.data;
|
||||||
if (data) {
|
if (data) {
|
||||||
const url = `${DEFAULT_HOMEPAGE_URL}/work/${data}`;
|
const url = `${DEFAULT_HOMEPAGE_URL}/work/${data}`;
|
||||||
this.message.innerHTML = `Workflow has been shared successfully. <a href="${url}" target="_blank">Click here to view it.</a>`;
|
this.message.innerHTML = `Workflow has been shared successfully. <a href="${url}" target="_blank">Click here to view it.</a>`;
|
||||||
this.previewImage.src = "";
|
this.previewImage.src = "";
|
||||||
this.previewImage.style.display = "none";
|
this.previewImage.style.display = "none";
|
||||||
this.uploadedImages = [];
|
this.uploadedImages = [];
|
||||||
this.allFilesImages = [];
|
this.allFilesImages = [];
|
||||||
this.allFiles = [];
|
this.allFiles = [];
|
||||||
this.TitleInput.value = "";
|
this.TitleInput.value = "";
|
||||||
this.SubTitleInput.value = "";
|
this.SubTitleInput.value = "";
|
||||||
this.descriptionInput.value = "";
|
this.descriptionInput.value = "";
|
||||||
this.selectedFile = null;
|
this.selectedFile = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
throw new Error("Error sharing workflow: " + e.message);
|
throw new Error("Error sharing workflow: " + e.message);
|
||||||
}
|
}
|
||||||
@ -757,7 +930,7 @@ export class CopusShareDialog extends ComfyDialog {
|
|||||||
this.element.style.display = "block";
|
this.element.style.display = "block";
|
||||||
this.previewImage.src = "";
|
this.previewImage.src = "";
|
||||||
this.previewImage.style.display = "none";
|
this.previewImage.style.display = "none";
|
||||||
this.keyInput.value = apiToken!=null?apiToken:"";
|
this.keyInput.value = apiToken != null ? apiToken : "";
|
||||||
this.uploadedImages = [];
|
this.uploadedImages = [];
|
||||||
this.allFilesImages = [];
|
this.allFilesImages = [];
|
||||||
this.allFiles = [];
|
this.allFiles = [];
|
||||||
|
|||||||
@ -714,6 +714,7 @@ export class CustomNodesManager {
|
|||||||
link.href = rowItem.reference;
|
link.href = rowItem.reference;
|
||||||
link.target = '_blank';
|
link.target = '_blank';
|
||||||
link.innerHTML = `<b>${title}</b>`;
|
link.innerHTML = `<b>${title}</b>`;
|
||||||
|
link.title = rowItem.originalData.id;
|
||||||
container.appendChild(link);
|
container.appendChild(link);
|
||||||
|
|
||||||
return container;
|
return container;
|
||||||
|
|||||||
204
model-list.json
204
model-list.json
@ -1973,6 +1973,97 @@
|
|||||||
"url": "https://dl.fbaipublicfiles.com/segment_anything/sam_vit_b_01ec64.pth",
|
"url": "https://dl.fbaipublicfiles.com/segment_anything/sam_vit_b_01ec64.pth",
|
||||||
"size": "375.0MB"
|
"size": "375.0MB"
|
||||||
},
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "sam2.1_hiera_tiny.pt",
|
||||||
|
"type": "sam2.1",
|
||||||
|
"base": "SAM",
|
||||||
|
"save_path": "sams",
|
||||||
|
"description": "Segmenty Anything SAM 2.1 hiera model (tiny)",
|
||||||
|
"reference": "https://github.com/facebookresearch/sam2#model-description",
|
||||||
|
"filename": "sam2.1_hiera_tiny.pt",
|
||||||
|
"url": "https://dl.fbaipublicfiles.com/segment_anything_2/092824/sam2.1_hiera_tiny.pt",
|
||||||
|
"size": "149.0MB"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "sam2.1_hiera_small.pt",
|
||||||
|
"type": "sam2.1",
|
||||||
|
"base": "SAM",
|
||||||
|
"save_path": "sams",
|
||||||
|
"description": "Segmenty Anything SAM 2.1 hiera model (small)",
|
||||||
|
"reference": "https://github.com/facebookresearch/sam2#model-description",
|
||||||
|
"filename": "sam2.1_hiera_small.pt",
|
||||||
|
"url": "https://dl.fbaipublicfiles.com/segment_anything_2/092824/sam2.1_hiera_small.pt",
|
||||||
|
"size": "176.0MB"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "sam2.1_hiera_base_plus.pt",
|
||||||
|
"type": "sam2.1",
|
||||||
|
"base": "SAM",
|
||||||
|
"save_path": "sams",
|
||||||
|
"description": "Segmenty Anything SAM 2.1 hiera model (base+)",
|
||||||
|
"reference": "https://github.com/facebookresearch/sam2#model-description",
|
||||||
|
"filename": "sam2.1_hiera_base_plus.pt",
|
||||||
|
"url": "https://dl.fbaipublicfiles.com/segment_anything_2/092824/sam2.1_hiera_base_plus.pt",
|
||||||
|
"size": "309.0MB"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "sam2.1_hiera_large.pt",
|
||||||
|
"type": "sam2.1",
|
||||||
|
"base": "SAM",
|
||||||
|
"save_path": "sams",
|
||||||
|
"description": "Segmenty Anything SAM 2.1 hiera model (large)",
|
||||||
|
"reference": "https://github.com/facebookresearch/sam2#model-description",
|
||||||
|
"filename": "sam2.1_hiera_large.pt",
|
||||||
|
"url": "https://dl.fbaipublicfiles.com/segment_anything_2/092824/sam2.1_hiera_large.pt",
|
||||||
|
"size": "857.0MB"
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "sam2_hiera_tiny.pt",
|
||||||
|
"type": "sam2",
|
||||||
|
"base": "SAM",
|
||||||
|
"save_path": "sams",
|
||||||
|
"description": "Segmenty Anything SAM 2 hiera model (tiny)",
|
||||||
|
"reference": "https://github.com/facebookresearch/sam2#model-description",
|
||||||
|
"filename": "sam2_hiera_tiny.pt",
|
||||||
|
"url": "https://dl.fbaipublicfiles.com/segment_anything_2/072824/sam2_hiera_tiny.pt",
|
||||||
|
"size": "149.0MB"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "sam2_hiera_small.pt",
|
||||||
|
"type": "sam2",
|
||||||
|
"base": "SAM",
|
||||||
|
"save_path": "sams",
|
||||||
|
"description": "Segmenty Anything SAM 2 hiera model (small)",
|
||||||
|
"reference": "https://github.com/facebookresearch/sam2#model-description",
|
||||||
|
"filename": "sam2_hiera_small.pt",
|
||||||
|
"url": "https://dl.fbaipublicfiles.com/segment_anything_2/072824/sam2_hiera_small.pt",
|
||||||
|
"size": "176.0MB"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "sam2_hiera_base_plus.pt",
|
||||||
|
"type": "sam2",
|
||||||
|
"base": "SAM",
|
||||||
|
"save_path": "sams",
|
||||||
|
"description": "Segmenty Anything SAM 2 hiera model (base+)",
|
||||||
|
"reference": "https://github.com/facebookresearch/sam2#model-description",
|
||||||
|
"filename": "sam2_hiera_base_plus.pt",
|
||||||
|
"url": "https://dl.fbaipublicfiles.com/segment_anything_2/072824/sam2_hiera_base_plus.pt",
|
||||||
|
"size": "309.0MB"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "sam2_hiera_large.pt",
|
||||||
|
"type": "sam2",
|
||||||
|
"base": "SAM",
|
||||||
|
"save_path": "sams",
|
||||||
|
"description": "Segmenty Anything SAM 2 hiera model (large)",
|
||||||
|
"reference": "https://github.com/facebookresearch/sam2#model-description",
|
||||||
|
"filename": "sam2_hiera_large.pt",
|
||||||
|
"url": "https://dl.fbaipublicfiles.com/segment_anything_2/072824/sam2_hiera_large.pt",
|
||||||
|
"size": "857.0MB"
|
||||||
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"name": "seecoder v1.0",
|
"name": "seecoder v1.0",
|
||||||
"type": "seecoder",
|
"type": "seecoder",
|
||||||
@ -4006,6 +4097,29 @@
|
|||||||
"size": "649MB"
|
"size": "649MB"
|
||||||
},
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "Comfy-Org/omnigen2_fp16.safetensors",
|
||||||
|
"type": "diffusion_model",
|
||||||
|
"base": "OmniGen2",
|
||||||
|
"save_path": "default",
|
||||||
|
"description": "OmniGen2 diffusion model. This is required for using OmniGen2.",
|
||||||
|
"reference": "https://huggingface.co/Comfy-Org/Omnigen2_ComfyUI_repackaged",
|
||||||
|
"filename": "omnigen2_fp16.safetensors",
|
||||||
|
"url": "https://huggingface.co/Comfy-Org/Omnigen2_ComfyUI_repackaged/resolve/main/split_files/diffusion_models/omnigen2_fp16.safetensors",
|
||||||
|
"size": "7.93GB"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Comfy-Org/qwen_2.5_vl_fp16.safetensors",
|
||||||
|
"type": "clip",
|
||||||
|
"base": "qwen-2.5",
|
||||||
|
"save_path": "default",
|
||||||
|
"description": "text encoder for OmniGen2",
|
||||||
|
"reference": "https://huggingface.co/Comfy-Org/Omnigen2_ComfyUI_repackaged",
|
||||||
|
"filename": "qwen_2.5_vl_fp16.safetensors",
|
||||||
|
"url": "https://huggingface.co/Comfy-Org/Omnigen2_ComfyUI_repackaged/resolve/main/split_files/text_encoders/qwen_2.5_vl_fp16.safetensors",
|
||||||
|
"size": "7.51GB"
|
||||||
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"name": "FLUX.1 [Schnell] Diffusion model",
|
"name": "FLUX.1 [Schnell] Diffusion model",
|
||||||
"type": "diffusion_model",
|
"type": "diffusion_model",
|
||||||
@ -4023,7 +4137,7 @@
|
|||||||
"type": "VAE",
|
"type": "VAE",
|
||||||
"base": "FLUX.1",
|
"base": "FLUX.1",
|
||||||
"save_path": "vae/FLUX1",
|
"save_path": "vae/FLUX1",
|
||||||
"description": "FLUX.1 VAE model",
|
"description": "FLUX.1 VAE model\nNOTE: This VAE model can also be used for image generation with OmniGen2.",
|
||||||
"reference": "https://huggingface.co/black-forest-labs/FLUX.1-schnell",
|
"reference": "https://huggingface.co/black-forest-labs/FLUX.1-schnell",
|
||||||
"filename": "ae.safetensors",
|
"filename": "ae.safetensors",
|
||||||
"url": "https://huggingface.co/black-forest-labs/FLUX.1-schnell/resolve/main/ae.safetensors",
|
"url": "https://huggingface.co/black-forest-labs/FLUX.1-schnell/resolve/main/ae.safetensors",
|
||||||
@ -5033,6 +5147,50 @@
|
|||||||
"url": "https://huggingface.co/Lightricks/LTX-Video/resolve/main/ltxv-13b-0.9.7-distilled-fp8.safetensors",
|
"url": "https://huggingface.co/Lightricks/LTX-Video/resolve/main/ltxv-13b-0.9.7-distilled-fp8.safetensors",
|
||||||
"size": "15.7GB"
|
"size": "15.7GB"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "LTX-Video 2B Distilled v0.9.8",
|
||||||
|
"type": "checkpoint",
|
||||||
|
"base": "LTX-Video",
|
||||||
|
"save_path": "checkpoints/LTXV",
|
||||||
|
"description": "LTX-Video 2B distilled model v0.9.8 with improved prompt understanding and detail generation.",
|
||||||
|
"reference": "https://huggingface.co/Lightricks/LTX-Video",
|
||||||
|
"filename": "ltxv-2b-0.9.8-distilled.safetensors",
|
||||||
|
"url": "https://huggingface.co/Lightricks/LTX-Video/resolve/main/ltxv-2b-0.9.8-distilled.safetensors",
|
||||||
|
"size": "6.34GB"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "LTX-Video 2B Distilled FP8 v0.9.8",
|
||||||
|
"type": "checkpoint",
|
||||||
|
"base": "LTX-Video",
|
||||||
|
"save_path": "checkpoints/LTXV",
|
||||||
|
"description": "Quantized LTX-Video 2B distilled model v0.9.8 with improved prompt understanding and detail generation, optimized for lower VRAM usage.",
|
||||||
|
"reference": "https://huggingface.co/Lightricks/LTX-Video",
|
||||||
|
"filename": "ltxv-2b-0.9.8-distilled-fp8.safetensors",
|
||||||
|
"url": "https://huggingface.co/Lightricks/LTX-Video/resolve/main/ltxv-2b-0.9.8-distilled-fp8.safetensors",
|
||||||
|
"size": "4.46GB"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "LTX-Video 13B Distilled v0.9.8",
|
||||||
|
"type": "checkpoint",
|
||||||
|
"base": "LTX-Video",
|
||||||
|
"save_path": "checkpoints/LTXV",
|
||||||
|
"description": "LTX-Video 13B distilled model v0.9.8 with improved prompt understanding and detail generation.",
|
||||||
|
"reference": "https://huggingface.co/Lightricks/LTX-Video",
|
||||||
|
"filename": "ltxv-13b-0.9.8-distilled.safetensors",
|
||||||
|
"url": "https://huggingface.co/Lightricks/LTX-Video/resolve/main/ltxv-13b-0.9.8-distilled.safetensors",
|
||||||
|
"size": "28.6GB"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "LTX-Video 13B Distilled FP8 v0.9.8",
|
||||||
|
"type": "checkpoint",
|
||||||
|
"base": "LTX-Video",
|
||||||
|
"save_path": "checkpoints/LTXV",
|
||||||
|
"description": "Quantized LTX-Video 13B distilled model v0.9.8 with improved prompt understanding and detail generation, optimized for lower VRAM usage.",
|
||||||
|
"reference": "https://huggingface.co/Lightricks/LTX-Video",
|
||||||
|
"filename": "ltxv-13b-0.9.8-distilled-fp8.safetensors",
|
||||||
|
"url": "https://huggingface.co/Lightricks/LTX-Video/resolve/main/ltxv-13b-0.9.8-distilled-fp8.safetensors",
|
||||||
|
"size": "15.7GB"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "LTX-Video 13B Distilled LoRA v0.9.7",
|
"name": "LTX-Video 13B Distilled LoRA v0.9.7",
|
||||||
"type": "lora",
|
"type": "lora",
|
||||||
@ -5044,6 +5202,50 @@
|
|||||||
"url": "https://huggingface.co/Lightricks/LTX-Video/resolve/main/ltxv-13b-0.9.7-distilled-lora128.safetensors",
|
"url": "https://huggingface.co/Lightricks/LTX-Video/resolve/main/ltxv-13b-0.9.7-distilled-lora128.safetensors",
|
||||||
"size": "1.33GB"
|
"size": "1.33GB"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "LTX-Video ICLoRA Depth 13B v0.9.7",
|
||||||
|
"type": "lora",
|
||||||
|
"base": "LTX-Video",
|
||||||
|
"save_path": "loras",
|
||||||
|
"description": "In-Context LoRA (IC LoRA) for depth-controlled video-to-video generation with precise depth conditioning.",
|
||||||
|
"reference": "https://huggingface.co/Lightricks/LTX-Video-ICLoRA-depth-13b-0.9.7",
|
||||||
|
"filename": "ltxv-097-ic-lora-depth-control-comfyui.safetensors",
|
||||||
|
"url": "https://huggingface.co/Lightricks/LTX-Video-ICLoRA-depth-13b-0.9.7/resolve/main/ltxv-097-ic-lora-depth-control-comfyui.safetensors",
|
||||||
|
"size": "81.9MB"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "LTX-Video ICLoRA Pose 13B v0.9.7",
|
||||||
|
"type": "lora",
|
||||||
|
"base": "LTX-Video",
|
||||||
|
"save_path": "loras",
|
||||||
|
"description": "In-Context LoRA (IC LoRA) for pose-controlled video-to-video generation with precise pose conditioning.",
|
||||||
|
"reference": "https://huggingface.co/Lightricks/LTX-Video-ICLoRA-pose-13b-0.9.7",
|
||||||
|
"filename": "ltxv-097-ic-lora-pose-control-comfyui.safetensors",
|
||||||
|
"url": "https://huggingface.co/Lightricks/LTX-Video-ICLoRA-pose-13b-0.9.7/resolve/main/ltxv-097-ic-lora-pose-control-comfyui.safetensors",
|
||||||
|
"size": "151MB"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "LTX-Video ICLoRA Canny 13B v0.9.7",
|
||||||
|
"type": "lora",
|
||||||
|
"base": "LTX-Video",
|
||||||
|
"save_path": "loras",
|
||||||
|
"description": "In-Context LoRA (IC LoRA) for canny edge-controlled video-to-video generation with precise edge conditioning.",
|
||||||
|
"reference": "https://huggingface.co/Lightricks/LTX-Video-ICLoRA-canny-13b-0.9.7",
|
||||||
|
"filename": "ltxv-097-ic-lora-canny-control-comfyui.safetensors",
|
||||||
|
"url": "https://huggingface.co/Lightricks/LTX-Video-ICLoRA-canny-13b-0.9.7/resolve/main/ltxv-097-ic-lora-canny-control-comfyui.safetensors",
|
||||||
|
"size": "81.9MB"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "LTX-Video ICLoRA Detailer 13B v0.9.8",
|
||||||
|
"type": "lora",
|
||||||
|
"base": "LTX-Video",
|
||||||
|
"save_path": "loras",
|
||||||
|
"description": "A video detailer model on top of LTXV_13B_098_DEV trained on custom data using In-Context LoRA (IC LoRA) method.",
|
||||||
|
"reference": "https://huggingface.co/Lightricks/LTX-Video-ICLoRA-detailer-13b-0.9.8",
|
||||||
|
"filename": "ltxv-098-ic-lora-detailer-comfyui.safetensors",
|
||||||
|
"url": "https://huggingface.co/Lightricks/LTX-Video-ICLoRA-detailer-13b-0.9.8/resolve/main/ltxv-098-ic-lora-detailer-comfyui.safetensors",
|
||||||
|
"size": "1.31GB"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "Latent Bridge Matching for Image Relighting",
|
"name": "Latent Bridge Matching for Image Relighting",
|
||||||
"type": "diffusion_model",
|
"type": "diffusion_model",
|
||||||
|
|||||||
@ -1,5 +1,546 @@
|
|||||||
{
|
{
|
||||||
"custom_nodes": [
|
"custom_nodes": [
|
||||||
|
{
|
||||||
|
"author": "boricuapab",
|
||||||
|
"title": "ComfyUI-Bori-KontextPresets [WIP]",
|
||||||
|
"reference": "https://github.com/boricuapab/ComfyUI-Bori-KontextPresets",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/boricuapab/ComfyUI-Bori-KontextPresets"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "This is a custom node for ComfyUI that uses the Kontext Presets.\nNOTE: The files in the repo are not organized."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "concarne000",
|
||||||
|
"title": "ComfyUI-Stacker [WIP]",
|
||||||
|
"reference": "https://github.com/concarne000/ComfyUI-Stacker",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/concarne000/ComfyUI-Stacker"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "Simple stack push/pop for images, strings and integers."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "sh570655308",
|
||||||
|
"title": "Comfyui-RayNodes [WIP]",
|
||||||
|
"reference": "https://github.com/sh570655308/Comfyui-RayNodes",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/sh570655308/Comfyui-RayNodes"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "NODES: Bracketed Tag-Index Merger, Florence2 Tag Processor, Image List Converter, Image Selector, Mask Blackener, Mask Applier and Combiner, Mask Processor, Tag Array to Lines, Tag-Index Merger, Grabber Tag Processor, Image Resizer, Save Image Websocket, Border Mask, SaturationAdjuster, ...\nNOTE: The files in the repo are not organized."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "Rocky-Lee-001",
|
||||||
|
"title": "ComfyUI_SZtools",
|
||||||
|
"reference": "https://github.com/Rocky-Lee-001/ComfyUI_SZtools",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/Rocky-Lee-001/ComfyUI_SZtools"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "This project is the comfyui implementation of ComfyUI_SZtools, a labeling and naming tool developed for Kontext's local training package T2ITrainer.\nNOTE: The files in the repo are not organized."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "stalkervr",
|
||||||
|
"title": "Custom Path Nodes for ComfyUI [UNSAFE]",
|
||||||
|
"reference": "https://github.com/stalkervr/comfyui-custom-path-nodes",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/stalkervr/comfyui-custom-path-nodes"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "Nodes for path handling and image cropping.[w/This node pack contains a node that has a vulnerability allowing access to arbitrary file paths.]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "gorillaframeai",
|
||||||
|
"title": "GF_pixtral_node [WIP]",
|
||||||
|
"reference": "https://github.com/gorillaframeai/GF_pixtral_node",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/gorillaframeai/GF_pixtral_node"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "NODES: GF Mistral & Pixtral"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "enlo",
|
||||||
|
"title": "ComfyUI-CheckpointSettings",
|
||||||
|
"reference": "https://github.com/enlo/ComfyUI-CheckpointSettings",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/enlo/ComfyUI-CheckpointSettings"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "A custom node created to fulfill a personal need I thought of while playing around with ComfyUI — 'I want to save checkpoint names and KSampler settings together and randomly switch between them for fun.'"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "Mzikart",
|
||||||
|
"title": "ComfyUI-Mzikart-Player [WIP]",
|
||||||
|
"reference": "https://github.com/Dream-Pixels-Forge/ComfyUI-Mzikart-Player",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/Dream-Pixels-Forge/ComfyUI-Mzikart-Player"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "Interactive audio player for ComfyUI\nNOTE: The files in the repo are not organized."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "babydjac",
|
||||||
|
"title": "comfyui-grok-ponyxl [WIP]",
|
||||||
|
"reference": "https://github.com/babydjac/comfyui-grok-ponyxl",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/babydjac/comfyui-grok-ponyxl"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "NODES: GrokPonyXLPrompter\nNOTE: The files in the repo are not organized."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "MarkFreeDom168",
|
||||||
|
"title": "ComfyUI-image-load-url [WIP]",
|
||||||
|
"reference": "https://github.com/MarkFreeDom168/ComfyUI-image-load-url",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/MarkFreeDom168/ComfyUI-image-load-url"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "NODES: Load Image From URL/Base64, Load Mask From URL/Base64, Load img and mask from url\nNOTE: The files in the repo are not organized."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "realm-weaver",
|
||||||
|
"title": "Tile Seamstress 360° [WIP]",
|
||||||
|
"reference": "https://github.com/realm-weaver/ComfyUI-tile-seamstress-360",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/realm-weaver/ComfyUI-tile-seamstress-360"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "Tile Seamstress 360 is a set of tools for fixing seams & poles in 360° panoramic equirectangular images inside ComfyUI."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "jisenhua",
|
||||||
|
"title": "ComfyUI-yolov5-face [WIP]",
|
||||||
|
"reference": "https://github.com/UmutGuzel/tryvariantai-comfyui",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/UmutGuzel/tryvariantai-comfyui"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "NODES: Fill Transparency, Mask Expand Border, Mask Expand Border (Advanced), Mask to Transparent, Debug Mask Visualizer, White to Transparent, White Detector\nNOTE: The files in the repo are not organized."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "visualbruno",
|
||||||
|
"title": "ComfyUI-QRemeshify",
|
||||||
|
"reference": "https://github.com/visualbruno/ComfyUI-QRemeshify",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/visualbruno/ComfyUI-QRemeshify"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "NODES: QRemeshify"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "jisenhua",
|
||||||
|
"title": "ComfyUI-yolov5-face [WIP]",
|
||||||
|
"reference": "https://github.com/JiSenHua/ComfyUI-yolov5-face",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/JiSenHua/ComfyUI-yolov5-face"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "A YOLOv5 face detection project for ComfyUI.\nNOTE: The files in the repo are not organized."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "zopieux",
|
||||||
|
"title": "ComfyUI-zopi [UNSAFE]",
|
||||||
|
"reference": "https://github.com/zopieux/ComfyUI-zopi",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/zopieux/ComfyUI-zopi"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "NODES: Eval Python, Load TensortRT + checkpoint + CLIP + VAE [w/This node pack contains a vulnerability that allows remote code execution.]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "przewodo",
|
||||||
|
"title": "ComfyUI-Przewodo-Utils [WIP]",
|
||||||
|
"reference": "https://github.com/przewodo/ComfyUI-Przewodo-Utils",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/przewodo/ComfyUI-Przewodo-Utils"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "Utilities to make it easy to develop advanced Workflows without having to use a lot of nodes for simple stuff.\nNOTE: The files in the repo are not organized."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "hulipanpan",
|
||||||
|
"title": "Comfyui_tuteng [WIP]",
|
||||||
|
"reference": "https://github.com/hulipanpan/Comfyui_tuteng",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/hulipanpan/Comfyui_tuteng"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "NODES: Tuteng Mj, Tuteng Mj Style, Tuteng Upload, Tuteng Mj Upscale, Tuteng Mj Vary/Zoom, Tuteng Kling Text2Video, Tuteng Kling Image2Video, Tuteng Kling Video Extend, Tuteng Gemini API, Tuteng Doubao SeedEdit, Tuteng ChatGPT API, Tuteng Jimeng API, Tuteng GPT-Image-1 Edit, ...\nNOTE: The files in the repo are not organized."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "PaleBloodq",
|
||||||
|
"title": "ComfyUI-HFTransformers",
|
||||||
|
"reference": "https://github.com/PaleBloodq/ComfyUI-HFTransformers",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/PaleBloodq/ComfyUI-HFTransformers"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "NODES: HFT Pipeline Loader, HFT Classifier, HFT Classification Selector, HFT Object Detector, HFT Image to Text, HFT Depth Estimator"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "whmc76",
|
||||||
|
"title": "ComfyUI-AudioSuiteAdvanced [WIP]",
|
||||||
|
"reference": "https://github.com/whmc76/ComfyUI-AudioSuiteAdvanced",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/whmc76/ComfyUI-AudioSuiteAdvanced"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "A ComfyUI plugin for processing long text files and generating speech, supporting features such as audio separation, text segmentation, and audio merging.\nNOTE: The files in the repo are not organized."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "Letz-AI",
|
||||||
|
"title": "ComfyUI-LetzAI [UNSAFE]",
|
||||||
|
"reference": "https://github.com/Letz-AI/ComfyUI-LetzAI",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/Letz-AI/ComfyUI-LetzAI"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "Custom ComfyUI Node for LetzAI Image Generation[w/The API key is embedded in the workflow.]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "ZhouNLP",
|
||||||
|
"title": "comfyui_LK_selfuse",
|
||||||
|
"reference": "https://github.com/LK-168/comfyui_LK_selfuse",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/LK-168/comfyui_LK_selfuse"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "NODES: Mask Diff, Mask Connected Remove, Mask Get Max, Mask Filter with Rate, InspectModelArchitecture, Print Sigma, Adv Scheduler, LK_MaskToSEGS, LK_SegsAdjust, String Filter, String Remove Duplicate, String Modify, ... \nNOTE: The files in the repo are not organized."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "junhe421",
|
||||||
|
"title": "comfyui_batch_image_processor [WIP]",
|
||||||
|
"reference": "https://github.com/junhe421/comfyui_batch_image_processor",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/junhe421/comfyui_batch_image_processor"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "A Kontext Bench-style ComfyUI image difference analysis node that supports instruction-based prompt generation and batch TXT editing.\nNOTE: The files in the repo are not organized."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "TinyBeeman",
|
||||||
|
"title": "ComfyUI-TinyBee",
|
||||||
|
"reference": "https://github.com/TinyBeeman/ComfyUI-TinyBee",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/TinyBeeman/ComfyUI-TinyBee"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "NODES: List Count, Random Entry, Indexed Entry, Incrementer, Get File List"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "Tr1dae",
|
||||||
|
"title": "ComfyUI-CustomNodes-MVM",
|
||||||
|
"reference": "https://github.com/Tr1dae/ComfyUI-CustomNodes-MVM",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/Tr1dae/ComfyUI-CustomNodes-MVM"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "NODES: Load Image From Folder MVM, Load Guidance Images From Folder MVM, Load Text From Folder MVM"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "Vkabuto23",
|
||||||
|
"title": "ComfyUI Custom Nodes: OpenRouter & Ollama [UNSAFE]",
|
||||||
|
"reference": "https://github.com/Vkabuto23/comfyui_openrouter_ollama",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/Vkabuto23/comfyui_openrouter_ollama"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "ComfyUI Custom Nodes: OpenRouter & Ollama[w/The API key is embedded in the workflow.]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "subnet99",
|
||||||
|
"title": "ComfyUI-URLLoader",
|
||||||
|
"reference": "https://github.com/subnet99/ComfyUI-URLLoader",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/subnet99/ComfyUI-URLLoader"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "ComfyUI plugin for downloading and loading media files from URLs."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "bikiam",
|
||||||
|
"title": "Comfyui_AudioRecoder",
|
||||||
|
"reference": "https://github.com/bikiam/Comfyui_AudioRecoder",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/bikiam/Comfyui_AudioRecoder"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "NODES: AUDIO Recorder"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "SaulQiu",
|
||||||
|
"title": "comfyui-saul-plugin [WIP]",
|
||||||
|
"reference": "https://github.com/SaulQcy/comfy_saul_plugin",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/SaulQcy/comfy_saul_plugin"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "NODES: Cutting Video\nNOTE: The files in the repo are not organized."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "wasilone11",
|
||||||
|
"title": "comfyui-sync-translate-node",
|
||||||
|
"reference": "https://github.com/wasilone11/comfyui-sync-translate-node",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/wasilone11/comfyui-sync-translate-node"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "NODES: Sync.so Translator"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "ashllay",
|
||||||
|
"title": "ComfyUI_MoreComfy",
|
||||||
|
"reference": "https://github.com/ashllay/ComfyUI_MoreComfy",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/ashllay/ComfyUI_MoreComfy"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "NODES: MC Switch Seed, MC Switch Image, MC Switch String, MC Alter Seed, MC Set Tile Size, MC Get Image Size, MC Get Image Min Max, MC Multi Concat, MC Multi Concat(Advanced), MC Noise"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "gaowei-space",
|
||||||
|
"title": "ComfyUI Doubao LLM [WIP]",
|
||||||
|
"reference": "https://github.com/gaowei-space/ComfyUI-Doubao-LLM",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/gaowei-space/ComfyUI-Doubao-LLM"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "ComfyUI nodes for Doubao (ByteDance) LLM and Vision Language Model integration\nNOTE: The files in the repo are not organized."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "BrettMedia",
|
||||||
|
"title": "comfyui-bhtools [WIP]",
|
||||||
|
"reference": "https://github.com/BrettMedia/comfyui-bhtools",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/BrettMedia/comfyui-bhtools"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "A suite of creative tools designed to help AI artists with continuity, brainstorming, and workflow optimization. Born from real-world needs during my AI journey, these nodes solve common pain points in creative workflows.\nNOTE: The files in the repo are not organized."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "XiaoHeiziGGG",
|
||||||
|
"title": "ComfyUI-Gemini-Kontext [WIP]",
|
||||||
|
"reference": "https://github.com/XiaoHeiziGGG/ComfyUI-Gemini-Kontext",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/XiaoHeiziGGG/ComfyUI-Gemini-Kontext"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "Google Gemini API powered translation nodes for ComfyUI\nNOTE: The files in the repo are not organized."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "Bwebbfx",
|
||||||
|
"title": "ComfyUI Face Parsing Nodes [WIP]",
|
||||||
|
"reference": "https://github.com/Bwebbfx/ComfyUI_FaceParsing",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/Bwebbfx/ComfyUI_FaceParsing"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "This package provides ComfyUI nodes for face parsing using BiSeNet (from yakhyo/face-parsing), supporting batch and video workflows.\nNOTE: The files in the repo are not organized."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "orion4d",
|
||||||
|
"title": "Unified List Selector for ComfyUI [UNSAFE]",
|
||||||
|
"reference": "https://github.com/orion4d/ComfyUI_unified_list_selector",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/orion4d/ComfyUI_unified_list_selector"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "This project is a custom node for ComfyUI that allows you to dynamically load lists from text (.txt) or CSV (.csv) files and select an item to use in your workflow. It features a manual selection mode (via a dropdown list) and a random selection mode, as well as the ability to add prefixes and suffixes to the selected text.[w/This node pack contains a node with a vulnerability that allows reading files from arbitrary paths.]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "kongds1999",
|
||||||
|
"title": "ComfyUI_was_image",
|
||||||
|
"reference": "https://github.com/kongds1999/ComfyUI_was_image",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/kongds1999/ComfyUI_was_image"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "NODES: Replace Color By Palette, ConvertGrayToImage"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "zl9739379",
|
||||||
|
"title": "ComfyUI Qwen Vision Language API Node [NAME CONFLICT]",
|
||||||
|
"reference": "https://github.com/zl9739379/comfyui-qwen-vl-api",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/zl9739379/comfyui-qwen-vl-api"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "A ComfyUI custom node for describing images using Qwen Vision Language models through OpenAI-compatible APIs."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "bikiam",
|
||||||
|
"title": "ComfyUi_WhisperGTranslate",
|
||||||
|
"reference": "https://github.com/bikiam/ComfyUi_WhisperGTranslate",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/bikiam/ComfyUi_WhisperGTranslate"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "NODES: Whisper + AudioTranslate, Google Translate Node"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "edgerunner",
|
||||||
|
"title": "ComfyUI Queue Manager [WIP]",
|
||||||
|
"reference": "https://github.com/QuietNoise/ComfyUI-Queue-Manager",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/QuietNoise/ComfyUI-Queue-Manager"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "An extension supporting more streamlined prompt queue management."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "fylrid2",
|
||||||
|
"title": "lockValue",
|
||||||
|
"reference": "https://github.com/fylrid2/comfyui_lock_previous_value",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/fylrid2/comfyui_lock_previous_value"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "Allows the locking of a nodes value\nNOTE: The files in the repo are not organized."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "XiaoHeiziGGG",
|
||||||
|
"title": "ComfyUI Gemini Translator [WIP]",
|
||||||
|
"reference": "https://github.com/XiaoHeiziGGG/ComfyUI-GeminiTranslator",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/XiaoHeiziGGG/ComfyUI-GeminiTranslator"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "The API node library of gemini can be translated and recognized.The API node library of gemini can be translated and recognized.\nNOTE: The files in the repo are not organized."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "DiffusionWave-YT",
|
||||||
|
"title": "DiffusionWave_PickResolution [WIP]",
|
||||||
|
"reference": "https://github.com/DiffusionWave-YT/DiffusionWave_PickResolution",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/DiffusionWave-YT/DiffusionWave_PickResolution"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "Change of resolutions for ComfyUI and Upscalers\nNOTE: The files in the repo are not organized."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "pixixai",
|
||||||
|
"title": "ComfyUI_Pixix-Tools [UNSAFE/WIP]",
|
||||||
|
"reference": "https://github.com/pixixai/ComfyUI_Pixix-Tools",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/pixixai/ComfyUI_Pixix-Tools"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "Load Text (from folder)\nNOTE: The files in the repo are not organized.[w/The contents of files from arbitrary paths can be read remotely through this node.]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "PeterMikhai",
|
||||||
|
"title": "DoomFLUX Nodes [WIP]",
|
||||||
|
"reference": "https://github.com/PeterMikhai/Doom_Flux_NodePack",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/PeterMikhai/Doom_Flux_NodePack"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "Custom nodes for FLUX models, including a loader and specialized samplers for standard and inpaint generation.\nNOTE: The files in the repo are not organized."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "maque",
|
||||||
|
"title": "comfyui_video_BC [WIP]",
|
||||||
|
"reference": "https://github.com/JioJe/comfyui_video_BC",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/JioJe/comfyui_video_BC"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "Batch load video nodes and save videos in custom paths\nNOTE: The files in the repo are not organized."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "ZHO-ZHO-ZHO",
|
||||||
|
"title": "ComfyUI-Gemini [NAME CONFLICT]",
|
||||||
|
"id": "gemini",
|
||||||
|
"reference": "https://github.com/ZHO-ZHO-ZHO/ComfyUI-Gemini",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/ZHO-ZHO-ZHO/ComfyUI-Gemini"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "Using Gemini-pro & Gemini-pro-vision in ComfyUI."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "No-22-Github",
|
||||||
|
"title": "ComfyUI_SaveImageCustom",
|
||||||
|
"reference": "https://github.com/No-22-Github/ComfyUI_SaveImageCustom",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/No-22-Github/ComfyUI_SaveImageCustom"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "Easy save image with dir+name"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "jiafuzeng",
|
||||||
|
"title": "comfyui-fishSpeech",
|
||||||
|
"reference": "https://github.com/jiafuzeng/comfyui-fishSpeech",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/jiafuzeng/comfyui-fishSpeech"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "NODES: Fish-Speech Loader, Fish-Speech TTS, Fish-Speech Audio Preview"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "bleash-dev",
|
||||||
|
"title": "ComfyUI-Auth-Manager",
|
||||||
|
"reference": "https://github.com/bleash-dev/ComfyUI-Auth-Manager",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/bleash-dev/ComfyUI-Auth-Manager"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "A custom node that provides email/password authentication for ComfyUI pods with a beautiful modal interface."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "filliptm",
|
||||||
|
"title": "ComfyUI_Fill-Node-Loader [WIP]",
|
||||||
|
"reference": "https://github.com/filliptm/ComfyUI_Fill-Node-Loader",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/filliptm/ComfyUI_Fill-Node-Loader"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "A ComfyUI plugin to simplify loading and managing custom nodes with a sidebar interface."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "diogod",
|
||||||
|
"title": "Comfy Inpainting Works [WIP]",
|
||||||
|
"reference": "https://github.com/diodiogod/Comfy-Inpainting-Works",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/diodiogod/Comfy-Inpainting-Works"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "Go to the top menu>Workflow>Browse Templates. This is a collection of my Inpainting workflows for Flux (expanded and COMPACT) + others. Previously called: 'Proper Flux Control-Net inpainting and/or outpainting with batch size - Alimama or Flux Fill'. By installing this 'node' you can always keep them up to date by updating on the manager. This is not a new custom node. You will still need to install all other custom nodes used on the workflows. You will also find my 'Flux LoRA Block Weights Preset Tester' here as well.\nNOTE: The files in the repo are not organized."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "Malloc-pix",
|
||||||
|
"title": "comfyui-QwenVL",
|
||||||
|
"reference": "https://github.com/Malloc-pix/comfyui-QwenVL",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/Malloc-pix/comfyui-QwenVL"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "NODES: Qwen2.5VL, Qwen2.5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "artifyfun",
|
||||||
|
"title": "ComfyUI-JS [UNSAFE]",
|
||||||
|
"reference": "https://github.com/artifyfun/ComfyUI-JS",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/artifyfun/ComfyUI-JS"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "A ComfyUI custom node capable of executing JavaScript code: it takes JavaScript code as input and outputs the execution result.[w/This extension has an XSS vulnerability that can be triggered through workflow execution.]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "OgreLemonSoup",
|
||||||
|
"title": "ComfyUI-Notes-manager",
|
||||||
|
"reference": "https://github.com/OgreLemonSoup/ComfyUI-Notes-manager",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/OgreLemonSoup/ComfyUI-Notes-manager"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "This extension provides the note feature."
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"author": "WozStudios",
|
"author": "WozStudios",
|
||||||
"title": "ComfyUI-WozNodes",
|
"title": "ComfyUI-WozNodes",
|
||||||
@ -8,17 +549,7 @@
|
|||||||
"https://github.com/WozStudios/ComfyUI-WozNodes"
|
"https://github.com/WozStudios/ComfyUI-WozNodes"
|
||||||
],
|
],
|
||||||
"install_type": "git-clone",
|
"install_type": "git-clone",
|
||||||
"description": "NODES: Trim Image Batch, Create Image Batch, Select Image Batch by Mask"
|
"description": "NODES: Trim Image Batch, Create Image Batch, Select Image Batch by Mask, Advanced Batch Creator"
|
||||||
},
|
|
||||||
{
|
|
||||||
"author": "DDDDEEP",
|
|
||||||
"title": "ComfyUI-DDDDEEP",
|
|
||||||
"reference": "https://github.com/DDDDEEP/ComfyUI-DDDDEEP",
|
|
||||||
"files": [
|
|
||||||
"https://github.com/DDDDEEP/ComfyUI-DDDDEEP"
|
|
||||||
],
|
|
||||||
"install_type": "git-clone",
|
|
||||||
"description": "NODES: AutoWidthHeight, ReturnIntSeed, OppositeBool, PromptItemCollection"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"author": "stalkervr",
|
"author": "stalkervr",
|
||||||
@ -80,16 +611,6 @@
|
|||||||
"install_type": "git-clone",
|
"install_type": "git-clone",
|
||||||
"description": "Two custom nodes for ComfyUI that allow you to encrypt and decrypt Python objects using simple XOR encryption with pickle."
|
"description": "Two custom nodes for ComfyUI that allow you to encrypt and decrypt Python objects using simple XOR encryption with pickle."
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"author": "Aryan185",
|
|
||||||
"title": "ComfyUI-ReplicateFluxKontext",
|
|
||||||
"reference": "https://github.com/Aryan185/ComfyUI-ReplicateFluxKontext",
|
|
||||||
"files": [
|
|
||||||
"https://github.com/Aryan185/ComfyUI-ReplicateFluxKontext"
|
|
||||||
],
|
|
||||||
"install_type": "git-clone",
|
|
||||||
"description": "ComfyUI node for Flux Kontext Pro and Max models from Replicate"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"author": "yamanacn",
|
"author": "yamanacn",
|
||||||
"title": "comfyui_qwen_object [WIP]",
|
"title": "comfyui_qwen_object [WIP]",
|
||||||
@ -268,7 +789,7 @@
|
|||||||
"https://github.com/xzuyn/ComfyUI-xzuynodes"
|
"https://github.com/xzuyn/ComfyUI-xzuynodes"
|
||||||
],
|
],
|
||||||
"install_type": "git-clone",
|
"install_type": "git-clone",
|
||||||
"description": "NODES: Last Frame Extractor"
|
"description": "NODES: First/Last Frame (XZ), Resize Image (Original KJ), Resize Image (XZ), CLIP Text Encode (XZ), Load CLIP (XZ), TripleCLIPLoader (XZ), WanImageToVideo (XZ)"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"author": "gilons",
|
"author": "gilons",
|
||||||
@ -358,7 +879,7 @@
|
|||||||
"https://github.com/IsItDanOrAi/ComfyUI-exLoadout"
|
"https://github.com/IsItDanOrAi/ComfyUI-exLoadout"
|
||||||
],
|
],
|
||||||
"install_type": "git-clone",
|
"install_type": "git-clone",
|
||||||
"description": "NODES: exLoadoutCheckpointLoader, exLoadout Selector, exLoadoutA, exLoadoutG, exLoadoutReadColumn, exLoadoutEditCell\nNOTE: The files in the repo are not organized."
|
"description": "exLoadout is a suite of lightweight ComfyUI custom nodes that let you define and switch between full loadouts stored in an Excel sheet. A loadout could include any node inputs that expect string values—models (checkpoints, CLIP, VAE, ControlNets, LoRAs, UNets), numeric or text variables (CFG, sampler names, scheduler types, etc.)—all pulled from a row in your sheet. By selecting a row, you instantly apply all of its settings in your workflow, with built‑in support for editing and reading those cells right inside the UI."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"author": "grokuku",
|
"author": "grokuku",
|
||||||
@ -370,16 +891,6 @@
|
|||||||
"install_type": "git-clone",
|
"install_type": "git-clone",
|
||||||
"description": "Interactive Terminal in a node for ComfyUI[w/This custom extension provides a remote web-based shell (terminal) interface to the machine running the ComfyUI server. By installing and using this extension, you are opening a direct, powerful, and potentially dangerous access point to your system.]"
|
"description": "Interactive Terminal in a node for ComfyUI[w/This custom extension provides a remote web-based shell (terminal) interface to the machine running the ComfyUI server. By installing and using this extension, you are opening a direct, powerful, and potentially dangerous access point to your system.]"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"author": "whmc76",
|
|
||||||
"title": "ComfyUI-LongTextTTSSuite [WIP]",
|
|
||||||
"reference": "https://github.com/whmc76/ComfyUI-LongTextTTSSuite",
|
|
||||||
"files": [
|
|
||||||
"https://github.com/whmc76/ComfyUI-LongTextTTSSuite"
|
|
||||||
],
|
|
||||||
"install_type": "git-clone",
|
|
||||||
"description": "This plugin can cut txt or srt files, hand them over to TTS for speech slicing generation, and synthesize long speech\nNOTE: The files in the repo are not organized."
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"author": "usrname0",
|
"author": "usrname0",
|
||||||
"title": "ComfyUI-AllergicPack [WIP]",
|
"title": "ComfyUI-AllergicPack [WIP]",
|
||||||
@ -779,7 +1290,7 @@
|
|||||||
"https://github.com/aa-parky/pipemind-comfyui"
|
"https://github.com/aa-parky/pipemind-comfyui"
|
||||||
],
|
],
|
||||||
"install_type": "git-clone",
|
"install_type": "git-clone",
|
||||||
"description": "NODES: Random Line from File (Seeded), Keyword Prompt Composer, Simple Prompt Combiner (5x), Boolean Switch (Any), Select Line from TxT (Any), Multiline Text Input, Flux 2M Aspect Ratios, SDXL Aspect Ratios, Room Mapper"
|
"description": "NODES: Random Line from File (Seeded), Keyword Prompt Composer, Simple Prompt Combiner (5x), Boolean Switch (Any), Select Line from TxT (Any), Multiline Text Input, Flux 2M Aspect Ratios, SDXL Aspect Ratios, Room Mapper, ..."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"author": "pacchikAI",
|
"author": "pacchikAI",
|
||||||
@ -981,16 +1492,6 @@
|
|||||||
"install_type": "git-clone",
|
"install_type": "git-clone",
|
||||||
"description": "Node for LoRA stack management in ComfyUI\nNOTE: The files in the repo are not organized."
|
"description": "Node for LoRA stack management in ComfyUI\nNOTE: The files in the repo are not organized."
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"author": "Good-Dream-Studio",
|
|
||||||
"title": "ComfyUI-Connect [WIP]",
|
|
||||||
"reference": "https://github.com/Good-Dream-Studio/ComfyUI-Connect",
|
|
||||||
"files": [
|
|
||||||
"https://github.com/Good-Dream-Studio/ComfyUI-Connect"
|
|
||||||
],
|
|
||||||
"install_type": "git-clone",
|
|
||||||
"description": "Transform your ComfyUI into a powerful API, exposing all your saved workflows as ready-to-use HTTP endpoints."
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"author": "fuzr0dah",
|
"author": "fuzr0dah",
|
||||||
"title": "comfyui-sceneassembly",
|
"title": "comfyui-sceneassembly",
|
||||||
@ -1071,16 +1572,6 @@
|
|||||||
"install_type": "git-clone",
|
"install_type": "git-clone",
|
||||||
"description": "NODES: QLoadLatent, QLinearScheduler, QPreviewLatent, QGaussianLatent, QUniformLatent, QKSampler"
|
"description": "NODES: QLoadLatent, QLinearScheduler, QPreviewLatent, QGaussianLatent, QUniformLatent, QKSampler"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"author": "wTechArtist",
|
|
||||||
"title": "ComfyUI_WWL_Florence2SAM2",
|
|
||||||
"reference": "https://github.com/wTechArtist/ComfyUI_VVL_SAM2",
|
|
||||||
"files": [
|
|
||||||
"https://github.com/wTechArtist/ComfyUI_VVL_SAM2"
|
|
||||||
],
|
|
||||||
"install_type": "git-clone",
|
|
||||||
"description": "NODES: WWL_Florence2SAM2"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"author": "virallover",
|
"author": "virallover",
|
||||||
"reference": "https://github.com/maizerrr/comfyui-code-nodes",
|
"reference": "https://github.com/maizerrr/comfyui-code-nodes",
|
||||||
@ -1478,7 +1969,7 @@
|
|||||||
"https://github.com/silent-rain/ComfyUI-SilentRain"
|
"https://github.com/silent-rain/ComfyUI-SilentRain"
|
||||||
],
|
],
|
||||||
"install_type": "git-clone",
|
"install_type": "git-clone",
|
||||||
"description": "An attempt to implement ComfyUI custom nodes using the Rust programming language."
|
"description": "Ecological extension of comfyui using Rust language."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"author": "Linsoo",
|
"author": "Linsoo",
|
||||||
@ -1740,16 +2231,6 @@
|
|||||||
"install_type": "git-clone",
|
"install_type": "git-clone",
|
||||||
"description": "Nodes to manipulate HTML.[w/This extension poses a risk of XSS vulnerability.]"
|
"description": "Nodes to manipulate HTML.[w/This extension poses a risk of XSS vulnerability.]"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"author": "LLMCoder2023",
|
|
||||||
"title": "ComfyUI-LLMCoderNodes",
|
|
||||||
"reference": "https://github.com/LLMCoder2023/ComfyUI-LLMCoder2023Nodes",
|
|
||||||
"files": [
|
|
||||||
"https://github.com/LLMCoder2023/ComfyUI-LLMCoder2023Nodes"
|
|
||||||
],
|
|
||||||
"install_type": "git-clone",
|
|
||||||
"description": "NODES: String Template Interpolation, Variable Definition, Weighted Attributes Formatter"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"author": "FaberVS",
|
"author": "FaberVS",
|
||||||
"title": "MultiModel",
|
"title": "MultiModel",
|
||||||
@ -2361,16 +2842,6 @@
|
|||||||
"install_type": "git-clone",
|
"install_type": "git-clone",
|
||||||
"description": "Wrapper for the Sa2VA model"
|
"description": "Wrapper for the Sa2VA model"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"author": "S4MUEL-404",
|
|
||||||
"title": "ComfyUI-Folder-Images-Preview [UNSAFE]",
|
|
||||||
"reference": "https://github.com/S4MUEL-404/ComfyUI-Folder-Images-Preview",
|
|
||||||
"files": [
|
|
||||||
"https://github.com/S4MUEL-404/ComfyUI-Folder-Images-Preview"
|
|
||||||
],
|
|
||||||
"install_type": "git-clone",
|
|
||||||
"description": "A ComfyUI nodes , Generate a picture and quickly preview the pictures in the folder and the picture file name\n[w/This custom node has a path traversal vulnerability.]"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"author": "aria1th",
|
"author": "aria1th",
|
||||||
"title": "ComfyUI-camietagger-onnx",
|
"title": "ComfyUI-camietagger-onnx",
|
||||||
@ -2531,16 +3002,6 @@
|
|||||||
"install_type": "git-clone",
|
"install_type": "git-clone",
|
||||||
"description": "It’s estimated that ComfyUI itself will support it soon, so go ahead and give it a try!"
|
"description": "It’s estimated that ComfyUI itself will support it soon, so go ahead and give it a try!"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"author": "kijai",
|
|
||||||
"title": "ComfyUI-WanVideoWrapper [WIP]",
|
|
||||||
"reference": "https://github.com/kijai/ComfyUI-WanVideoWrapper",
|
|
||||||
"files": [
|
|
||||||
"https://github.com/kijai/ComfyUI-WanVideoWrapper"
|
|
||||||
],
|
|
||||||
"install_type": "git-clone",
|
|
||||||
"description": "ComfyUI diffusers wrapper nodes for WanVideo"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"author": "ltdrdata",
|
"author": "ltdrdata",
|
||||||
"title": "comfyui-unsafe-torch [UNSAFE]",
|
"title": "comfyui-unsafe-torch [UNSAFE]",
|
||||||
@ -3015,13 +3476,13 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"author": "HuangYuChuh",
|
"author": "HuangYuChuh",
|
||||||
"title": "ComfyUI-DeepSeek-Toolkit [WIP]",
|
"title": "ComfyUI-LLMs-Toolkit [WIP]",
|
||||||
"reference": "https://github.com/HuangYuChuh/ComfyUI-DeepSeek-Toolkit",
|
"reference": "https://github.com/HuangYuChuh/ComfyUI-LLMs-Toolkit",
|
||||||
"files": [
|
"files": [
|
||||||
"https://github.com/HuangYuChuh/ComfyUI-DeepSeek-Toolkit"
|
"https://github.com/HuangYuChuh/ComfyUI-LLMs-Toolkit"
|
||||||
],
|
],
|
||||||
"install_type": "git-clone",
|
"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."
|
"description": "Enhance your ComfyUI workflows with powerful LLMs! This custom node suite integrates DeepSeek, Qwen, and other leading Chinese LLMs directly into your ComfyUI environment. Create innovative AI-powered applications with a range of useful nodes designed to leverage the advanced capabilities of these LLMs for image generation, understanding, and more.\nNOTE: The files in the repo are not organized."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"author": "comfyuiblog",
|
"author": "comfyuiblog",
|
||||||
@ -3266,9 +3727,9 @@
|
|||||||
{
|
{
|
||||||
"author": "PATATAJEC",
|
"author": "PATATAJEC",
|
||||||
"title": "Patatajec-Nodes [WIP]",
|
"title": "Patatajec-Nodes [WIP]",
|
||||||
"reference": "https://github.com/PATATAJEC/Patatajec-Nodes",
|
"reference": "https://github.com/PATATAJEC/ComfyUI-PatatajecNodes",
|
||||||
"files": [
|
"files": [
|
||||||
"https://github.com/PATATAJEC/Patatajec-Nodes"
|
"https://github.com/PATATAJEC/ComfyUI-PatatajecNodes"
|
||||||
],
|
],
|
||||||
"install_type": "git-clone",
|
"install_type": "git-clone",
|
||||||
"description": "NODES: HyVid Switcher\nNOTE: The files in the repo are not organized."
|
"description": "NODES: HyVid Switcher\nNOTE: The files in the repo are not organized."
|
||||||
@ -3778,7 +4239,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"author": "kijai",
|
"author": "kijai",
|
||||||
"title": "ComfyUI-MMAudio",
|
"title": "ComfyUI-MMAudio [WIP]",
|
||||||
"reference": "https://github.com/kijai/ComfyUI-MMAudio",
|
"reference": "https://github.com/kijai/ComfyUI-MMAudio",
|
||||||
"files": [
|
"files": [
|
||||||
"https://github.com/kijai/ComfyUI-MMAudio"
|
"https://github.com/kijai/ComfyUI-MMAudio"
|
||||||
@ -4207,8 +4668,8 @@
|
|||||||
"files": [
|
"files": [
|
||||||
"https://github.com/suncat2ps/ComfyUI-SaveImgNextcloud"
|
"https://github.com/suncat2ps/ComfyUI-SaveImgNextcloud"
|
||||||
],
|
],
|
||||||
"description": "NODES:Save Image to Nextcloud",
|
"install_type": "git-clone",
|
||||||
"install_type": "git-clone"
|
"description": "NODES: Save Image to Nextcloud"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"author": "KoreTeknology",
|
"author": "KoreTeknology",
|
||||||
@ -4448,7 +4909,7 @@
|
|||||||
"https://github.com/rouxianmantou/comfyui-rxmt-nodes"
|
"https://github.com/rouxianmantou/comfyui-rxmt-nodes"
|
||||||
],
|
],
|
||||||
"install_type": "git-clone",
|
"install_type": "git-clone",
|
||||||
"description": "NODES:Check Value Type, Why Prompt Text"
|
"description": "NODES: Check Value Type, Why Prompt Text"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"author": "SirVeggie",
|
"author": "SirVeggie",
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,5 +1,15 @@
|
|||||||
{
|
{
|
||||||
"custom_nodes": [
|
"custom_nodes": [
|
||||||
|
{
|
||||||
|
"author": "joaomede",
|
||||||
|
"title": "ComfyUI-Unload-Model-Fork",
|
||||||
|
"reference": "https://github.com/joaomede/ComfyUI-Unload-Model-Fork",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/joaomede/ComfyUI-Unload-Model-Fork"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "For unloading a model or all models, using the memory management that is already present in ComfyUI. Copied from [a/https://github.com/willblaschko/ComfyUI-Unload-Models](https://github.com/willblaschko/ComfyUI-Unload-Models) but without the unnecessary extra stuff."
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"author": "SanDiegoDude",
|
"author": "SanDiegoDude",
|
||||||
"title": "ComfyUI-HiDream-Sampler [WIP]",
|
"title": "ComfyUI-HiDream-Sampler [WIP]",
|
||||||
|
|||||||
@ -1,5 +1,190 @@
|
|||||||
{
|
{
|
||||||
"custom_nodes": [
|
"custom_nodes": [
|
||||||
|
{
|
||||||
|
"author": "1H-hobit",
|
||||||
|
"title": "ComfyUI_InternVL3 [REMOVED]",
|
||||||
|
"reference": "https://github.com/1H-hobit/ComfyUI_InternVL3",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/1H-hobit/ComfyUI_InternVL3"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "ComfyUI for [a/InternVL](https://github.com/OpenGVLab/InternVL)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "spacepxl",
|
||||||
|
"title": "ComfyUI-Florence-2 [DEPRECATED]",
|
||||||
|
"id": "florence2-spacepxl",
|
||||||
|
"reference": "https://github.com/spacepxl/ComfyUI-Florence-2",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/spacepxl/ComfyUI-Florence-2"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "[a/https://huggingface.co/microsoft/Florence-2-large-ft](https://huggingface.co/microsoft/Florence-2-large-ft)\nLarge or base model, support for captioning and bbox task modes, more coming soon."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "xxxxxxxxxxxc",
|
||||||
|
"title": "flux-kontext-diff-merge [REMOVED]",
|
||||||
|
"reference": "https://github.com/xxxxxxxxxxxc/flux-kontext-diff-merge",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/xxxxxxxxxxxc/flux-kontext-diff-merge"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "Preserve image quality with flux-kontext-diff-merge. This ComfyUI node merges only changed areas from AI edits, ensuring clarity and detail."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "TechnoByteJS",
|
||||||
|
"title": "TechNodes [REMOVED]",
|
||||||
|
"id": "technodes",
|
||||||
|
"reference": "https://github.com/TechnoByteJS/ComfyUI-TechNodes",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/TechnoByteJS/ComfyUI-TechNodes"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "ComfyUI nodes for merging, testing and more.\nNOTE: SDNext Merge, VAE Merge, MBW Layers, Repeat VAE, Quantization."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "DDDDEEP",
|
||||||
|
"title": "ComfyUI-DDDDEEP [REMOVED]",
|
||||||
|
"reference": "https://github.com/DDDDEEP/ComfyUI-DDDDEEP",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/DDDDEEP/ComfyUI-DDDDEEP"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "NODES: AutoWidthHeight, ReturnIntSeed, OppositeBool, PromptItemCollection"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "manifestations",
|
||||||
|
"title": "ComfyUI Ethnic Outfits Custom Nodes [REMOVED]",
|
||||||
|
"reference": "https://github.com/manifestations/comfyui-outfits",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/manifestations/comfyui-outfits"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "Custom ComfyUI nodes for generating outfit prompts representing diverse ethnicities, cultures, and regions. Uses extensible JSON data for clothing, accessories, and poses, with “random/disabled” dropdowns for flexibility. Advanced prompt engineering is supported via Ollama LLM integration. Easily add new regions, ethnicities, or cultures by updating data files and creating lightweight node wrappers. Designed for artists, researchers, and developers seeking culturally rich, customizable prompt generation in ComfyUI workflows."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "MitoshiroPJ",
|
||||||
|
"title": "ComfyUI Slothful Attention [REMOVED]",
|
||||||
|
"reference": "https://github.com/MitoshiroPJ/comfyui_slothful_attention",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/MitoshiroPJ/comfyui_slothful_attention"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "This custom node allow controlling output without training. The reducing method is similar to [a/Spatial-Reduction Attention](https://paperswithcode.com/method/spatial-reduction-attention)."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "MitoshiroPJ",
|
||||||
|
"title": "comfyui_focal_sampler [REMOVED]",
|
||||||
|
"reference": "https://github.com/MitoshiroPJ/comfyui_focal_sampler",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/MitoshiroPJ/comfyui_focal_sampler"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "Apply additional sampling to specific area"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "manifestations",
|
||||||
|
"title": "ComfyUI Ethnic Outfit & Prompt Enhancer Nodes [REMOVED]",
|
||||||
|
"reference": "https://github.com/manifestations/comfyui-indian-outfit",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/manifestations/comfyui-indian-outfit"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "Features:\n* Extensive options for Indian, Indonesian, and international clothing, jewelry, accessories, and styles\n* Multiple jewelry and accessory fields (with material support: gold, diamond, silver, leather, beads, etc.)\n* Support for tattoos, henna, hair styles, poses, shot types, lighting, and photography genres\n* Seamless prompt expansion using your own Ollama LLM instance\n* Modular, extensible JSON data files for easy customization"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "coVISIONSld",
|
||||||
|
"title": "ComfyUI-OmniGen2 [REMOVED]",
|
||||||
|
"reference": "https://github.com/coVISIONSld/ComfyUI-OmniGen2",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/coVISIONSld/ComfyUI-OmniGen2"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "ComfyUI-OmniGen2 is a custom node package for the OmniGen2 model, enabling advanced text-to-image generation and visual understanding."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "S4MUEL-404",
|
||||||
|
"title": "ComfyUI-S4Tool-Image-Overlay [REMOVED]",
|
||||||
|
"reference": "https://github.com/S4MUEL-404/ComfyUI-S4Tool-Image-Overlay",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/S4MUEL-404/ComfyUI-S4Tool-Image-Overlay"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "Quickly set up image overlay effects"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "akspa0",
|
||||||
|
"title": "ComfyUI-FapMixPlus [REMOVED]",
|
||||||
|
"reference": "https://github.com/akspa0/ComfyUI-FapMixPlus",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/akspa0/ComfyUI-FapMixPlus"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "This is an audio processing script that applies soft limiting, optional loudness normalization, and optional slicing for transcription. It can also produce stereo-mixed outputs with optional audio appended to the end. The script organizes processed files into structured folders with sanitized filenames and retains original timestamps for continuity."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "RedmondAI",
|
||||||
|
"title": "comfyui-tools [UNSAFE]",
|
||||||
|
"reference": "https://github.com/RedmondAI/comfyui-tools",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/RedmondAI/comfyui-tools"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "Custom extensions for ComfyUI used by the Redmond3D VFX team.[w/This node pack has a vulnerability that allows it to create files at arbitrary paths.]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "S4MUEL-404",
|
||||||
|
"title": "Image Position Blend [REMOVED]",
|
||||||
|
"id": "ComfyUI-Image-Position-Blend",
|
||||||
|
"version": "1.1",
|
||||||
|
"reference": "https://github.com/S4MUEL-404/ComfyUI-Image-Position-Blend",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/S4MUEL-404/ComfyUI-Image-Position-Blend"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "A custom node for conveniently adjusting the overlay position of two images."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "S4MUEL-404",
|
||||||
|
"title": "ComfyUI-Text-On-Image [REMOVED]",
|
||||||
|
"id": "ComfyUI-Text-On-Image",
|
||||||
|
"reference": "https://github.com/S4MUEL-404/ComfyUI-Text-On-Image",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/S4MUEL-404/ComfyUI-Text-On-Image"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "A custom node for ComfyUI that allows users to add text overlays to images with customizable size, font, position, and shadow."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "S4MUEL-404",
|
||||||
|
"title": "ComfyUI-Prompts-Selector [REMOVED]",
|
||||||
|
"reference": "https://github.com/S4MUEL-404/ComfyUI-Prompts-Selector",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/S4MUEL-404/ComfyUI-Prompts-Selector"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "Quickly select preset prompts and merge them"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "juntaosun",
|
||||||
|
"title": "ComfyUI_open_nodes [REMOVED]",
|
||||||
|
"reference": "https://github.com/juntaosun/ComfyUI_open_nodes",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/juntaosun/ComfyUI_open_nodes"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "ComfyUI open nodes by juntaosun."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "perilli",
|
||||||
|
"title": "apw_nodes [DEPRECATED]",
|
||||||
|
"reference": "https://github.com/alessandroperilli/apw_nodes",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/alessandroperilli/apw_nodes"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "A custom node suite to augment the capabilities of the [a/AP Workflows for ComfyUI](https://perilli.com/ai/comfyui/)[w/'APW_Nodes' has been newly added in place of 'apw_nodes'.]"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"author": "markuryy",
|
"author": "markuryy",
|
||||||
"title": "ComfyUI Spiritparticle Nodes [REMOVED]",
|
"title": "ComfyUI Spiritparticle Nodes [REMOVED]",
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,5 +1,118 @@
|
|||||||
{
|
{
|
||||||
"models": [
|
"models": [
|
||||||
|
{
|
||||||
|
"name": "sam2.1_hiera_tiny.pt",
|
||||||
|
"type": "sam2.1",
|
||||||
|
"base": "SAM",
|
||||||
|
"save_path": "sams",
|
||||||
|
"description": "Segmenty Anything SAM 2.1 hiera model (tiny)",
|
||||||
|
"reference": "https://github.com/facebookresearch/sam2#model-description",
|
||||||
|
"filename": "sam2.1_hiera_tiny.pt",
|
||||||
|
"url": "https://dl.fbaipublicfiles.com/segment_anything_2/092824/sam2.1_hiera_tiny.pt",
|
||||||
|
"size": "149.0MB"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "sam2.1_hiera_small.pt",
|
||||||
|
"type": "sam2.1",
|
||||||
|
"base": "SAM",
|
||||||
|
"save_path": "sams",
|
||||||
|
"description": "Segmenty Anything SAM 2.1 hiera model (small)",
|
||||||
|
"reference": "https://github.com/facebookresearch/sam2#model-description",
|
||||||
|
"filename": "sam2.1_hiera_small.pt",
|
||||||
|
"url": "https://dl.fbaipublicfiles.com/segment_anything_2/092824/sam2.1_hiera_small.pt",
|
||||||
|
"size": "176.0MB"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "sam2.1_hiera_base_plus.pt",
|
||||||
|
"type": "sam2.1",
|
||||||
|
"base": "SAM",
|
||||||
|
"save_path": "sams",
|
||||||
|
"description": "Segmenty Anything SAM 2.1 hiera model (base+)",
|
||||||
|
"reference": "https://github.com/facebookresearch/sam2#model-description",
|
||||||
|
"filename": "sam2.1_hiera_base_plus.pt",
|
||||||
|
"url": "https://dl.fbaipublicfiles.com/segment_anything_2/092824/sam2.1_hiera_base_plus.pt",
|
||||||
|
"size": "309.0MB"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "sam2.1_hiera_large.pt",
|
||||||
|
"type": "sam2.1",
|
||||||
|
"base": "SAM",
|
||||||
|
"save_path": "sams",
|
||||||
|
"description": "Segmenty Anything SAM 2.1 hiera model (large)",
|
||||||
|
"reference": "https://github.com/facebookresearch/sam2#model-description",
|
||||||
|
"filename": "sam2.1_hiera_large.pt",
|
||||||
|
"url": "https://dl.fbaipublicfiles.com/segment_anything_2/092824/sam2.1_hiera_large.pt",
|
||||||
|
"size": "857.0MB"
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "sam2_hiera_tiny.pt",
|
||||||
|
"type": "sam2",
|
||||||
|
"base": "SAM",
|
||||||
|
"save_path": "sams",
|
||||||
|
"description": "Segmenty Anything SAM 2 hiera model (tiny)",
|
||||||
|
"reference": "https://github.com/facebookresearch/sam2#model-description",
|
||||||
|
"filename": "sam2_hiera_tiny.pt",
|
||||||
|
"url": "https://dl.fbaipublicfiles.com/segment_anything_2/072824/sam2_hiera_tiny.pt",
|
||||||
|
"size": "149.0MB"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "sam2_hiera_small.pt",
|
||||||
|
"type": "sam2",
|
||||||
|
"base": "SAM",
|
||||||
|
"save_path": "sams",
|
||||||
|
"description": "Segmenty Anything SAM 2 hiera model (small)",
|
||||||
|
"reference": "https://github.com/facebookresearch/sam2#model-description",
|
||||||
|
"filename": "sam2_hiera_small.pt",
|
||||||
|
"url": "https://dl.fbaipublicfiles.com/segment_anything_2/072824/sam2_hiera_small.pt",
|
||||||
|
"size": "176.0MB"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "sam2_hiera_base_plus.pt",
|
||||||
|
"type": "sam2",
|
||||||
|
"base": "SAM",
|
||||||
|
"save_path": "sams",
|
||||||
|
"description": "Segmenty Anything SAM 2 hiera model (base+)",
|
||||||
|
"reference": "https://github.com/facebookresearch/sam2#model-description",
|
||||||
|
"filename": "sam2_hiera_base_plus.pt",
|
||||||
|
"url": "https://dl.fbaipublicfiles.com/segment_anything_2/072824/sam2_hiera_base_plus.pt",
|
||||||
|
"size": "309.0MB"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "sam2_hiera_large.pt",
|
||||||
|
"type": "sam2",
|
||||||
|
"base": "SAM",
|
||||||
|
"save_path": "sams",
|
||||||
|
"description": "Segmenty Anything SAM 2 hiera model (large)",
|
||||||
|
"reference": "https://github.com/facebookresearch/sam2#model-description",
|
||||||
|
"filename": "sam2_hiera_large.pt",
|
||||||
|
"url": "https://dl.fbaipublicfiles.com/segment_anything_2/072824/sam2_hiera_large.pt",
|
||||||
|
"size": "857.0MB"
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "Comfy-Org/omnigen2_fp16.safetensors",
|
||||||
|
"type": "diffusion_model",
|
||||||
|
"base": "OmniGen2",
|
||||||
|
"save_path": "default",
|
||||||
|
"description": "OmniGen2 diffusion model. This is required for using OmniGen2.",
|
||||||
|
"reference": "https://huggingface.co/Comfy-Org/Omnigen2_ComfyUI_repackaged",
|
||||||
|
"filename": "omnigen2_fp16.safetensors",
|
||||||
|
"url": "https://huggingface.co/Comfy-Org/Omnigen2_ComfyUI_repackaged/resolve/main/split_files/diffusion_models/omnigen2_fp16.safetensors",
|
||||||
|
"size": "7.93GB"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Comfy-Org/qwen_2.5_vl_fp16.safetensors",
|
||||||
|
"type": "clip",
|
||||||
|
"base": "qwen-2.5",
|
||||||
|
"save_path": "default",
|
||||||
|
"description": "text encoder for OmniGen2",
|
||||||
|
"reference": "https://huggingface.co/Comfy-Org/Omnigen2_ComfyUI_repackaged",
|
||||||
|
"filename": "qwen_2.5_vl_fp16.safetensors",
|
||||||
|
"url": "https://huggingface.co/Comfy-Org/Omnigen2_ComfyUI_repackaged/resolve/main/split_files/text_encoders/qwen_2.5_vl_fp16.safetensors",
|
||||||
|
"size": "7.51GB"
|
||||||
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"name": "Latent Bridge Matching for Image Relighting",
|
"name": "Latent Bridge Matching for Image Relighting",
|
||||||
"type": "diffusion_model",
|
"type": "diffusion_model",
|
||||||
@ -576,121 +689,6 @@
|
|||||||
"filename": "flux-hed-controlnet-v3.safetensors",
|
"filename": "flux-hed-controlnet-v3.safetensors",
|
||||||
"url": "https://huggingface.co/XLabs-AI/flux-controlnet-collections/resolve/main/flux-hed-controlnet-v3.safetensors",
|
"url": "https://huggingface.co/XLabs-AI/flux-controlnet-collections/resolve/main/flux-hed-controlnet-v3.safetensors",
|
||||||
"size": "1.49GB"
|
"size": "1.49GB"
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
"name": "XLabs-AI/realism_lora.safetensors",
|
|
||||||
"type": "lora",
|
|
||||||
"base": "FLUX.1",
|
|
||||||
"save_path": "xlabs/loras",
|
|
||||||
"description": "A checkpoint with trained LoRAs for FLUX.1-dev model by Black Forest Labs",
|
|
||||||
"reference": "https://huggingface.co/XLabs-AI/flux-lora-collection",
|
|
||||||
"filename": "realism_lora.safetensors",
|
|
||||||
"url": "https://huggingface.co/XLabs-AI/flux-lora-collection/resolve/main/realism_lora.safetensors",
|
|
||||||
"size": "44.8MB"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "XLabs-AI/art_lora.safetensors",
|
|
||||||
"type": "lora",
|
|
||||||
"base": "FLUX.1",
|
|
||||||
"save_path": "xlabs/loras",
|
|
||||||
"description": "A checkpoint with trained LoRAs for FLUX.1-dev model by Black Forest Labs",
|
|
||||||
"reference": "https://huggingface.co/XLabs-AI/flux-lora-collection",
|
|
||||||
"filename": "art_lora.safetensors",
|
|
||||||
"url": "https://huggingface.co/XLabs-AI/flux-lora-collection/resolve/main/scenery_lora.safetensors",
|
|
||||||
"size": "44.8MB"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "XLabs-AI/mjv6_lora.safetensors",
|
|
||||||
"type": "lora",
|
|
||||||
"base": "FLUX.1",
|
|
||||||
"save_path": "xlabs/loras",
|
|
||||||
"description": "A checkpoint with trained LoRAs for FLUX.1-dev model by Black Forest Labs",
|
|
||||||
"reference": "https://huggingface.co/XLabs-AI/flux-lora-collection",
|
|
||||||
"filename": "mjv6_lora.safetensors",
|
|
||||||
"url": "https://huggingface.co/XLabs-AI/flux-lora-collection/resolve/main/mjv6_lora.safetensors",
|
|
||||||
"size": "44.8MB"
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
"name": "XLabs-AI/flux-ip-adapter",
|
|
||||||
"type": "lora",
|
|
||||||
"base": "FLUX.1",
|
|
||||||
"save_path": "xlabs/ipadapters",
|
|
||||||
"description": "A checkpoint with trained LoRAs for FLUX.1-dev model by Black Forest Labs",
|
|
||||||
"reference": "https://huggingface.co/XLabs-AI/flux-ip-adapter",
|
|
||||||
"filename": "ip_adapter.safetensors",
|
|
||||||
"url": "https://huggingface.co/XLabs-AI/flux-ip-adapter/resolve/main/ip_adapter.safetensors",
|
|
||||||
"size": "982MB"
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
"name": "stabilityai/SD3.5-Large-Controlnet-Blur",
|
|
||||||
"type": "controlnet",
|
|
||||||
"base": "SD3.5",
|
|
||||||
"save_path": "controlnet/SD3.5",
|
|
||||||
"description": "Blur Controlnet model for SD3.5 Large",
|
|
||||||
"reference": "https://huggingface.co/stabilityai/stable-diffusion-3.5-controlnets",
|
|
||||||
"filename": "sd3.5_large_controlnet_blur.safetensors",
|
|
||||||
"url": "https://huggingface.co/stabilityai/stable-diffusion-3.5-controlnets/resolve/main/sd3.5_large_controlnet_blur.safetensors",
|
|
||||||
"size": "8.65GB"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "stabilityai/SD3.5-Large-Controlnet-Canny",
|
|
||||||
"type": "controlnet",
|
|
||||||
"base": "SD3.5",
|
|
||||||
"save_path": "controlnet/SD3.5",
|
|
||||||
"description": "Canny Controlnet model for SD3.5 Large",
|
|
||||||
"reference": "https://huggingface.co/stabilityai/stable-diffusion-3.5-controlnets",
|
|
||||||
"filename": "sd3.5_large_controlnet_canny.safetensors",
|
|
||||||
"url": "https://huggingface.co/stabilityai/stable-diffusion-3.5-controlnets/resolve/main/sd3.5_large_controlnet_canny.safetensors",
|
|
||||||
"size": "8.65GB"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "stabilityai/SD3.5-Large-Controlnet-Depth",
|
|
||||||
"type": "controlnet",
|
|
||||||
"base": "SD3.5",
|
|
||||||
"save_path": "controlnet/SD3.5",
|
|
||||||
"description": "Depth Controlnet model for SD3.5 Large",
|
|
||||||
"reference": "https://huggingface.co/stabilityai/stable-diffusion-3.5-controlnets",
|
|
||||||
"filename": "sd3.5_large_controlnet_depth.safetensors",
|
|
||||||
"url": "https://huggingface.co/stabilityai/stable-diffusion-3.5-controlnets/resolve/main/sd3.5_large_controlnet_depth.safetensors",
|
|
||||||
"size": "8.65GB"
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
"name": "LTX-Video 2B v0.9 Checkpoint",
|
|
||||||
"type": "checkpoint",
|
|
||||||
"base": "LTX-Video",
|
|
||||||
"save_path": "checkpoints/LTXV",
|
|
||||||
"description": "LTX-Video is the first DiT-based video generation model capable of generating high-quality videos in real-time. It produces 24 FPS videos at a 768x512 resolution faster than they can be watched. Trained on a large-scale dataset of diverse videos, the model generates high-resolution videos with realistic and varied content.",
|
|
||||||
"reference": "https://huggingface.co/Lightricks/LTX-Video",
|
|
||||||
"filename": "ltx-video-2b-v0.9.safetensors",
|
|
||||||
"url": "https://huggingface.co/Lightricks/LTX-Video/resolve/main/ltx-video-2b-v0.9.safetensors",
|
|
||||||
"size": "9.37GB"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "InstantX/FLUX.1-dev-IP-Adapter",
|
|
||||||
"type": "IP-Adapter",
|
|
||||||
"base": "FLUX.1",
|
|
||||||
"save_path": "ipadapter-flux",
|
|
||||||
"description": "FLUX.1-dev-IP-Adapter",
|
|
||||||
"reference": "https://huggingface.co/InstantX/FLUX.1-dev-IP-Adapter",
|
|
||||||
"filename": "ip-adapter.bin",
|
|
||||||
"url": "https://huggingface.co/InstantX/FLUX.1-dev-IP-Adapter/resolve/main/ip-adapter.bin",
|
|
||||||
"size": "5.29GB"
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
"name": "Comfy-Org/sigclip_vision_384 (patch14_384)",
|
|
||||||
"type": "clip_vision",
|
|
||||||
"base": "sigclip",
|
|
||||||
"save_path": "clip_vision",
|
|
||||||
"description": "This clip vision model is required for FLUX.1 Redux.",
|
|
||||||
"reference": "https://huggingface.co/Comfy-Org/sigclip_vision_384/tree/main",
|
|
||||||
"filename": "sigclip_vision_patch14_384.safetensors",
|
|
||||||
"url": "https://huggingface.co/Comfy-Org/sigclip_vision_384/resolve/main/sigclip_vision_patch14_384.safetensors",
|
|
||||||
"size": "857MB"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@ -331,6 +331,16 @@
|
|||||||
],
|
],
|
||||||
"description": "Dynamic Node examples for ComfyUI",
|
"description": "Dynamic Node examples for ComfyUI",
|
||||||
"install_type": "git-clone"
|
"install_type": "git-clone"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"author": "Jonathon-Doran",
|
||||||
|
"title": "remote-combo-demo",
|
||||||
|
"reference": "https://github.com/Jonathon-Doran/remote-combo-demo",
|
||||||
|
"files": [
|
||||||
|
"https://github.com/Jonathon-Doran/remote-combo-demo"
|
||||||
|
],
|
||||||
|
"install_type": "git-clone",
|
||||||
|
"description": "A minimal test suite demonstrating how remote COMBO inputs behave in ComfyUI, with and without force_input"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@ -38,7 +38,6 @@ else:
|
|||||||
def current_timestamp():
|
def current_timestamp():
|
||||||
return str(time.time()).split('.')[0]
|
return str(time.time()).split('.')[0]
|
||||||
|
|
||||||
security_check.security_check()
|
|
||||||
|
|
||||||
cm_global.pip_blacklist = {'torch', 'torchaudio', 'torchsde', 'torchvision'}
|
cm_global.pip_blacklist = {'torch', 'torchaudio', 'torchsde', 'torchvision'}
|
||||||
cm_global.pip_downgrade_blacklist = ['torch', 'torchaudio', 'torchsde', 'torchvision', 'transformers', 'safetensors', 'kornia']
|
cm_global.pip_downgrade_blacklist = ['torch', 'torchaudio', 'torchsde', 'torchvision', 'transformers', 'safetensors', 'kornia']
|
||||||
@ -119,20 +118,15 @@ def check_file_logging():
|
|||||||
|
|
||||||
read_config()
|
read_config()
|
||||||
read_uv_mode()
|
read_uv_mode()
|
||||||
|
security_check.security_check()
|
||||||
check_file_logging()
|
check_file_logging()
|
||||||
|
|
||||||
if sys.version_info < (3, 13):
|
cm_global.pip_overrides = {}
|
||||||
cm_global.pip_overrides = {'numpy': 'numpy<2'}
|
|
||||||
else:
|
|
||||||
cm_global.pip_overrides = {}
|
|
||||||
|
|
||||||
if os.path.exists(manager_pip_overrides_path):
|
if os.path.exists(manager_pip_overrides_path):
|
||||||
with open(manager_pip_overrides_path, 'r', encoding="UTF-8", errors="ignore") as json_file:
|
with open(manager_pip_overrides_path, 'r', encoding="UTF-8", errors="ignore") as json_file:
|
||||||
cm_global.pip_overrides = json.load(json_file)
|
cm_global.pip_overrides = json.load(json_file)
|
||||||
|
|
||||||
if sys.version_info < (3, 13):
|
|
||||||
cm_global.pip_overrides['numpy'] = 'numpy<2'
|
|
||||||
|
|
||||||
|
|
||||||
if os.path.exists(manager_pip_blacklist_path):
|
if os.path.exists(manager_pip_blacklist_path):
|
||||||
with open(manager_pip_blacklist_path, 'r', encoding="UTF-8", errors="ignore") as f:
|
with open(manager_pip_blacklist_path, 'r', encoding="UTF-8", errors="ignore") as f:
|
||||||
|
|||||||
@ -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.33.1"
|
version = "3.34.1"
|
||||||
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", "toml", "uv", "chardet"]
|
dependencies = ["GitPython", "PyGithub", "matrix-client==0.4.0", "transformers", "huggingface-hub>0.20", "typer", "rich", "typing-extensions", "toml", "uv", "chardet"]
|
||||||
|
|
||||||
|
|||||||
@ -255,13 +255,13 @@ def clone_or_pull_git_repository(git_url):
|
|||||||
repo.git.submodule('update', '--init', '--recursive')
|
repo.git.submodule('update', '--init', '--recursive')
|
||||||
print(f"Pulling {repo_name}...")
|
print(f"Pulling {repo_name}...")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Pulling {repo_name} failed: {e}")
|
print(f"Failed to pull '{repo_name}': {e}")
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
Repo.clone_from(git_url, repo_dir, recursive=True)
|
Repo.clone_from(git_url, repo_dir, recursive=True)
|
||||||
print(f"Cloning {repo_name}...")
|
print(f"Cloning {repo_name}...")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Cloning {repo_name} failed: {e}")
|
print(f"Failed to clone '{repo_name}': {e}")
|
||||||
|
|
||||||
|
|
||||||
def update_custom_nodes():
|
def update_custom_nodes():
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user