Compare commits
136 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8759ebf200 | ||
|
|
d4715aebef | ||
|
|
0fe2ade7bb | ||
|
|
0c71565535 | ||
|
|
6a637091a2 | ||
|
|
31eba60012 | ||
|
|
51e58e9078 | ||
|
|
4a1e76730a | ||
|
|
5599bb028b | ||
|
|
552c6da0cc | ||
|
|
cc6817a891 | ||
|
|
fb48d1b485 | ||
|
|
1c336dad6b | ||
|
|
a4940d46cd | ||
|
|
499b2f44c1 | ||
|
|
2b200c9281 | ||
|
|
36a900c98f | ||
|
|
5236b03f66 | ||
|
|
8be35e3621 | ||
|
|
509f00fe89 | ||
|
|
a98b87f148 | ||
|
|
ae9b2b3b72 | ||
|
|
02e1ec0ae3 | ||
|
|
daefb0f120 | ||
|
|
ff0604e3b6 | ||
|
|
20e41e22fa | ||
|
|
a0e3bdd594 | ||
|
|
6580aaf3ad | ||
|
|
0b46701b60 | ||
|
|
0bb4effede | ||
|
|
b07082a52d | ||
|
|
04f267f5a7 | ||
|
|
03ccce2804 | ||
|
|
e894bd9f24 | ||
|
|
10e6988273 | ||
|
|
905b61e5d8 | ||
|
|
ee69d393ae | ||
|
|
cab39973ae | ||
|
|
d93f5d07bb | ||
|
|
ba00ffe1ae | ||
|
|
6afaf5eaf5 | ||
|
|
d30459cc34 | ||
|
|
e92fbb7b1b | ||
|
|
42d464b532 | ||
|
|
c2e9e5c63a | ||
|
|
bc36726925 | ||
|
|
7abbff8c31 | ||
|
|
6236f4bcf4 | ||
|
|
3c3e80f77f | ||
|
|
4aae2fb289 | ||
|
|
66ff07752f | ||
|
|
5cf92f2742 | ||
|
|
6d3fddc474 | ||
|
|
66d4ad6174 | ||
|
|
2a366a1607 | ||
|
|
d87a0995b4 | ||
|
|
9a73a41e04 | ||
|
|
ba041b36bc | ||
|
|
f5f9de69b4 | ||
|
|
71e56c62e8 | ||
|
|
0f496619fd | ||
|
|
5fdd6a441a | ||
|
|
00f287bb63 | ||
|
|
785268efa6 | ||
|
|
2c976d9394 | ||
|
|
1e32582642 | ||
|
|
6f8f6d07f5 | ||
|
|
3958111e76 | ||
|
|
86fcc4af74 | ||
|
|
2fd26756df | ||
|
|
478f4b74d8 | ||
|
|
73d0d2a1bb | ||
|
|
546db08ec4 | ||
|
|
0dd41a8670 | ||
|
|
82c0c89f46 | ||
|
|
c3798bf4c2 | ||
|
|
ff80b6ccb0 | ||
|
|
e729217116 | ||
|
|
94c695daca | ||
|
|
9f189f0420 | ||
|
|
ad09e53f60 | ||
|
|
092a7a5f3f | ||
|
|
f45649bd25 | ||
|
|
2595cc5ed7 | ||
|
|
2f62190c6f | ||
|
|
577314984c | ||
|
|
f0346b955b | ||
|
|
70139ded4a | ||
|
|
bf379900e1 | ||
|
|
9bafc90f5e | ||
|
|
fce0d9e88e | ||
|
|
2b3b154989 | ||
|
|
948d2440a1 | ||
|
|
5adbe1ce7a | ||
|
|
8157d34ffa | ||
|
|
3ec8cb2204 | ||
|
|
0daa826543 | ||
|
|
a66028da58 | ||
|
|
807c9e6872 | ||
|
|
e71f3774ba | ||
|
|
dd7314bf10 | ||
|
|
f33bc127dc | ||
|
|
db92b87782 | ||
|
|
eba41c8693 | ||
|
|
c855308162 | ||
|
|
73d971bed8 | ||
|
|
bcfe0c2874 | ||
|
|
931ff666ae | ||
|
|
18b6d86cc4 | ||
|
|
3c5efa0662 | ||
|
|
9b739bcbbf | ||
|
|
db89076e48 | ||
|
|
19b341ef18 | ||
|
|
be3713b1a3 | ||
|
|
99c4415cfb | ||
|
|
7b311f2ccf | ||
|
|
4aeabfe0a7 | ||
|
|
431ed02194 | ||
|
|
07f587ed83 | ||
|
|
0408341d82 | ||
|
|
5b3c9432f3 | ||
|
|
4a197e63f9 | ||
|
|
0876a12fe9 | ||
|
|
c43c7ecc03 | ||
|
|
4a6dee3044 | ||
|
|
019acdd840 | ||
|
|
1c98512720 | ||
|
|
23a09ad546 | ||
|
|
0836e8fe7c | ||
|
|
90196af8f8 | ||
|
|
566fe05772 | ||
|
|
18772c6292 | ||
|
|
6278bddc9b | ||
|
|
f74bf71735 | ||
|
|
efe9ed68b2 | ||
|
|
7c1e75865d |
@@ -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_downgrade_blacklist = ['torch', 'torchaudio', 'torchsde', 'torchvision', 'transformers', 'safetensors', 'kornia']
|
||||
|
||||
if sys.version_info < (3, 13):
|
||||
cm_global.pip_overrides = {'numpy': 'numpy<2'}
|
||||
else:
|
||||
cm_global.pip_overrides = {}
|
||||
cm_global.pip_overrides = {}
|
||||
|
||||
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:
|
||||
@@ -152,9 +149,6 @@ class Ctx:
|
||||
with open(core.manager_pip_overrides_path, 'r', encoding="UTF-8", errors="ignore") as 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):
|
||||
with open(core.manager_pip_blacklist_path, 'r', encoding="UTF-8", errors="ignore") as f:
|
||||
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
9095
github-stats.json
9095
github-stats.json
File diff suppressed because it is too large
Load Diff
@@ -179,7 +179,7 @@ def install_node(node_id, version=None):
|
||||
else:
|
||||
url = f"{base_url}/nodes/{node_id}/install?version={version}"
|
||||
|
||||
response = requests.get(url)
|
||||
response = requests.get(url, verify=not manager_util.bypass_ssl)
|
||||
if response.status_code == 200:
|
||||
# Convert the API response to a NodeVersion object
|
||||
return map_node_version(response.json())
|
||||
@@ -190,7 +190,7 @@ def install_node(node_id, version=None):
|
||||
def all_versions_of_node(node_id):
|
||||
url = f"{base_url}/nodes/{node_id}/versions?statuses=NodeVersionStatusActive&statuses=NodeVersionStatusPending"
|
||||
|
||||
response = requests.get(url)
|
||||
response = requests.get(url, verify=not manager_util.bypass_ssl)
|
||||
if response.status_code == 200:
|
||||
return response.json()
|
||||
else:
|
||||
|
||||
@@ -43,7 +43,7 @@ import manager_downloader
|
||||
from node_package import InstalledNodePackage
|
||||
|
||||
|
||||
version_code = [3, 33, 3]
|
||||
version_code = [3, 35]
|
||||
version_str = f"V{version_code[0]}.{version_code[1]}" + (f'.{version_code[2]}' if len(version_code) > 2 else '')
|
||||
|
||||
|
||||
@@ -1711,11 +1711,13 @@ def read_config():
|
||||
config = configparser.ConfigParser(strict=False)
|
||||
config.read(manager_config_path)
|
||||
default_conf = config['default']
|
||||
manager_util.use_uv = default_conf['use_uv'].lower() == 'true' if 'use_uv' in default_conf else False
|
||||
|
||||
def get_bool(key, default_value):
|
||||
return default_conf[key].lower() == 'true' if key in default_conf else False
|
||||
|
||||
manager_util.use_uv = default_conf['use_uv'].lower() == 'true' if 'use_uv' in default_conf else False
|
||||
manager_util.bypass_ssl = get_bool('bypass_ssl', False)
|
||||
|
||||
return {
|
||||
'http_channel_enabled': get_bool('http_channel_enabled', False),
|
||||
'preview_method': default_conf.get('preview_method', manager_funcs.get_current_preview_method()).lower(),
|
||||
@@ -1738,16 +1740,20 @@ def read_config():
|
||||
}
|
||||
|
||||
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"
|
||||
manager_util.bypass_ssl = False
|
||||
|
||||
return {
|
||||
'http_channel_enabled': False,
|
||||
'preview_method': manager_funcs.get_current_preview_method(),
|
||||
'git_exe': '',
|
||||
'use_uv': False,
|
||||
'use_uv': manager_util.use_uv,
|
||||
'channel_url': DEFAULT_CHANNEL,
|
||||
'default_cache_as_channel_url': False,
|
||||
'share_option': 'all',
|
||||
'bypass_ssl': False,
|
||||
'bypass_ssl': manager_util.bypass_ssl,
|
||||
'file_logging': True,
|
||||
'component_policy': 'workflow',
|
||||
'update_policy': 'stable-comfyui',
|
||||
@@ -3108,6 +3114,11 @@ async def restore_snapshot(snapshot_path, git_helper_extras=None):
|
||||
info = yaml.load(snapshot_file, Loader=yaml.SafeLoader)
|
||||
info = info['custom_nodes']
|
||||
|
||||
if 'pips' in info and info['pips']:
|
||||
pips = info['pips']
|
||||
else:
|
||||
pips = {}
|
||||
|
||||
# for cnr restore
|
||||
cnr_info = info.get('cnr_custom_nodes')
|
||||
if cnr_info is not None:
|
||||
@@ -3314,6 +3325,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)
|
||||
cloned_repos.append(repo_name)
|
||||
|
||||
manager_util.restore_pip_snapshot(pips, git_helper_extras)
|
||||
|
||||
# print summary
|
||||
for x in cloned_repos:
|
||||
print(f"[ INSTALLED ] {x}")
|
||||
|
||||
@@ -55,7 +55,11 @@ def download_url(model_url: str, model_dir: str, filename: str):
|
||||
return aria2_download_url(model_url, model_dir, filename)
|
||||
else:
|
||||
from torchvision.datasets.utils import download_url as torchvision_download_url
|
||||
return torchvision_download_url(model_url, model_dir, filename)
|
||||
try:
|
||||
return torchvision_download_url(model_url, model_dir, filename)
|
||||
except Exception as e:
|
||||
logging.error(f"[ComfyUI-Manager] Failed to download: {model_url} / {repr(e)}")
|
||||
raise
|
||||
|
||||
|
||||
def aria2_find_task(dir: str, filename: str):
|
||||
|
||||
@@ -589,7 +589,7 @@ async def task_worker():
|
||||
return 'success'
|
||||
|
||||
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}"
|
||||
|
||||
|
||||
@@ -15,7 +15,6 @@ import re
|
||||
import logging
|
||||
import platform
|
||||
import shlex
|
||||
import cm_global
|
||||
|
||||
|
||||
cache_lock = threading.Lock()
|
||||
@@ -24,7 +23,7 @@ comfyui_manager_path = os.path.abspath(os.path.join(os.path.dirname(__file__), '
|
||||
cache_dir = os.path.join(comfyui_manager_path, '.cache') # This path is also updated together in **manager_core.update_user_directory**.
|
||||
|
||||
use_uv = False
|
||||
|
||||
bypass_ssl = False
|
||||
|
||||
def add_python_path_to_env():
|
||||
if platform.system() != "Windows":
|
||||
@@ -137,7 +136,7 @@ async def get_data(uri, silent=False):
|
||||
print(f"FETCH DATA from: {uri}", end="")
|
||||
|
||||
if uri.startswith("http"):
|
||||
async with aiohttp.ClientSession(trust_env=True, connector=aiohttp.TCPConnector(verify_ssl=False)) as session:
|
||||
async with aiohttp.ClientSession(trust_env=True, connector=aiohttp.TCPConnector(verify_ssl=not bypass_ssl)) as session:
|
||||
headers = {
|
||||
'Cache-Control': 'no-cache',
|
||||
'Pragma': 'no-cache',
|
||||
@@ -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:
|
||||
def __init__(self, prev_pip_versions, comfyui_path, manager_files_path):
|
||||
@@ -334,32 +359,6 @@ class PIPFixer:
|
||||
self.comfyui_path = comfyui_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):
|
||||
new_pip_versions = get_installed_packages(True)
|
||||
|
||||
@@ -381,7 +380,7 @@ class PIPFixer:
|
||||
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['torchaudio'] != new_pip_versions['torchaudio']:
|
||||
self.torch_rollback()
|
||||
torch_rollback(self.prev_pip_versions['torch'])
|
||||
except Exception as e:
|
||||
logging.error("[ComfyUI-Manager] Failed to restore PyTorch")
|
||||
logging.error(e)
|
||||
@@ -412,32 +411,14 @@ class PIPFixer:
|
||||
|
||||
if len(targets) > 0:
|
||||
for x in targets:
|
||||
if sys.version_info < (3, 13):
|
||||
cmd = make_pip_cmd(['install', f"{x}=={versions[0].version_string}", "numpy<2"])
|
||||
subprocess.check_output(cmd, universal_newlines=True)
|
||||
cmd = make_pip_cmd(['install', f"{x}=={versions[0].version_string}"])
|
||||
subprocess.check_output(cmd, universal_newlines=True)
|
||||
|
||||
logging.info(f"[ComfyUI-Manager] 'opencv' dependencies were fixed: {targets}")
|
||||
except Exception as e:
|
||||
logging.error("[ComfyUI-Manager] Failed to restore opencv")
|
||||
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
|
||||
try:
|
||||
# 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}")
|
||||
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}")
|
||||
@@ -73,13 +73,18 @@ https://blog.comfy.org/comfyui-statement-on-the-ultralytics-crypto-miner-situati
|
||||
detected = set()
|
||||
try:
|
||||
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]
|
||||
if "pycrypto" in anthropic_reqs:
|
||||
location = [x for x in anthropic_info.split('\n') if x.startswith("Location")][0].split(': ')[1]
|
||||
for fi in os.listdir(location):
|
||||
if fi.startswith("anthropic"):
|
||||
guide["ComfyUI_LLMVISION"] = f"\n0.Remove {os.path.join(location, fi)}" + guide["ComfyUI_LLMVISION"]
|
||||
detected.add("ComfyUI_LLMVISION")
|
||||
requires_lines = [x for x in anthropic_info.split('\n') if x.startswith("Requires")]
|
||||
if requires_lines:
|
||||
anthropic_reqs = requires_lines[0].split(": ", 1)[1]
|
||||
if "pycrypto" in anthropic_reqs:
|
||||
location_lines = [x for x in anthropic_info.split('\n') if x.startswith("Location")]
|
||||
if location_lines:
|
||||
location = location_lines[0].split(": ", 1)[1]
|
||||
for fi in os.listdir(location):
|
||||
if fi.startswith("anthropic"):
|
||||
guide["ComfyUI_LLMVISION"] = (f"\n0.Remove {os.path.join(location, fi)}" + guide["ComfyUI_LLMVISION"])
|
||||
detected.add("ComfyUI_LLMVISION")
|
||||
|
||||
except subprocess.CalledProcessError:
|
||||
pass
|
||||
|
||||
|
||||
@@ -335,8 +335,8 @@ async def share_art(request):
|
||||
content_type = assetFileType
|
||||
|
||||
try:
|
||||
from matrix_client.api import MatrixHttpApi
|
||||
from matrix_client.client import MatrixClient
|
||||
from nio import AsyncClient, LoginResponse, RoomSendResponse, UploadResponse, RoomMessageText, RoomMessageMedia
|
||||
import asyncio
|
||||
|
||||
homeserver = 'matrix.org'
|
||||
if matrix_auth:
|
||||
@@ -345,20 +345,35 @@ async def share_art(request):
|
||||
if not homeserver.startswith("https://"):
|
||||
homeserver = "https://" + homeserver
|
||||
|
||||
client = MatrixClient(homeserver)
|
||||
try:
|
||||
token = client.login(username=matrix_auth['username'], password=matrix_auth['password'])
|
||||
if not token:
|
||||
return web.json_response({"error": "Invalid Matrix credentials."}, content_type='application/json', status=400)
|
||||
except:
|
||||
client = AsyncClient(homeserver, matrix_auth['username'])
|
||||
|
||||
# Login
|
||||
login_resp = await client.login(matrix_auth['password'])
|
||||
if not isinstance(login_resp, LoginResponse) or not login_resp.access_token:
|
||||
await client.close()
|
||||
return web.json_response({"error": "Invalid Matrix credentials."}, content_type='application/json', status=400)
|
||||
|
||||
matrix = MatrixHttpApi(homeserver, token=token)
|
||||
# Upload asset
|
||||
with open(asset_filepath, 'rb') as f:
|
||||
mxc_url = matrix.media_upload(f.read(), content_type, filename=filename)['content_uri']
|
||||
upload_resp, _maybe_keys = await client.upload(f, content_type=content_type, filename=filename)
|
||||
asset_data = f.seek(0) or f.read() # get size for info below
|
||||
if not isinstance(upload_resp, UploadResponse) or not upload_resp.content_uri:
|
||||
await client.close()
|
||||
return web.json_response({"error": "Failed to upload asset to Matrix."}, content_type='application/json', status=500)
|
||||
mxc_url = upload_resp.content_uri
|
||||
|
||||
workflow_json_mxc_url = matrix.media_upload(prompt['workflow'], 'application/json', filename='workflow.json')['content_uri']
|
||||
# Upload workflow JSON
|
||||
import io
|
||||
workflow_json_bytes = json.dumps(prompt['workflow']).encode('utf-8')
|
||||
workflow_io = io.BytesIO(workflow_json_bytes)
|
||||
upload_workflow_resp, _maybe_keys = await client.upload(workflow_io, content_type='application/json', filename='workflow.json')
|
||||
workflow_io.seek(0)
|
||||
if not isinstance(upload_workflow_resp, UploadResponse) or not upload_workflow_resp.content_uri:
|
||||
await client.close()
|
||||
return web.json_response({"error": "Failed to upload workflow to Matrix."}, content_type='application/json', status=500)
|
||||
workflow_json_mxc_url = upload_workflow_resp.content_uri
|
||||
|
||||
# Send text message
|
||||
text_content = ""
|
||||
if title:
|
||||
text_content += f"{title}\n"
|
||||
@@ -366,9 +381,44 @@ async def share_art(request):
|
||||
text_content += f"{description}\n"
|
||||
if credits:
|
||||
text_content += f"\ncredits: {credits}\n"
|
||||
matrix.send_message(comfyui_share_room_id, text_content)
|
||||
matrix.send_content(comfyui_share_room_id, mxc_url, filename, 'm.image')
|
||||
matrix.send_content(comfyui_share_room_id, workflow_json_mxc_url, 'workflow.json', 'm.file')
|
||||
await client.room_send(
|
||||
room_id=comfyui_share_room_id,
|
||||
message_type="m.room.message",
|
||||
content={"msgtype": "m.text", "body": text_content}
|
||||
)
|
||||
|
||||
# Send image
|
||||
await client.room_send(
|
||||
room_id=comfyui_share_room_id,
|
||||
message_type="m.room.message",
|
||||
content={
|
||||
"msgtype": "m.image",
|
||||
"body": filename,
|
||||
"url": mxc_url,
|
||||
"info": {
|
||||
"mimetype": content_type,
|
||||
"size": len(asset_data)
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
# Send workflow JSON file
|
||||
await client.room_send(
|
||||
room_id=comfyui_share_room_id,
|
||||
message_type="m.room.message",
|
||||
content={
|
||||
"msgtype": "m.file",
|
||||
"body": "workflow.json",
|
||||
"url": workflow_json_mxc_url,
|
||||
"info": {
|
||||
"mimetype": "application/json",
|
||||
"size": len(workflow_json_bytes)
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
await client.close()
|
||||
|
||||
except:
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
|
||||
@@ -71,7 +71,7 @@ export class CopusShareDialog extends ComfyDialog {
|
||||
this.allFiles = [];
|
||||
this.titleNum = 0;
|
||||
}
|
||||
|
||||
|
||||
createButtons() {
|
||||
const inputStyle = {
|
||||
display: "block",
|
||||
@@ -202,7 +202,7 @@ export class CopusShareDialog extends ComfyDialog {
|
||||
this.LockInput = $el("input", {
|
||||
type: "text",
|
||||
placeholder: "",
|
||||
style: {
|
||||
style: {
|
||||
width: "100px",
|
||||
padding: "7px",
|
||||
borderRadius: "4px",
|
||||
@@ -301,7 +301,7 @@ export class CopusShareDialog extends ComfyDialog {
|
||||
},
|
||||
[]
|
||||
);
|
||||
|
||||
|
||||
const titleNumDom = $el(
|
||||
"label",
|
||||
{
|
||||
@@ -342,15 +342,11 @@ export class CopusShareDialog extends ComfyDialog {
|
||||
["0/70"]
|
||||
);
|
||||
// Additional Inputs Section
|
||||
const additionalInputsSection = $el(
|
||||
"div",
|
||||
{ style: { ...sectionStyle, } },
|
||||
[
|
||||
$el("label", { style: labelStyle }, ["3️⃣ Title "]),
|
||||
this.TitleInput,
|
||||
titleNumDom,
|
||||
]
|
||||
);
|
||||
const additionalInputsSection = $el("div", { style: { ...sectionStyle } }, [
|
||||
$el("label", { style: labelStyle }, ["3️⃣ Title "]),
|
||||
this.TitleInput,
|
||||
titleNumDom,
|
||||
]);
|
||||
const SubtitleSection = $el("div", { style: sectionStyle }, [
|
||||
$el("label", { style: labelStyle }, ["4️⃣ Subtitle "]),
|
||||
this.SubTitleInput,
|
||||
@@ -392,11 +388,31 @@ export class CopusShareDialog extends ComfyDialog {
|
||||
},
|
||||
[
|
||||
this.radioButtonsCheck_lock,
|
||||
$el("div", { 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(
|
||||
"div",
|
||||
{
|
||||
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(
|
||||
@@ -404,14 +420,28 @@ export class CopusShareDialog extends ComfyDialog {
|
||||
{ style: { display: "flex", alignItems: "center", cursor: "pointer" } },
|
||||
[
|
||||
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(
|
||||
"p",
|
||||
{ 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 }, [
|
||||
$el("label", { style: labelStyle }, ["7️⃣ Store on blockchain "]),
|
||||
$el("label", { style: labelStyle }, ["8️⃣ Store on blockchain "]),
|
||||
$el(
|
||||
"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
|
||||
this.message = $el(
|
||||
@@ -526,6 +689,7 @@ export class CopusShareDialog extends ComfyDialog {
|
||||
DescriptionSection,
|
||||
// contestSection,
|
||||
blockChainSection_lock,
|
||||
contentRatingSection,
|
||||
blockChainSection,
|
||||
this.message,
|
||||
buttonsSection,
|
||||
@@ -534,7 +698,7 @@ export class CopusShareDialog extends ComfyDialog {
|
||||
return layout;
|
||||
}
|
||||
/**
|
||||
* api
|
||||
* api
|
||||
* @param {url} path
|
||||
* @param {params} options
|
||||
* @param {statusText} statusText
|
||||
@@ -587,7 +751,9 @@ export class CopusShareDialog extends ComfyDialog {
|
||||
url: data,
|
||||
});
|
||||
} 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) {
|
||||
if (e?.response?.status === 413) {
|
||||
@@ -628,8 +794,15 @@ export class CopusShareDialog extends ComfyDialog {
|
||||
subTitle: this.SubTitleInput.value,
|
||||
content: this.descriptionInput.value,
|
||||
storeOnChain: this.radioButtonsCheck.checked ? true : false,
|
||||
lockState:this.radioButtonsCheck_lock.checked ? 2 : 0,
|
||||
unlockPrice:this.LockInput.value,
|
||||
lockState: this.radioButtonsCheck_lock.checked ? 2 : 0,
|
||||
unlockPrice: this.LockInput.value,
|
||||
rating: this.ratingRadioButtonsCheck0.checked
|
||||
? 0
|
||||
: this.ratingRadioButtonsCheck1.checked
|
||||
? 1
|
||||
: this.ratingRadioButtonsCheck2.checked
|
||||
? 2
|
||||
: -1,
|
||||
};
|
||||
|
||||
if (!this.keyInput.value) {
|
||||
@@ -644,8 +817,8 @@ export class CopusShareDialog extends ComfyDialog {
|
||||
throw new Error("Title is required");
|
||||
}
|
||||
|
||||
if(this.radioButtonsCheck_lock.checked){
|
||||
if (!this.LockInput.value){
|
||||
if (this.radioButtonsCheck_lock.checked) {
|
||||
if (!this.LockInput.value) {
|
||||
throw new Error("Price is required");
|
||||
}
|
||||
}
|
||||
@@ -695,23 +868,23 @@ export class CopusShareDialog extends ComfyDialog {
|
||||
"Uploading workflow..."
|
||||
);
|
||||
|
||||
if (res.status && res.data.status && res.data) {
|
||||
localStorage.setItem("copus_token",this.keyInput.value);
|
||||
const { data } = res.data;
|
||||
if (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.previewImage.src = "";
|
||||
this.previewImage.style.display = "none";
|
||||
this.uploadedImages = [];
|
||||
this.allFilesImages = [];
|
||||
this.allFiles = [];
|
||||
this.TitleInput.value = "";
|
||||
this.SubTitleInput.value = "";
|
||||
this.descriptionInput.value = "";
|
||||
this.selectedFile = null;
|
||||
}
|
||||
}
|
||||
if (res.status && res.data.status && res.data) {
|
||||
localStorage.setItem("copus_token", this.keyInput.value);
|
||||
const { data } = res.data;
|
||||
if (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.previewImage.src = "";
|
||||
this.previewImage.style.display = "none";
|
||||
this.uploadedImages = [];
|
||||
this.allFilesImages = [];
|
||||
this.allFiles = [];
|
||||
this.TitleInput.value = "";
|
||||
this.SubTitleInput.value = "";
|
||||
this.descriptionInput.value = "";
|
||||
this.selectedFile = null;
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
throw new Error("Error sharing workflow: " + e.message);
|
||||
}
|
||||
@@ -757,7 +930,7 @@ export class CopusShareDialog extends ComfyDialog {
|
||||
this.element.style.display = "block";
|
||||
this.previewImage.src = "";
|
||||
this.previewImage.style.display = "none";
|
||||
this.keyInput.value = apiToken!=null?apiToken:"";
|
||||
this.keyInput.value = apiToken != null ? apiToken : "";
|
||||
this.uploadedImages = [];
|
||||
this.allFilesImages = [];
|
||||
this.allFiles = [];
|
||||
|
||||
204
model-list.json
204
model-list.json
@@ -1973,6 +1973,97 @@
|
||||
"url": "https://dl.fbaipublicfiles.com/segment_anything/sam_vit_b_01ec64.pth",
|
||||
"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",
|
||||
"type": "seecoder",
|
||||
@@ -4006,6 +4097,29 @@
|
||||
"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",
|
||||
"type": "diffusion_model",
|
||||
@@ -4023,7 +4137,7 @@
|
||||
"type": "VAE",
|
||||
"base": "FLUX.1",
|
||||
"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",
|
||||
"filename": "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",
|
||||
"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",
|
||||
"type": "lora",
|
||||
@@ -5044,6 +5202,50 @@
|
||||
"url": "https://huggingface.co/Lightricks/LTX-Video/resolve/main/ltxv-13b-0.9.7-distilled-lora128.safetensors",
|
||||
"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",
|
||||
"type": "diffusion_model",
|
||||
|
||||
@@ -1,14 +1,625 @@
|
||||
{
|
||||
"custom_nodes": [
|
||||
{
|
||||
"author": "robertvoy",
|
||||
"title": "ComfyUI-Distributed [WIP]",
|
||||
"reference": "https://github.com/robertvoy/ComfyUI-Distributed",
|
||||
"author": "rodpl",
|
||||
"title": "comfyui-asset-manager",
|
||||
"reference": "https://github.com/rodpl/comfyui-asset-manager",
|
||||
"files": [
|
||||
"https://github.com/robertvoy/ComfyUI-Distributed"
|
||||
"https://github.com/rodpl/comfyui-asset-manager"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "A custom node extension for ComfyUI that enables distributed image generation across multiple GPUs through a master-worker architecture."
|
||||
"description": "ComfyUI Asset Manager for managing assets in ComfyUI"
|
||||
},
|
||||
{
|
||||
"author": "AIWarper",
|
||||
"title": "ComfyUI-DAViD [WIP]",
|
||||
"reference": "https://github.com/AIWarper/ComfyUI-DAViD",
|
||||
"files": [
|
||||
"https://github.com/AIWarper/ComfyUI-DAViD"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Custom nodes for [a/DAViD (Data-efficient and Accurate Vision Models from Synthetic Data)](https://microsoft.github.io/DAViD) models in ComfyUI. These nodes enable depth estimation, surface normal estimation, and soft foreground segmentation for human-centric images.\nNOTE: The files in the repo are not organized."
|
||||
},
|
||||
{
|
||||
"author": "blepping",
|
||||
"title": "ComfyUI 'dum' samplers [WIP]",
|
||||
"reference": "https://github.com/blepping/comfyui_dum_samplers",
|
||||
"files": [
|
||||
"https://github.com/blepping/comfyui_dum_samplers"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "A collection of random, experimental (and most likely 'dum') samplers for ComfyUI."
|
||||
},
|
||||
{
|
||||
"author": "crimro-se",
|
||||
"title": "ComfyUI-CascadedGaze",
|
||||
"reference": "https://github.com/crimro-se/ComfyUI-CascadedGaze",
|
||||
"files": [
|
||||
"https://github.com/crimro-se/ComfyUI-CascadedGaze"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Two custom nodes that bring the CascadedGaze image denoising model architecture to ComfyUI."
|
||||
},
|
||||
{
|
||||
"author": "RamonGuthrie",
|
||||
"title": "ComfyUI-RBG-LoRA-Converter [UNSAFE]",
|
||||
"reference": "https://github.com/RamonGuthrie/ComfyUI-RBG-LoraConverter",
|
||||
"files": [
|
||||
"https://github.com/RamonGuthrie/ComfyUI-RBG-LoraConverter"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "A node for converting LoRA (Low-Rank Adaptation) keys in ComfyUI. [w/This node pack contains a node that has a vulnerability allowing write to arbitrary file paths.]"
|
||||
},
|
||||
{
|
||||
"author": "Estanislao-Oviedo",
|
||||
"title": "ComfyUI-CustomNodes [NAME CONFLICT]",
|
||||
"reference": "https://github.com/Estanislao-Oviedo/ComfyUI-CustomNodes",
|
||||
"files": [
|
||||
"https://github.com/Estanislao-Oviedo/ComfyUI-CustomNodes"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "NODES: Load Image Folder (Custom), Make Batch from Single Image (Custom)"
|
||||
},
|
||||
{
|
||||
"author": "NicholasKao1029",
|
||||
"title": "comfyui-pixxio",
|
||||
"reference": "https://github.com/NicholasKao1029/comfyui-pixxio",
|
||||
"files": [
|
||||
"https://github.com/NicholasKao1029/comfyui-pixxio"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "NODES: Auto-Upload Image to Pixxio Collection, Load Image from Pixx.io"
|
||||
},
|
||||
{
|
||||
"author": "BAIS1C",
|
||||
"title": "ComfyUI-AudioDuration [WIP]",
|
||||
"reference": "https://github.com/BAIS1C/ComfyUI_BASICDancePoser",
|
||||
"files": [
|
||||
"https://github.com/BAIS1C/ComfyUI_BASICDancePoser"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Node to extract Dance poses from Music to control Video Generations.\nNOTE: The files in the repo are not organized."
|
||||
},
|
||||
{
|
||||
"author": "ctf05",
|
||||
"title": "ComfyUI-AudioDuration",
|
||||
"reference": "https://github.com/ctf05/ComfyUI-AudioDuration",
|
||||
"files": [
|
||||
"https://github.com/ctf05/ComfyUI-AudioDuration"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "NODES: Audio Duration, Audio Overlay (Mix)"
|
||||
},
|
||||
{
|
||||
"author": "Baverne",
|
||||
"title": "TiledWan ComfyUI Node Set [WIP]",
|
||||
"reference": "https://github.com/Baverne/comfyUI-TiledWan",
|
||||
"files": [
|
||||
"https://github.com/Baverne/comfyUI-TiledWan"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "A custom node set for ComfyUI that provides tiled processing capabilities.\nNOTE: The files in the repo are not organized."
|
||||
},
|
||||
{
|
||||
"author": "soliton",
|
||||
"title": "Watermark Detection YOLO Custom Node [WIP]",
|
||||
"reference": "https://github.com/Soliton80/ComfyUI-Watermark-Detection-YOLO",
|
||||
"files": [
|
||||
"https://github.com/Soliton80/ComfyUI-Watermark-Detection-YOLO"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Custom watermark detection using rained on 24,558 watermark images YOLO11 model for ComfyUI\nNOTE: The files in the repo are not organized."
|
||||
},
|
||||
{
|
||||
"author": "Jpzz",
|
||||
"title": "IxiWorks StoryBoard Nodes [WIP]",
|
||||
"reference": "https://github.com/Jpzz/comfyui-ixiworks",
|
||||
"files": [
|
||||
"https://github.com/Jpzz/comfyui-ixiworks"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "StoryBoard nodes for ComfyUI - Parse JSON templates and build prompts for generative movie creation\nNOTE: The files in the repo are not organized."
|
||||
},
|
||||
{
|
||||
"author": "siyonomicon",
|
||||
"title": "ComfyUI-Pin",
|
||||
"reference": "https://github.com/siyonomicon/ComfyUI-Pin",
|
||||
"files": [
|
||||
"https://github.com/siyonomicon/ComfyUI-Pin"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "NODES: Pin Grid Node"
|
||||
},
|
||||
{
|
||||
"author": "rakete",
|
||||
"title": "comfyui-rakete",
|
||||
"reference": "https://github.com/rakete/comfyui-rakete",
|
||||
"files": [
|
||||
"https://github.com/rakete/comfyui-rakete"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "NODES: Get Widget or Default Value, GPU Garbage Collector, Build String from Widget Values"
|
||||
},
|
||||
{
|
||||
"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": "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",
|
||||
@@ -20,16 +631,6 @@
|
||||
"install_type": "git-clone",
|
||||
"description": "A ComfyUI plugin to simplify loading and managing custom nodes with a sidebar interface."
|
||||
},
|
||||
{
|
||||
"author": "armandgw84",
|
||||
"title": "comfyui-custom-v8",
|
||||
"reference": "https://github.com/armandgw84/comfyui-custom-v8",
|
||||
"files": [
|
||||
"https://github.com/armandgw84/comfyui-custom-v8"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "NODES: Resize With Padding, Wan 2.1 Transition Prompter, Wan Prompt Crafter"
|
||||
},
|
||||
{
|
||||
"author": "diogod",
|
||||
"title": "Comfy Inpainting Works [WIP]",
|
||||
@@ -78,17 +679,7 @@
|
||||
"https://github.com/WozStudios/ComfyUI-WozNodes"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "NODES: Trim Image Batch, Create Image Batch, Select Image Batch by Mask"
|
||||
},
|
||||
{
|
||||
"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"
|
||||
"description": "NODES: Trim Image Batch, Create Image Batch, Select Image Batch by Mask, Advanced Batch Creator"
|
||||
},
|
||||
{
|
||||
"author": "stalkervr",
|
||||
@@ -150,16 +741,6 @@
|
||||
"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."
|
||||
},
|
||||
{
|
||||
"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",
|
||||
"title": "comfyui_qwen_object [WIP]",
|
||||
@@ -428,7 +1009,7 @@
|
||||
"https://github.com/IsItDanOrAi/ComfyUI-exLoadout"
|
||||
],
|
||||
"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",
|
||||
@@ -440,16 +1021,6 @@
|
||||
"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.]"
|
||||
},
|
||||
{
|
||||
"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",
|
||||
"title": "ComfyUI-AllergicPack [WIP]",
|
||||
@@ -849,7 +1420,7 @@
|
||||
"https://github.com/aa-parky/pipemind-comfyui"
|
||||
],
|
||||
"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",
|
||||
@@ -1051,16 +1622,6 @@
|
||||
"install_type": "git-clone",
|
||||
"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",
|
||||
"title": "comfyui-sceneassembly",
|
||||
@@ -1141,16 +1702,6 @@
|
||||
"install_type": "git-clone",
|
||||
"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",
|
||||
"reference": "https://github.com/maizerrr/comfyui-code-nodes",
|
||||
@@ -1548,7 +2099,7 @@
|
||||
"https://github.com/silent-rain/ComfyUI-SilentRain"
|
||||
],
|
||||
"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",
|
||||
@@ -1810,16 +2361,6 @@
|
||||
"install_type": "git-clone",
|
||||
"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",
|
||||
"title": "MultiModel",
|
||||
@@ -2431,16 +2972,6 @@
|
||||
"install_type": "git-clone",
|
||||
"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",
|
||||
"title": "ComfyUI-camietagger-onnx",
|
||||
@@ -2601,16 +3132,6 @@
|
||||
"install_type": "git-clone",
|
||||
"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",
|
||||
"title": "comfyui-unsafe-torch [UNSAFE]",
|
||||
@@ -3336,9 +3857,9 @@
|
||||
{
|
||||
"author": "PATATAJEC",
|
||||
"title": "Patatajec-Nodes [WIP]",
|
||||
"reference": "https://github.com/PATATAJEC/Patatajec-Nodes",
|
||||
"reference": "https://github.com/PATATAJEC/ComfyUI-PatatajecNodes",
|
||||
"files": [
|
||||
"https://github.com/PATATAJEC/Patatajec-Nodes"
|
||||
"https://github.com/PATATAJEC/ComfyUI-PatatajecNodes"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "NODES: HyVid Switcher\nNOTE: The files in the repo are not organized."
|
||||
@@ -3848,7 +4369,7 @@
|
||||
},
|
||||
{
|
||||
"author": "kijai",
|
||||
"title": "ComfyUI-MMAudio",
|
||||
"title": "ComfyUI-MMAudio [WIP]",
|
||||
"reference": "https://github.com/kijai/ComfyUI-MMAudio",
|
||||
"files": [
|
||||
"https://github.com/kijai/ComfyUI-MMAudio"
|
||||
@@ -4518,7 +5039,7 @@
|
||||
"https://github.com/rouxianmantou/comfyui-rxmt-nodes"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "NODES:Check Value Type, Why Prompt Text"
|
||||
"description": "NODES: Check Value Type, Why Prompt Text"
|
||||
},
|
||||
{
|
||||
"author": "SirVeggie",
|
||||
@@ -4640,16 +5161,6 @@
|
||||
"install_type": "git-clone",
|
||||
"description": "This node output the image that are transfromed by affine matrix what is made according to 4 points of output.\nNOTE: The files in the repo are not organized."
|
||||
},
|
||||
{
|
||||
"author": "ComfyUI-Workflow",
|
||||
"title": "ComfyUI OpenAI Nodes",
|
||||
"reference": "https://github.com/ComfyUI-Workflow/ComfyUI-OpenAI",
|
||||
"files": [
|
||||
"https://github.com/ComfyUI-Workflow/ComfyUI-OpenAI"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "By utilizing OpenAI's powerful vision models, this node enables you to incorporate state-of-the-art image understanding into your ComfyUI projects with minimal setup."
|
||||
},
|
||||
{
|
||||
"author": "ruka-game",
|
||||
"title": "ComfyUI RukaLib [WIP]",
|
||||
@@ -6860,4 +7371,4 @@
|
||||
"description": "This extension provides the capability to use ComfyUI Workflow as a component and the ability to use the Image Refiner functionality based on components. NOTE: This is an experimental extension feature with no consideration for backward compatibility and can be highly unstable."
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,211 @@
|
||||
{
|
||||
"custom_nodes": [
|
||||
{
|
||||
"author": "ComfyUI-Workflow",
|
||||
"title": "ComfyUI OpenAI Nodes [REMOVED]",
|
||||
"reference": "https://github.com/ComfyUI-Workflow/ComfyUI-OpenAI",
|
||||
"files": [
|
||||
"https://github.com/ComfyUI-Workflow/ComfyUI-OpenAI"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "By utilizing OpenAI's powerful vision models, this node enables you to incorporate state-of-the-art image understanding into your ComfyUI projects with minimal setup."
|
||||
},
|
||||
{
|
||||
"author": "dionren",
|
||||
"title": "Export Workflow With Cyuai Api Available Nodes [REMOVED]",
|
||||
"id": "comfyUI-Pro-Export-Tool",
|
||||
"reference": "https://github.com/dionren/ComfyUI-Pro-Export-Tool",
|
||||
"files": [
|
||||
"https://github.com/dionren/ComfyUI-Pro-Export-Tool"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "This is a node to convert workflows to cyuai api available 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",
|
||||
"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": [
|
||||
{
|
||||
"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",
|
||||
"type": "diffusion_model",
|
||||
@@ -576,121 +689,6 @@
|
||||
"filename": "flux-hed-controlnet-v3.safetensors",
|
||||
"url": "https://huggingface.co/XLabs-AI/flux-controlnet-collections/resolve/main/flux-hed-controlnet-v3.safetensors",
|
||||
"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",
|
||||
"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"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -121,17 +121,11 @@ read_uv_mode()
|
||||
security_check.security_check()
|
||||
check_file_logging()
|
||||
|
||||
if sys.version_info < (3, 13):
|
||||
cm_global.pip_overrides = {'numpy': 'numpy<2'}
|
||||
else:
|
||||
cm_global.pip_overrides = {}
|
||||
cm_global.pip_overrides = {}
|
||||
|
||||
if os.path.exists(manager_pip_overrides_path):
|
||||
with open(manager_pip_overrides_path, 'r', encoding="UTF-8", errors="ignore") as 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):
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
[project]
|
||||
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."
|
||||
version = "3.33.3"
|
||||
version = "3.35"
|
||||
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-nio", "transformers", "huggingface-hub>0.20", "typer", "rich", "typing-extensions", "toml", "uv", "chardet"]
|
||||
|
||||
[project.urls]
|
||||
Repository = "https://github.com/ltdrdata/ComfyUI-Manager"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
GitPython
|
||||
PyGithub
|
||||
matrix-client==0.4.0
|
||||
matrix-nio
|
||||
transformers
|
||||
huggingface-hub>0.20
|
||||
typer
|
||||
|
||||
@@ -255,13 +255,13 @@ def clone_or_pull_git_repository(git_url):
|
||||
repo.git.submodule('update', '--init', '--recursive')
|
||||
print(f"Pulling {repo_name}...")
|
||||
except Exception as e:
|
||||
print(f"Pulling {repo_name} failed: {e}")
|
||||
print(f"Failed to pull '{repo_name}': {e}")
|
||||
else:
|
||||
try:
|
||||
Repo.clone_from(git_url, repo_dir, recursive=True)
|
||||
print(f"Cloning {repo_name}...")
|
||||
except Exception as e:
|
||||
print(f"Cloning {repo_name} failed: {e}")
|
||||
print(f"Failed to clone '{repo_name}': {e}")
|
||||
|
||||
|
||||
def update_custom_nodes():
|
||||
|
||||
Reference in New Issue
Block a user