Merge branch 'ltdrdata:main' into main

This commit is contained in:
Daxton Caylor 2024-10-08 19:27:47 +05:30 committed by GitHub
commit 5dbf3d766d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
21 changed files with 8677 additions and 3990 deletions

View File

@ -204,7 +204,6 @@ This repository provides Colab notebooks that allow you to install and use Comfy
* Please submit a pull request to update either the custom-node-list.json or model-list.json file.
* The scanner currently provides a detection function for missing nodes, which is capable of detecting nodes described by the following two patterns.
* Or you can provide manually `node_list.json` file.
```
NODE_CLASS_MAPPINGS = {
@ -218,6 +217,7 @@ NODE_CLASS_MAPPINGS.update({
"SemSegPreprocessor": Uniformer_SemSegPreprocessor,
})
```
* Or you can provide manually `node_list.json` file.
* When you write a docstring in the header of the .py file for the Node as follows, it will be used for managing the database in the Manager.
* Currently, only the `nickname` is being used, but other parts will also be utilized in the future.
@ -364,9 +364,10 @@ When you run the `scan.sh` script:
* `Install via git url`, `pip install`
* Installation of custom nodes registered not in the `default channel`.
* Display terminal log
* Fix custom nodes
* `middle` level risky features
* Uninstall/Update/Fix custom nodes
* Uninstall/Update
* Installation of custom nodes registered in the `default channel`.
* Restore/Remove Snapshot
* Restart

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -23,7 +23,7 @@ sys.path.append(glob_path)
import cm_global
from manager_util import *
version = [2, 50, 3]
version = [2, 51, 6]
version_str = f"V{version[0]}.{version[1]}" + (f'.{version[2]}' if len(version) > 2 else '')
@ -1135,7 +1135,7 @@ async def extract_nodes_from_workflow(filepath, mode='local', channel_url='defau
if node_name in ['Reroute', 'Note']:
continue
if node_name is not None and not node_name.startswith('workflow/'):
if node_name is not None and not (node_name.startswith('workflow/') or node_name.startswith('workflow>')):
used_nodes.add(node_name)
if 'nodes' in workflow:

View File

@ -47,7 +47,9 @@ is_local_mode = args.listen.startswith('127.') or args.listen.startswith('local.
def is_allowed_security_level(level):
if level == 'high':
if level == 'block':
return False
elif level == 'high':
if is_local_mode:
return core.get_config()['security_level'].lower() in ['weak', 'normal-']
else:
@ -58,7 +60,7 @@ def is_allowed_security_level(level):
return True
async def get_risky_level(files):
async def get_risky_level(files, pip_packages):
json_data1 = await core.get_data_by_mode('local', 'custom-node-list.json')
json_data2 = await core.get_data_by_mode('cache', 'custom-node-list.json', channel_url='https://github.com/ltdrdata/ComfyUI-Manager/raw/main')
@ -70,6 +72,15 @@ async def get_risky_level(files):
if x not in all_urls:
return "high"
all_pip_packages = set()
for x in json_data1['custom_nodes'] + json_data2['custom_nodes']:
if "pip" in x:
all_pip_packages.update(x['pip'])
for p in pip_packages:
if p not in all_pip_packages:
return "block"
return "middle"
@ -791,7 +802,7 @@ async def install_custom_node(request):
json_data = await request.json()
risky_level = await get_risky_level(json_data['files'])
risky_level = await get_risky_level(json_data['files'], json_data.get('pip', []))
if not is_allowed_security_level(risky_level):
print(SECURITY_MESSAGE_GENERAL)
return web.Response(status=404)
@ -809,7 +820,14 @@ async def install_custom_node(request):
res = unzip_install(json_data['files'])
if install_type == "copy":
js_path_name = json_data['js_path'] if 'js_path' in json_data else '.'
if 'js_path' in json_data:
if '.' in json_data['js_path'] or ':' in json_data['js_path'] or json_data['js_path'].startswith('/'):
print(f"[ComfyUI Manager] An abnormal JS path has been transmitted. This could be the result of a security attack.\n{json_data['js_path']}")
return web.Response(status=400)
else:
js_path_name = json_data['js_path']
else:
js_path_name = '.'
res = copy_install(json_data['files'], js_path_name)
elif install_type == "git-clone":
@ -832,7 +850,7 @@ async def install_custom_node(request):
@PromptServer.instance.routes.post("/customnode/fix")
async def fix_custom_node(request):
if not is_allowed_security_level('middle'):
if not is_allowed_security_level('high'):
print(SECURITY_MESSAGE_MIDDLE_OR_BELOW)
return web.Response(status=403)

View File

@ -202,6 +202,40 @@ docStyle.innerHTML = `
}
`;
function is_legacy_front() {
let compareVersion = '1.2.49';
try {
const frontendVersion = window['__COMFYUI_FRONTEND_VERSION__'];
if (typeof frontendVersion !== 'string') {
return false;
}
function parseVersion(versionString) {
const parts = versionString.split('.').map(Number);
return parts.length === 3 && parts.every(part => !isNaN(part)) ? parts : null;
}
const currentVersion = parseVersion(frontendVersion);
const comparisonVersion = parseVersion(compareVersion);
if (!currentVersion || !comparisonVersion) {
return false;
}
for (let i = 0; i < 3; i++) {
if (currentVersion[i] > comparisonVersion[i]) {
return false;
} else if (currentVersion[i] < comparisonVersion[i]) {
return true;
}
}
return false;
} catch {
return true;
}
}
document.head.appendChild(docStyle);
var update_comfyui_button = null;
@ -842,24 +876,27 @@ class ManagerMenuDialog extends ComfyDialog {
});
// nickname
let badge_combo = document.createElement("select");
badge_combo.setAttribute("title", "Configure the content to be displayed on the badge at the top right corner of the node. The ID is the identifier of the node. If 'hide built-in' is selected, both unknown nodes and built-in nodes will be omitted, making them indistinguishable");
badge_combo.className = "cm-menu-combo";
badge_combo.appendChild($el('option', { value: 'none', text: 'Badge: None' }, []));
badge_combo.appendChild($el('option', { value: 'nick', text: 'Badge: Nickname' }, []));
badge_combo.appendChild($el('option', { value: 'nick_hide', text: 'Badge: Nickname (hide built-in)' }, []));
badge_combo.appendChild($el('option', { value: 'id_nick', text: 'Badge: #ID Nickname' }, []));
badge_combo.appendChild($el('option', { value: 'id_nick_hide', text: 'Badge: #ID Nickname (hide built-in)' }, []));
let badge_combo = "";
if(is_legacy_front()) {
badge_combo = document.createElement("select");
badge_combo.setAttribute("title", "Configure the content to be displayed on the badge at the top right corner of the node. The ID is the identifier of the node. If 'hide built-in' is selected, both unknown nodes and built-in nodes will be omitted, making them indistinguishable");
badge_combo.className = "cm-menu-combo";
badge_combo.appendChild($el('option', { value: 'none', text: 'Badge: None' }, []));
badge_combo.appendChild($el('option', { value: 'nick', text: 'Badge: Nickname' }, []));
badge_combo.appendChild($el('option', { value: 'nick_hide', text: 'Badge: Nickname (hide built-in)' }, []));
badge_combo.appendChild($el('option', { value: 'id_nick', text: 'Badge: #ID Nickname' }, []));
badge_combo.appendChild($el('option', { value: 'id_nick_hide', text: 'Badge: #ID Nickname (hide built-in)' }, []));
api.fetchApi('/manager/badge_mode')
.then(response => response.text())
.then(data => { badge_combo.value = data; badge_mode = data; });
api.fetchApi('/manager/badge_mode')
.then(response => response.text())
.then(data => { badge_combo.value = data; badge_mode = data; });
badge_combo.addEventListener('change', function (event) {
api.fetchApi(`/manager/badge_mode?value=${event.target.value}`);
badge_mode = event.target.value;
app.graph.setDirtyCanvas(true);
});
badge_combo.addEventListener('change', function (event) {
api.fetchApi(`/manager/badge_mode?value=${event.target.value}`);
badge_mode = event.target.value;
app.graph.setDirtyCanvas(true);
});
}
// channel
let channel_combo = document.createElement("select");
@ -945,6 +982,7 @@ class ManagerMenuDialog extends ComfyDialog {
dbl_click_policy_combo.className = "cm-menu-combo";
dbl_click_policy_combo.appendChild($el('option', { value: 'none', text: 'Double-Click: None' }, []));
dbl_click_policy_combo.appendChild($el('option', { value: 'copy-all', text: 'Double-Click: Copy All Connections' }, []));
dbl_click_policy_combo.appendChild($el('option', { value: 'copy-full', text: 'Double-Click: Copy All Connections and shape' }, []));
dbl_click_policy_combo.appendChild($el('option', { value: 'copy-input', text: 'Double-Click: Copy Input Connections' }, []));
dbl_click_policy_combo.appendChild($el('option', { value: 'possible-input', text: 'Double-Click: Possible Input Connections' }, []));
dbl_click_policy_combo.appendChild($el('option', { value: 'dual', text: 'Double-Click: Possible(left) + Copy(right)' }, []));
@ -1044,6 +1082,10 @@ class ManagerMenuDialog extends ComfyDialog {
LiteGraph.closeAllContextMenus();
const menu = new LiteGraph.ContextMenu(
[
{
title: "ComfyUI Docs",
callback: () => { window.open("https://docs.comfy.org/", "comfyui-official-manual"); },
},
{
title: "Comfy Custom Node How To",
callback: () => { window.open("https://github.com/chrisgoringe/Comfy-Custom-Node-How-To/wiki/aaa_index", "comfyui-community-manual1"); },
@ -1411,24 +1453,28 @@ app.registerExtension({
},
async nodeCreated(node, app) {
if(!node.badge_enabled) {
node.getNickname = function () { return getNickname(node, node.comfyClass.trim()) };
let orig = node.onDrawForeground;
if(!orig)
orig = node.__proto__.onDrawForeground;
if(is_legacy_front()) {
if(!node.badge_enabled) {
node.getNickname = function () { return getNickname(node, node.comfyClass.trim()) };
let orig = node.onDrawForeground;
if(!orig)
orig = node.__proto__.onDrawForeground;
node.onDrawForeground = function (ctx) {
drawBadge(node, orig, arguments)
};
node.badge_enabled = true;
node.onDrawForeground = function (ctx) {
drawBadge(node, orig, arguments)
};
node.badge_enabled = true;
}
}
},
async loadedGraphNode(node, app) {
if(!node.badge_enabled) {
const orig = node.onDrawForeground;
node.getNickname = function () { return getNickname(node, node.type.trim()) };
node.onDrawForeground = function (ctx) { drawBadge(node, orig, arguments) };
if(is_legacy_front()) {
if(!node.badge_enabled) {
const orig = node.onDrawForeground;
node.getNickname = function () { return getNickname(node, node.type.trim()) };
node.onDrawForeground = function (ctx) { drawBadge(node, orig, arguments) };
}
}
},
@ -1438,7 +1484,7 @@ app.registerExtension({
node.prototype.getExtraMenuOptions = function (_, options) {
origGetExtraMenuOptions?.apply?.(this, arguments);
if (node.category.startsWith('group nodes/')) {
if (node.category.startsWith('group nodes>')) {
options.push({
content: "Save As Component",
callback: (obj) => {

View File

@ -4,6 +4,8 @@ import { sleep, show_message } from "./common.js";
import { GroupNodeConfig, GroupNodeHandler } from "../../extensions/core/groupNode.js";
import { ComfyDialog, $el } from "../../scripts/ui.js";
const SEPARATOR = ">"
let pack_map = {};
let rpack_map = {};
@ -20,7 +22,7 @@ export function getPureName(node) {
let purename = node.comfyClass.substring(category.length+1);
return purename;
}
else if(node.comfyClass.startsWith('workflow/')) {
else if(node.comfyClass.startsWith('workflow/') || node.comfyClass.startsWith(`workflow${SEPARATOR}`)) {
return node.comfyClass.substring(9);
}
else {
@ -76,7 +78,7 @@ export async function load_components() {
let category = data.packname;
if(data.category) {
category += "/" + data.category;
category += SEPARATOR + data.category;
}
if(category == '') {
category = 'components';
@ -100,7 +102,7 @@ export async function load_components() {
try {
let category = nodeData.packname;
if(nodeData.category) {
category += "/" + nodeData.category;
category += SEPARATOR + nodeData.category;
}
if(category == '') {
category = 'components';
@ -139,7 +141,7 @@ export async function load_components() {
try {
let category = nodeData.packname;
if(nodeData.workflow.category) {
category += "/" + nodeData.category;
category += SEPARATOR + nodeData.category;
}
if(category == '') {
category = 'components';
@ -174,7 +176,7 @@ export async function load_components() {
try {
let category = nodeData.workflow.packname;
if(nodeData.workflow.category) {
category += "/" + nodeData.category;
category += SEPARATOR + nodeData.category;
}
if(category == '') {
category = 'components';
@ -234,7 +236,7 @@ async function save_as_component(node, version, author, prefix, nodename, packna
let category = body.workflow.packname;
if(body.workflow.category) {
category += "/" + body.workflow.category;
category += SEPARATOR + body.workflow.category;
}
if(category == '') {
category = 'components';
@ -266,7 +268,7 @@ async function import_component(component_name, component, mode) {
let category = component.packname;
if(component.category) {
category += "/" + component.category;
category += SEPARATOR + component.category;
}
if(category == '') {
category = 'components';
@ -403,7 +405,7 @@ function handle_import_components(components) {
}
if(cnt == 1 && last_name) {
const node = LiteGraph.createNode(`workflow/${last_name}`);
const node = LiteGraph.createNode(`workflow${SEPARATOR}${last_name}`);
node.pos = [app.canvas.graph_mouse[0], app.canvas.graph_mouse[1]];
app.canvas.graph.add(node, false);
}
@ -786,7 +788,7 @@ app.graphToPrompt = async function () {
// get used group nodes
let used_group_nodes = new Set();
for(let node of p.workflow.nodes) {
if(node.type.startsWith('workflow/')) {
if(node.type.startsWith(`workflow/`) || node.type.startsWith(`workflow${SEPARATOR}`)) {
used_group_nodes.add(node.type.substring(9));
}
}

View File

@ -1106,7 +1106,7 @@ export class CustomNodesManager {
for (let i in nodes) {
const node_type = nodes[i].type;
if(node_type.startsWith('workflow/'))
if(node_type.startsWith('workflow/') || node_type.startsWith('workflow>'))
continue;
if (!registered_nodes.has(node_type)) {

View File

@ -101,7 +101,7 @@ function connect_inputs(nearest_inputs, node) {
}
}
function node_info_copy(src, dest, connect_both) {
function node_info_copy(src, dest, connect_both, copy_shape) {
// copy input connections
for(let i in src.inputs) {
let input = src.inputs[i];
@ -142,9 +142,11 @@ function node_info_copy(src, dest, connect_both) {
}
}
dest.color = src.color;
dest.bgcolor = src.bgcolor;
dest.size = src.size;
if(copy_shape) {
dest.color = src.color;
dest.bgcolor = src.bgcolor;
dest.size = max(src.size, dest.size);
}
app.graph.afterChange();
}
@ -162,6 +164,7 @@ app.registerExtension({
switch(double_click_policy) {
case "copy-all":
case "copy-full":
case "copy-input":
{
if(node.inputs?.some(x => x.link != null) || node.outputs?.some(x => x.links != null && x.links.length > 0) )
@ -169,7 +172,11 @@ app.registerExtension({
let src_node = lookup_nearest_nodes(node);
if(src_node)
node_info_copy(src_node, node, double_click_policy == "copy-all");
{
let both_connection = double_click_policy != "copy-input";
let copy_shape = double_click_policy == "copy-full";
node_info_copy(src_node, node, both_connection, copy_shape);
}
}
break;
case "possible-input":

View File

@ -863,7 +863,7 @@
"description": "The encoder part of https://huggingface.co/google/t5-v1_1-xxl, used with SD3 and Flux1",
"reference": "https://huggingface.co/mcmonkey/google_t5-v1_1-xxl_encoderonly",
"filename": "google_t5-v1_1-xxl_encoderonly-fp16.safetensors",
"url": "https://huggingface.co/mcmonkey/google_t5-v1_1-xxl_encoderonly/resolve/main/pytorch_model.safetensors",
"url": "https://huggingface.co/mcmonkey/google_t5-v1_1-xxl_encoderonly/resolve/main/model.safetensors",
"size": "10.1GB"
},
{
@ -3446,6 +3446,50 @@
"url": "https://huggingface.co/Shakker-Labs/FLUX.1-dev-ControlNet-Union-Pro/resolve/main/diffusion_pytorch_model.safetensors",
"size": "6.6GB"
},
{
"name": "Shakker-Labs/FLUX.1-dev-ControlNet-Union-Pro (fp8_e4m3fn) by Kijai",
"type": "controlnet",
"base": "FLUX.1",
"save_path": "controlnet/FLUX.1",
"description": "FLUX.1 [Dev] Union Controlnet. Supports Canny, Tile, Depth, Blur, Pose, Gray, Low Quality\nVersion quantized to fp8_e4m3fn by Kijai",
"reference": "https://huggingface.co/Kijai/flux-fp8",
"filename": "flux_shakker_labs_union_pro-fp8_e4m3fn.safetensors",
"url": "https://huggingface.co/Kijai/flux-fp8/resolve/main/flux_shakker_labs_union_pro-fp8_e4m3fn.safetensors",
"size": "3.3GB"
},
{
"name": "jasperai/FLUX.1-dev-Controlnet-Upscaler",
"type": "controlnet",
"base": "FLUX.1",
"save_path": "controlnet/FLUX.1/jasperai-dev-Upscaler",
"description": "This is Flux.1-dev ControlNet for low resolution images developed by Jasper research team.",
"reference": "https://huggingface.co/jasperai/Flux.1-dev-Controlnet-Upscaler",
"filename": "diffusion_pytorch_model.safetensors",
"url": "https://huggingface.co/jasperai/Flux.1-dev-Controlnet-Upscaler/resolve/main/diffusion_pytorch_model.safetensors",
"size": "3.58GB"
},
{
"name": "jasperai/FLUX.1-dev-Controlnet-Depth",
"type": "controlnet",
"base": "FLUX.1",
"save_path": "controlnet/FLUX.1/jasperai-dev-Depth",
"description": "This is Flux.1-dev ControlNet for Depth map developed by Jasper research team.",
"reference": "https://huggingface.co/jasperai/Flux.1-dev-Controlnet-Depth",
"filename": "diffusion_pytorch_model.safetensors",
"url": "https://huggingface.co/jasperai/Flux.1-dev-Controlnet-Depth/resolve/main/diffusion_pytorch_model.safetensors",
"size": "3.58GB"
},
{
"name": "jasperai/Flux.1-dev-Controlnet-Surface-Normals",
"type": "controlnet",
"base": "FLUX.1",
"save_path": "controlnet/FLUX.1/jasperai-dev-Surface-Normals",
"description": "This is Flux.1-dev ControlNet for Surface Normals map developed by Jasper research team.",
"reference": "https://huggingface.co/jasperai/Flux.1-dev-Controlnet-Surface-Normals",
"filename": "diffusion_pytorch_model.safetensors",
"url": "https://huggingface.co/jasperai/Flux.1-dev-Controlnet-Surface-Normals/resolve/main/diffusion_pytorch_model.safetensors",
"size": "3.58GB"
},
{
"name": "xinsir/ControlNet++: All-in-one ControlNet",
@ -3888,7 +3932,7 @@
"name": "city96/flux1-dev-F16.gguf",
"type": "diffusion_model",
"base": "FLUX.1",
"save_path": "diffusion_model/FLUX1",
"save_path": "diffusion_models/FLUX1",
"description": "FLUX.1 [Dev] Diffusion model (f16/.gguf)",
"reference": "https://huggingface.co/city96/FLUX.1-dev-gguf",
"filename": "flux1-dev-F16.gguf",
@ -4138,6 +4182,41 @@
"filename": "seggpt_vit_large.pth",
"url": "https://huggingface.co/BAAI/SegGPT/resolve/main/seggpt_vit_large.pth",
"size": "1.48GB"
},
{
"name": "ViT-L-14-TEXT-detail-improved-hiT-GmP-HF.safetensors [Long CLIP L]",
"type": "clip",
"base": "clip",
"save_path": "clip/long_clip",
"description": "Greatly improved TEXT + Detail (as CLIP-L for Flux.1)",
"reference": "https://huggingface.co/zer0int",
"filename": "ViT-L-14-TEXT-detail-improved-hiT-GmP-HF.safetensors",
"url": "https://huggingface.co/zer0int/CLIP-GmP-ViT-L-14/resolve/main/ViT-L-14-TEXT-detail-improved-hiT-GmP-HF.safetensors",
"size": "931MB"
},
{
"name": "ViT-L-14-TEXT-detail-improved-hiT-GmP-HF.safetensors [Long CLIP L]",
"type": "clip",
"base": "clip",
"save_path": "clip/long_clip",
"description": "Greatly improved TEXT + Detail (as CLIP-L for Flux.1)",
"reference": "https://huggingface.co/zer0int",
"filename": "ViT-L-14-TEXT-detail-improved-hiT-GmP-TE-only-HF.safetensors",
"url": "https://huggingface.co/zer0int/CLIP-GmP-ViT-L-14/resolve/main/ViT-L-14-TEXT-detail-improved-hiT-GmP-TE-only-HF.safetensors",
"size": "323MB"
},
{
"name": "Depth Pro model",
"type": "depth-pro",
"base": "depth-pro",
"save_path": "depth/ml-depth-pro",
"description": "Depth pro model for [a/ComfyUI-Depth-Pro](https://github.com/spacepxl/ComfyUI-Depth-Pro)",
"reference": "https://huggingface.co/spacepxl/ml-depth-pro",
"filename": "depth_pro.fp16.safetensors",
"url": "https://huggingface.co/spacepxl/ml-depth-pro/resolve/main/depth_pro.fp16.safetensors",
"size": "1.9GB"
}
]
}

View File

@ -11,7 +11,319 @@
{
"author": "SSsnap",
"title": "Snap Processing for Comfyui",
"reference": "https://github.com/SS-snap/ComfyUI-Snap_Processing",
"files": [
"https://github.com/SS-snap/ComfyUI-Snap_Processing"
],
"install_type": "git-clone",
"description": "for preprocessing images, presented in a visual way. It also calculates the corresponding image area."
},
{
"author": "void15700",
"title": "VoidCustomNodes",
"reference": "https://github.com/void15700/VoidCustomNodes",
"files": [
"https://github.com/void15700/VoidCustomNodes"
],
"install_type": "git-clone",
"description": "NODES:Prompt Parser, String Combiner"
},
{
"author": "wilzamguerrero",
"title": "Comfyui-DownZ [UNSAFE]",
"reference": "https://github.com/wilzamguerrero/Comfyui-DownZ",
"files": [
"https://github.com/wilzamguerrero/Comfyui-DownZ"
],
"install_type": "git-clone",
"description": "NODES:Download Z, Compress Z, Move Z, Delete Z, Rename Z, Create Z"
},
{
"author": "Elaine-chennn",
"title": "ComfyUI Overlay Media Node [WIP]",
"reference": "https://github.com/Elaine-chennn/comfyui-overlay-media",
"files": [
"https://github.com/Elaine-chennn/comfyui-overlay-media"
],
"install_type": "git-clone",
"description": "NODES:Overlay Media Node, Upload Media.\nNOT WORKING"
},
{
"author": "monate0615",
"title": "Affine Transform ComfyUI Node",
"reference": "https://github.com/monate0615/ComfyUI-Affine-Transform",
"files": [
"https://github.com/monate0615/ComfyUI-Affine-Transform"
],
"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]",
"reference": "https://github.com/ruka-game/rukalib_comfyui",
"files": [
"https://github.com/ruka-game/rukalib_comfyui"
],
"install_type": "git-clone",
"description": "NODES: Ruka Prompt Enhancer, Ruka Debug Probe.\nMy utilities for comfy (WIP / ollama is required for LLM nodes)"
},
{
"author": "MythicalChu",
"title": "ComfyUI-APG_ImYourCFGNow",
"reference": "https://github.com/MythicalChu/ComfyUI-APG_ImYourCFGNow",
"files": [
"https://github.com/MythicalChu/ComfyUI-APG_ImYourCFGNow"
],
"install_type": "git-clone",
"description": "Use this node like a RescaleCFG node, ... modelIn -> ThisNode -> ModelOut ... -> KSampler\n'scale' acts like your CFG, your CFG doesn't do anything anymore white this node is active. See paper [a/https://arxiv.org/pdf/2410.02416](https://arxiv.org/pdf/2410.02416) for instructions about the other parameters. (Pages 20-21)"
},
{
"author": "okg21",
"title": "VLLMVisionChatNode",
"reference": "https://github.com/okg21/VLLMVisionChatNode",
"files": [
"https://github.com/okg21/VLLMVisionChatNode/raw/refs/heads/main/VLLMVisionChatNode.py"
],
"pip": ["openai", "numpy"],
"install_type": "copy",
"description": "This platform extension provides ZhipuAI nodes, enabling you to configure a workflow for online video generation."
},
{
"author": "jetchopper",
"title": "ComfyUI-GeneraNodes",
"id": "genera",
"reference": "https://github.com/evolox/ComfyUI-GeneraNodes",
"files": [
"https://github.com/evolox/ComfyUI-GeneraNodes"
],
"install_type": "git-clone",
"description": "Genera custom nodes and extensions"
},
{
"author": "HavocsCall",
"title": "comfyui_HavocsCall_Custom_Nodes",
"reference": "https://github.com/HavocsCall/comfyui_HavocsCall_Custom_Nodes",
"files": [
"https://github.com/HavocsCall/comfyui_HavocsCall_Custom_Nodes"
],
"install_type": "git-clone",
"description": "NODES:Prompt Combiner, Sampler Config, Text Box, Int to Float, Clip Switch, Conditioning Switch, Image Switch, Latent Switch, Model Switch, String Switch, VAE Switch"
},
{
"author": "mfg637",
"title": "ComfyUI-ScheduledGuider-Ext",
"reference": "https://github.com/mfg637/ComfyUI-ScheduledGuider-Ext",
"files": [
"https://github.com/mfg637/ComfyUI-ScheduledGuider-Ext"
],
"install_type": "git-clone",
"description": "NODES:SheduledCFGGuider, CosineScheduler, InvertSigmas, ConcatSigmas."
},
{
"author": "netanelben",
"title": "comfyui-photobooth-customnode",
"reference": "https://github.com/netanelben/comfyui-photobooth-customnode",
"files": [
"https://github.com/netanelben/comfyui-photobooth-customnode"
],
"install_type": "git-clone",
"description": "comfyui-photobooth-customnode"
},
{
"author": "netanelben",
"title": "comfyui-text2image-customnode",
"reference": "https://github.com/netanelben/comfyui-text2image-customnode",
"files": [
"https://github.com/netanelben/comfyui-text2image-customnode"
],
"install_type": "git-clone",
"description": "comfyui-text2image-customnode"
},
{
"author": "netanelben",
"title": "comfyui-camera2image-customnode",
"reference": "https://github.com/netanelben/comfyui-camera2image-customnode",
"files": [
"https://github.com/netanelben/comfyui-camera2image-customnode"
],
"install_type": "git-clone",
"description": "comfyui-camera2image-customnode"
},
{
"author": "netanelben",
"title": "comfyui-image2image-customnode",
"reference": "https://github.com/netanelben/comfyui-image2image-customnode",
"files": [
"https://github.com/netanelben/comfyui-image2image-customnode"
],
"install_type": "git-clone",
"description": "comfyui-image2image-customnode"
},
{
"author": "JayLyu",
"title": "ComfyUI_BaiKong_Node",
"id": "baikong",
"reference": "https://github.com/JayLyu/ComfyUI_BaiKong_Node",
"files": [
"https://github.com/JayLyu/ComfyUI_BaiKong_Node"
],
"install_type": "git-clone",
"description": "Nodes for advanced color manipulation and image processing: BK Img To Color, BK Color Selector, BK Color Contrast, BK Color Limit, BK Color Luminance, BK Gradient Image, and BK Image Aspect Filter.\n[w/requirements.txt is broken.]"
},
{
"author": "ShmuelRonen",
"title": "ComfyUI-FreeMemory",
"reference": "https://github.com/ShmuelRonen/ComfyUI-FreeMemory",
"files": [
"https://github.com/ShmuelRonen/ComfyUI-FreeMemory"
],
"install_type": "git-clone",
"description": "ComfyUI-FreeMemory is a custom node extension for ComfyUI that provides advanced memory management capabilities within your image generation workflows."
},
{
"author": "ZHO-ZHO-ZHO",
"title": "ComfyUI Llama 3.1 [WIP]",
"reference": "https://github.com/ZHO-ZHO-ZHO/ComfyUI-Llama-3-2",
"files": [
"https://github.com/ZHO-ZHO-ZHO/ComfyUI-Llama-3-2"
],
"install_type": "git-clone",
"description": "Using Llama-3-1 in ComfyUI"
},
{
"author": "netanelben",
"title": "comfyui-text2image-customnode [WIP]",
"reference": "https://github.com/netanelben/comfyui-text2image-customnode",
"files": [
"https://github.com/netanelben/comfyui-text2image-customnode"
],
"install_type": "git-clone",
"description": "text2image web extension"
},
{
"author": "leeguandong",
"title": "ComfyUI_AliControlnetInpainting [WIP]",
"reference": "https://github.com/leeguandong/ComfyUI_AliControlnetInpainting",
"files": [
"https://github.com/leeguandong/ComfyUI_AliControlnetInpainting"
],
"install_type": "git-clone",
"description": "ComfyUI nodes to use AliControlnetInpainting"
},
{
"author": "jordancoult",
"title": "ComfyUI_HelpfulNodes",
"reference": "https://github.com/jordancoult/ComfyUI_HelpfulNodes",
"files": [
"https://github.com/jordancoult/ComfyUI_HelpfulNodes"
],
"install_type": "git-clone",
"description": "NODES: Prep Crop Around Keypoints"
},
{
"author": "ashishsaini",
"title": "comfyui_segformer_b2_sleeves",
"reference": "https://github.com/ashishsaini/comfyui-segment-clothing-sleeves",
"files": [
"https://github.com/ashishsaini/comfyui-segment-clothing-sleeves"
],
"install_type": "git-clone",
"description": "NODES:segformer_b2_sleeves"
},
{
"author": "io-club",
"title": "ComfyUI-LuminaNext [WIP]",
"reference": "https://github.com/io-club/ComfyUI-LuminaNext",
"files": [
"https://github.com/io-club/ComfyUI-LuminaNext"
],
"install_type": "git-clone",
"description": "NODES: GemmaClipLoader"
},
{
"author": "shadowcz007",
"title": "Comfyui-EzAudio",
"reference": "https://github.com/shadowcz007/Comfyui-EzAudio",
"files": [
"https://github.com/shadowcz007/Comfyui-EzAudio"
],
"install_type": "git-clone",
"description": "NODES: EZ Generate Audio, EZ Load Model\nNOTE: The files in the repo are not organized."
},
{
"author": "neo0801",
"title": "my-comfy-node",
"reference": "https://github.com/neo0801/my-comfy-node",
"files": [
"https://github.com/neo0801/my-comfy-node"
],
"install_type": "git-clone",
"description": "NODES:Deep Mosaic Get Image Mosaic Mask, Deep Mosaic Get Video Mosaic Mask, Deep Mosaic Remove Image Mosaic, Deep Mosaic Remove Video Mosaic"
},
{
"author": "nikkuexe",
"title": "List Data Helper Nodes",
"reference": "https://github.com/paulhoux/Smart-Prompting",
"files": [
"https://github.com/paulhoux/Smart-Prompting"
],
"install_type": "git-clone",
"description": "Custom nodes for ComfyUI, allowing you to more easily manipulate text and create good prompts.[w/The use of outdated front extension techniques results in remnants being left behind during uninstallation.]"
},
{
"author": "nikkuexe",
"title": "List Data Helper Nodes",
"reference": "https://github.com/nikkuexe/ComfyUI-ListDataHelpers",
"files": [
"https://github.com/nikkuexe/ComfyUI-ListDataHelpers"
],
"install_type": "git-clone",
"description": "A set of custom nodes for handling lists in ComfyUI."
},
{
"author": "Fannovel16",
"title": "ComfyUI-AppIO",
"reference": "https://github.com/Fannovel16/ComfyUI-AppIO",
"files": [
"https://github.com/Fannovel16/ComfyUI-AppIO"
],
"install_type": "git-clone",
"description": "NODES:AppIO_StringInput, AppIO_ImageInput, AppIO_StringOutput, AppIO_ImageOutput"
},
{
"author": "wilzamguerrero",
"title": "Comfyui-DownZ",
"reference": "https://github.com/wilzamguerrero/Comfyui-DownZ",
"files": [
"https://github.com/wilzamguerrero/Comfyui-DownZ"
],
"install_type": "git-clone",
"description": "NODES:Download Z, Compress Z, Move Z"
},
{
"author": "SoftMeng",
"title": "ComfyUI-PIL",
"reference": "https://github.com/SoftMeng/ComfyUI-PIL",
"files": [
"https://github.com/SoftMeng/ComfyUI-PIL"
],
"install_type": "git-clone",
"description": "PIL Nodes"
},
{
"author": "seancheung",
"title": "comfyui-creative-nodes",
@ -52,16 +364,6 @@
"install_type": "git-clone",
"description": "NODES:IGT Simple Tiles Calc"
},
{
"author": "jazhang00",
"title": "ComfyUI Node for Slicedit",
"reference": "https://github.com/jazhang00/ComfyUI-Slicedit",
"files": [
"https://github.com/jazhang00/ComfyUI-Slicedit"
],
"install_type": "git-clone",
"description": "Slicedit main page: [a/https://matankleiner.github.io/slicedit/](https://matankleiner.github.io/slicedit/). Use Slicedit with ComfyUI."
},
{
"author": "Ryota",
"title": "Ryota's Nodes",
@ -313,26 +615,6 @@
"install_type": "git-clone",
"description": "Browse to this endpoint to reload custom nodes for more streamlined development:\nhttp://127.0.0.1:8188/node_dev/reload/<module_name>"
},
{
"author": "Weixuanf",
"title": "ComfyUI extra model folder helper [WIP]",
"reference": "https://github.com/Weixuanf/extra-model-helper",
"files": [
"https://github.com/Weixuanf/extra-model-helper"
],
"install_type": "git-clone",
"description": "this will automaticlaly read the subfolders like 'checkpoints', 'loras' under the extra model folder path you specify in extra_model_paths.yaml and add them to folder paths, so you don't need to define those subfolders one by one.\nNOTE: invalid pyproject.toml"
},
{
"author": "Weixuanf",
"title": "ComfyUI File Manager for nodecafe.co [WIP]",
"reference": "https://github.com/Weixuanf/nodecafe-file-manager",
"files": [
"https://github.com/Weixuanf/nodecafe-file-manager"
],
"install_type": "git-clone",
"description": "To view and download files in ComfyUI\nNOTE: invalid pyproject.toml"
},
{
"author": "sebord",
"title": "ComfyUI-LMCQ [WIP]",
@ -343,16 +625,6 @@
"install_type": "git-clone",
"description": "ComfyUI small node toolkit, this toolkit is mainly to update some practical small nodes, to make a contribution to the comfyui ecosystem, PS: 'LMCQ' is the abbreviation of the team name\nNOTE: The files in the repo are not organized, which may lead to update issues."
},
{
"author": "logtd",
"title": "ComfyUI-Fluxtapoz [WIP]",
"reference": "https://github.com/logtd/ComfyUI-Fluxtapoz",
"files": [
"https://github.com/logtd/ComfyUI-Fluxtapoz"
],
"install_type": "git-clone",
"description": "A set of nodes for editing images using Flux in ComfyUI"
},
{
"author": "ChrisColeTech",
"title": "ComfyUI-Get-Random-File [UNSAFE]",

View File

@ -211,6 +211,7 @@
"ENHivisionParamsNode",
"HivisionLayOutNode",
"HivisionNode",
"LaterProcessNode",
"ZHHivisionParamsNode"
],
{
@ -265,6 +266,7 @@
"> Sharpen",
"> Text",
"> Text Combine",
"> Text Count",
"> Text Pick Line by Index",
"> Text Pick Random Line",
"> Text Random Weights",
@ -300,9 +302,13 @@
[
"Add Human Styler",
"Convert Monochrome",
"Mask Aligned bbox for Inpainting",
"Mask Square bbox for Inpainting",
"One Image Compare",
"RT4KSR Loader",
"RandomPromptStyler",
"Save Log Info",
"Three Image Compare",
"Upscale RT4SR"
],
{
@ -435,12 +441,25 @@
"DevToolsDeprecatedNode",
"DevToolsErrorRaiseNode",
"DevToolsErrorRaiseNodeWithMessage",
"DevToolsExperimentalNode"
"DevToolsExperimentalNode",
"DevToolsLongComboDropdown",
"DevToolsNodeWithForceInput",
"DevToolsNodeWithOnlyOptionalInput",
"DevToolsNodeWithOptionalInput",
"DevToolsNodeWithOutputList"
],
{
"title_aux": "ComfyUI_devtools [WIP]"
}
],
"https://github.com/ComfyUI-Workflow/ComfyUI-OpenAI": [
[
"OpenAI.CaptionImage"
],
{
"title_aux": "ComfyUI OpenAI Nodes"
}
],
"https://github.com/DeTK/ComfyUI-Switch": [
[
"NodeSwitch"
@ -457,6 +476,15 @@
"title_aux": "ComfyUI_LineBreakInserter"
}
],
"https://github.com/Elaine-chennn/comfyui-overlay-media": [
[
"OverlayMediaNode",
"VideoUpload"
],
{
"title_aux": "ComfyUI Overlay Media Node [WIP]"
}
],
"https://github.com/Elawphant/ComfyUI-MusicGen": [
[
"AudioLoader",
@ -491,6 +519,20 @@
"title_aux": "Conditioning-token-experiments-for-ComfyUI"
}
],
"https://github.com/Fannovel16/ComfyUI-AppIO": [
[
"AppIO_FitResizeImage",
"AppIO_ImageInput",
"AppIO_ImageInputFromID",
"AppIO_ImageOutput",
"AppIO_IntegerInput",
"AppIO_StringInput",
"AppIO_StringOutput"
],
{
"title_aux": "ComfyUI-AppIO"
}
],
"https://github.com/Fucci-Mateo/ComfyUI-Airtable": [
[
"Push pose to Airtable"
@ -559,6 +601,30 @@
"title_aux": "GH Tools for ComfyUI"
}
],
"https://github.com/HavocsCall/comfyui_HavocsCall_Custom_Nodes": [
[
"Clip Switch",
"Conditioning Switch",
"Float Selector",
"Float to Int",
"Float to String",
"Image Switch",
"Int Selector",
"Int to Float",
"Int to String",
"Latent Switch",
"Model Switch",
"Prompt Combiner",
"Sampler Config",
"String Switch",
"Text Box",
"VAE Switch",
"menus"
],
{
"title_aux": "comfyui_HavocsCall_Custom_Nodes"
}
],
"https://github.com/IgPoly/ComfyUI-igTools": [
[
"IGT_SimpleTilesCalc"
@ -613,22 +679,27 @@
"ApplyVoiceConversion",
"CombineVideos",
"ImAppendFreeChatAction",
"ImAppendImageActionNode",
"ImAppendQuickbackNode",
"ImAppendQuickbackVideoNode",
"ImAppendVideoNode",
"ImApplyWav2lip",
"ImDumpEntity",
"ImDumpNode",
"ImLoadPackage",
"ImNodeTitleOverride",
"LoadPackage",
"ImSetActionKeywordMapping",
"MergeNode",
"NewNode",
"Node2String",
"OllamaChat",
"SaveImagePath",
"SaveToDirectory",
"SetEvent",
"SetNodeMapping",
"SetProperties",
"String2Node",
"TurnOnOffNodeOnEnter",
"batchNodes",
"grepNodeByText",
"mergeEntityAndPointer",
@ -782,6 +853,14 @@
"title_aux": "CheckProgress [WIP]"
}
],
"https://github.com/MythicalChu/ComfyUI-APG_ImYourCFGNow": [
[
"APG_ImYourCFGNow"
],
{
"title_aux": "ComfyUI-APG_ImYourCFGNow"
}
],
"https://github.com/NeuralNotW0rk/ComfyUI-Waveform-Extensions/raw/main/EXT_VariationUtils.py": [
[
"BatchToList",
@ -826,6 +905,16 @@
"title_aux": "ComfyUI-QuasimondoNodes [WIP]"
}
],
"https://github.com/SS-snap/ComfyUI-Snap_Processing": [
[
"AreaCalculator",
"PyQtCanvasNode",
"Snapload"
],
{
"title_aux": "Snap Processing for Comfyui"
}
],
"https://github.com/SadaleNet/ComfyUI-Prompt-To-Prompt": [
[
"CLIPTextEncodePromptToPrompt",
@ -900,6 +989,27 @@
"title_aux": "ComfyUI-Shinsplat [UNSAFE]"
}
],
"https://github.com/ShmuelRonen/ComfyUI-FreeMemory": [
[
"FreeMemoryImage",
"FreeMemoryLatent",
"FreeMemoryModel"
],
{
"title_aux": "ComfyUI-FreeMemory"
}
],
"https://github.com/SoftMeng/ComfyUI-PIL": [
[
"PIL Effects (Mexx)",
"PIL Merge Image (Mexx)",
"PIL Remove Black Dots (Mexx)",
"PIL TITLE (Mexx)"
],
{
"title_aux": "ComfyUI-PIL"
}
],
"https://github.com/Soppatorsk/comfyui_img_to_ascii": [
[
"Img_to_ASCII"
@ -1072,6 +1182,14 @@
"title_aux": "Dream Project Video Batches [WIP]"
}
],
"https://github.com/ashishsaini/comfyui-segment-clothing-sleeves": [
[
"segformer_b2_sleeves"
],
{
"title_aux": "comfyui_segformer_b2_sleeves"
}
],
"https://github.com/baicai99/ComfyUI-FrameSkipping": [
[
"FrameSelector",
@ -1267,6 +1385,7 @@
"ControlNetApply",
"ControlNetApplyAdvanced",
"ControlNetApplySD3",
"ControlNetInpaintingAliMamaApply",
"ControlNetLoader",
"CropMask",
"DiffControlNetLoader",
@ -1317,6 +1436,7 @@
"KSamplerAdvanced",
"KSamplerSelect",
"KarrasScheduler",
"LaplaceScheduler",
"LatentAdd",
"LatentBatch",
"LatentBatchSeedBehavior",
@ -1541,8 +1661,13 @@
],
"https://github.com/dfl/comfyui-stylegan": [
[
"StyleGAN Generator",
"StyleGAN ModelLoader"
"BatchAverageStyleGANLatents",
"BlendStyleGANLatents",
"GenerateStyleGANLatent",
"LoadStyleGAN",
"StyleGANInversion",
"StyleGANLatentFromBatch",
"StyleGANSampler"
],
{
"title_aux": "comfyui-stylegan"
@ -1637,6 +1762,15 @@
"title_aux": "guidance_interval"
}
],
"https://github.com/evolox/ComfyUI-GeneraNodes": [
[
"Genera.BatchTester",
"Genera.GCPStorageNode"
],
{
"title_aux": "ComfyUI-GeneraNodes"
}
],
"https://github.com/flowtyone/comfyui-flowty-lcm": [
[
"LCMSampler"
@ -1689,6 +1823,8 @@
"Tools:Image2video",
"Tools:LoadAudioUrl",
"Tools:PreviewVideo",
"Tools:SetString",
"Tools:SetValue",
"Tools:VideoWatermark"
],
{
@ -1731,7 +1867,9 @@
],
"https://github.com/hgabha/WWAA-CustomNodes": [
[
"WWAA-LineCount"
"WWAA-BuildString",
"WWAA-LineCount",
"WWAA_DitherNode"
],
{
"title_aux": "WWAA-CustomNodes"
@ -1870,20 +2008,12 @@
"title_aux": "ie-comfyui-color-nodes"
}
],
"https://github.com/jazhang00/ComfyUI-Slicedit": [
"https://github.com/io-club/ComfyUI-LuminaNext": [
[
"BackgroundScaler",
"CalculateNormalsFromImages",
"DetailTransfer",
"ICLightConditioning",
"LightSource",
"LoadAndApplyICLightUnet",
"LoadHDRImage",
"SaveImageWebsocket",
"VideoEffects"
"GemmaClipLoader"
],
{
"title_aux": "ComfyUI Node for Slicedit"
"title_aux": "ComfyUI-LuminaNext [WIP]"
}
],
"https://github.com/jgbrblmd/ComfyUI-ComfyFluxSize": [
@ -1996,6 +2126,14 @@
"title_aux": "jn_node_suite_comfyui [WIP]"
}
],
"https://github.com/jordancoult/ComfyUI_HelpfulNodes": [
[
"JCo_CropAroundKPS"
],
{
"title_aux": "ComfyUI_HelpfulNodes"
}
],
"https://github.com/jp0215/comfyUI_padding-resize_node/raw/main/PaddingNode.py": [
[
"function"
@ -2168,8 +2306,11 @@
"KwtoolsetGetHipMasktest",
"KwtoolsetGetImageSize",
"KwtoolsetGrowMaskPlus",
"KwtoolsetImageSelect",
"KwtoolsetLoadCheckpointsBatch",
"KwtoolsetLoraLoaderwithpreview",
"KwtoolsetMaskAdd",
"KwtoolsetModelSelect",
"LatentMatch"
],
{
@ -2184,6 +2325,23 @@
"title_aux": "ssd-1b-comfyui"
}
],
"https://github.com/leeguandong/ComfyUI_AliControlnetInpainting": [
[
"AliInpaintingsampler",
"EcomXL_AddFG",
"EcomXL_Condition",
"EcomXL_Controlnet_ModelLoader",
"EcomXL_LoadImage",
"EcomXL_SDXL_Inpaint_ModelLoader",
"Flux_Controlnet_ModelLoader",
"Flux_Inpainting_ModelLoader",
"SD3_Controlnet_ModelLoader",
"SD3_Inpainting_ModelLoader"
],
{
"title_aux": "ComfyUI_AliControlnetInpainting [WIP]"
}
],
"https://github.com/leoleelxh/ComfyUI-MidjourneyNode-leoleexh": [
[
"MidjourneyGenerateNode",
@ -2216,6 +2374,10 @@
],
"https://github.com/logtd/ComfyUI-Fluxtapoz": [
[
"AddFluxFlow",
"ApplyFluxRaveAttention",
"ApplyRefFlux",
"ConfigureRefFlux",
"FluxDeGuidance",
"FluxInverseSampler",
"InFluxFlipSigmas",
@ -2273,12 +2435,14 @@
],
"https://github.com/lu64k/SK-Nodes": [
[
"Ask LLM",
"Image Select",
"Load LLM",
"OpenAI DAlle Node",
"Image Tracing Node",
"Load_Nemotron",
"Natural Saturation",
"OpenAI Text Node",
"SK Random File Name",
"SK Text_String"
"SK Text_String",
"Tone Layer Quantize",
"grey_scale blend"
],
{
"title_aux": "SK-Nodes"
@ -2346,6 +2510,17 @@
"title_aux": "ComfyUI-Lygia"
}
],
"https://github.com/mfg637/ComfyUI-ScheduledGuider-Ext": [
[
"ConcatSigmas",
"CosineScheduler",
"InvertSigmas",
"SheduledCFGGuider"
],
{
"title_aux": "ComfyUI-ScheduledGuider-Ext"
}
],
"https://github.com/mikeymcfish/FishTools": [
[
"AnaglyphCreator",
@ -2362,6 +2537,14 @@
"title_aux": "LaserCutterFull and Deptherize Nodes"
}
],
"https://github.com/monate0615/ComfyUI-Affine-Transform": [
[
"AffineTransform"
],
{
"title_aux": "Affine Transform ComfyUI Node"
}
],
"https://github.com/mut-ex/comfyui-gligengui-node": [
[
"GLIGEN_GUI"
@ -2378,6 +2561,17 @@
"title_aux": "ComfyUI-TextOverlay"
}
],
"https://github.com/neo0801/my-comfy-node": [
[
"DeepMosaicGetImageMosaicMask",
"DeepMosaicGetVideoMosaicMask",
"DeepMosaicRemoveImageMosaic",
"DeepMosaicRemoveVideoMosaic"
],
{
"title_aux": "my-comfy-node"
}
],
"https://github.com/neuratech-ai/ComfyUI-MultiGPU": [
[
"CLIPLoaderMultiGPU",
@ -2426,6 +2620,16 @@
"title_aux": "ComfyUI-nidefawl [UNSAFE]"
}
],
"https://github.com/nikkuexe/ComfyUI-ListDataHelpers": [
[
"List Difference",
"VHS Output Filter",
"VHS_VideoOutputFilter"
],
{
"title_aux": "List Data Helper Nodes"
}
],
"https://github.com/nkchocoai/ComfyUI-PromptUtilities": [
[
"PromptUtilitiesConstString",
@ -2444,6 +2648,14 @@
"title_aux": "ComfyUI-PromptUtilities"
}
],
"https://github.com/okg21/VLLMVisionChatNode/raw/refs/heads/main/VLLMVisionChatNode.py": [
[
"VLLMVisionChatNode"
],
{
"title_aux": "VLLMVisionChatNode"
}
],
"https://github.com/oyvindg/ComfyUI-TrollSuite": [
[
"BinaryImageMask",
@ -2488,6 +2700,22 @@
"title_aux": "ComfyUI-ppm"
}
],
"https://github.com/paulhoux/Smart-Prompting": [
[
"SaveImageWithPrefix",
"TextAppend",
"TextCharacterSelector",
"TextEncodeReusable",
"TextFile",
"TextNegatives",
"TextSearchReplace",
"TextString",
"TextStyleSelector"
],
{
"title_aux": "List Data Helper Nodes"
}
],
"https://github.com/poisenbery/NudeNet-Detector-Provider": [
[
"NudeNetDetectorProvider"
@ -2536,6 +2764,15 @@
"title_aux": "ComfyUI-ODE"
}
],
"https://github.com/ruka-game/rukalib_comfyui": [
[
"RukaDebugProbe",
"RukaPromptEnhancer"
],
{
"title_aux": "ComfyUI RukaLib [WIP]"
}
],
"https://github.com/sdfxai/SDFXBridgeForComfyUI": [
[
"SDFXClipTextEncode"
@ -2578,6 +2815,15 @@
"title_aux": "ComfyUI-PuLID [TEST]"
}
],
"https://github.com/shadowcz007/Comfyui-EzAudio": [
[
"EZGenerateAudioNode",
"EZLoadModelNode"
],
{
"title_aux": "Comfyui-EzAudio"
}
],
"https://github.com/shadowcz007/comfyui-CLIPSeg": [
[
"CLIPSeg_",
@ -2815,6 +3061,15 @@
"title_aux": "ComfyUI-clip-interrogator [WIP]"
}
],
"https://github.com/void15700/VoidCustomNodes": [
[
"Prompt Parser",
"String Combiner"
],
{
"title_aux": "VoidCustomNodes"
}
],
"https://github.com/walterFeng/ComfyUI-Image-Utils": [
[
"Calculate Image Brightness",
@ -2838,6 +3093,19 @@
"title_aux": "ComfyUI-Unload-Models"
}
],
"https://github.com/wilzamguerrero/Comfyui-DownZ": [
[
"CompressFolderNode",
"CreateZNode",
"DeleteZNode",
"DownloadFileNode",
"MoveZNode",
"RenameZNode"
],
{
"title_aux": "Comfyui-DownZ"
}
],
"https://github.com/wormley/comfyui-wormley-nodes": [
[
"CheckpointVAELoaderSimpleText",

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,15 @@
{
"custom_nodes": [
{
"author": "jags111",
"title": "NyaamZ/ComfyUI-Long-CLIP",
"reference": "https://github.com/NyaamZ/efficiency-nodes-ED",
"files": [
"https://github.com/NyaamZ/efficiency-nodes-ED"
],
"install_type": "git-clone",
"description": "This forked repo supports efficiency-nodes-comfyui. Additional features."
},
{
"author": "SeaArtLab",
"title": "zer0int/ComfyUI-Long-CLIP",

View File

@ -10,6 +10,90 @@
},
{
"author": "DannyStone1999",
"title": "ComfyUI-Depth2Mask [REMOVED]",
"reference": "https://github.com/DannyStone1999/ComfyUI-Depth2Mask",
"files": [
"https://github.com/DannyStone1999/ComfyUI-Depth2Mask/raw/main/Depth2Mask.py"
],
"install_type": "copy",
"description": "Nodes:Depth2Mask"
},
{
"author": "syaofox",
"title": "ComfyUI_FoxTools [REMOVED]",
"reference": "https://github.com/syaofox/ComfyUI_FoxTools",
"files": [
"https://github.com/syaofox/ComfyUI_FoxTools"
],
"install_type": "git-clone",
"description": "Nodes:BatchImageFromList, Load Face Occlusion Model, Create Face Mask, Simple FaceAlign, Cacul FaceAlign, Gen Blurbord, Face Align, Face Rotate, ImageAdd, LoadImageList, SaveImage Plus, RegTextFind"
},
{
"author": "AIFSH",
"title": "SeedVC-ComfyUI [REMOVED]",
"reference": "https://github.com/AIFSH/SeedVC-ComfyUI",
"files": [
"https://github.com/AIFSH/SeedVC-ComfyUI"
],
"install_type": "git-clone",
"description": "a custom node for [a/seed-vc](https://github.com/Plachtaa/seed-vc)"
},
{
"author": "jazhang00",
"title": "ComfyUI Node for Slicedit [REMOVED]",
"reference": "https://github.com/jazhang00/ComfyUI-Slicedit",
"files": [
"https://github.com/jazhang00/ComfyUI-Slicedit"
],
"install_type": "git-clone",
"description": "Slicedit main page: [a/https://matankleiner.github.io/slicedit/](https://matankleiner.github.io/slicedit/). Use Slicedit with ComfyUI."
},
{
"author": "rklaffehn",
"title": "rk-comfy-nodes [REMOVED]",
"id": "rknodes",
"reference": "https://github.com/rklaffehn/rk-comfy-nodes",
"files": [
"https://github.com/rklaffehn/rk-comfy-nodes"
],
"install_type": "git-clone",
"description": "Nodes: RK_CivitAIMetaChecker, RK_CivitAIAddHashes."
},
{
"author": "Extraltodeus",
"title": "CLIP-Token-Injection [REMOVED]",
"reference": "https://github.com/Extraltodeus/CLIP-Token-Injection",
"files": [
"https://github.com/Extraltodeus/CLIP-Token-Injection"
],
"install_type": "git-clone",
"description": "These nodes are to edit the text vectors of CLIP models, so to customize how the prompts will be interpreted. You could see it as either customisation, 'one token prompt' up to some limitation and a way to mess with how the text will be interpreted. The edited CLIP can then be saved, or as well the edited tokens themselves. The shared example weights does not contain any image-knowledge but the text vector of the words affected."
},
{
"author": "openart",
"title": "openart-comfyui-deploy [REMOVED]",
"id": "openart-comfyui-deploy",
"reference": "https://github.com/kulsisme/openart-comfyui-deploy",
"files": [
"https://github.com/kulsisme/openart-comfyui-deploy"
],
"install_type": "git-clone",
"description": "NODES: External Boolean (ComfyUI Deploy), External Checkpoint (ComfyUI Deploy), External Image (ComfyUI Deploy), External Video (ComfyUI Deploy x VHS), OpenArt Text, Image Websocket Output (ComfyDeploy), ..."
},
{
"author": "mittimi",
"title": "ComfyUI_mittimiLoadPreset [DEPRECATED]",
"id": "comfyui-mittimi-load-preset",
"reference": "https://github.com/mittimi/ComfyUI_mittimiLoadPreset",
"files": [
"https://github.com/mittimi/ComfyUI_mittimiLoadPreset"
],
"install_type": "git-clone",
"description": "The system selects and loads preset."
},
{
"author": "jinljin",
"title": "ComfyUI-Talking-Head [REMOVED]",

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,86 @@
{
"models": [
{
"name": "Depth Pro model",
"type": "depth-pro",
"base": "depth-pro",
"save_path": "depth/ml-depth-pro",
"description": "Depth pro model for [a/ComfyUI-Depth-Pro](https://github.com/spacepxl/ComfyUI-Depth-Pro)",
"reference": "https://huggingface.co/spacepxl/ml-depth-pro",
"filename": "depth_pro.fp16.safetensors",
"url": "https://huggingface.co/spacepxl/ml-depth-pro/resolve/main/depth_pro.fp16.safetensors",
"size": "1.9GB"
},
{
"name": "jasperai/FLUX.1-dev-Controlnet-Upscaler",
"type": "controlnet",
"base": "FLUX.1",
"save_path": "controlnet/FLUX.1/jasperai-dev-Upscaler",
"description": "This is Flux.1-dev ControlNet for low resolution images developed by Jasper research team.",
"reference": "https://huggingface.co/jasperai/Flux.1-dev-Controlnet-Upscaler",
"filename": "diffusion_pytorch_model.safetensors",
"url": "https://huggingface.co/jasperai/Flux.1-dev-Controlnet-Upscaler/resolve/main/diffusion_pytorch_model.safetensors",
"size": "3.58GB"
},
{
"name": "jasperai/FLUX.1-dev-Controlnet-Depth",
"type": "controlnet",
"base": "FLUX.1",
"save_path": "controlnet/FLUX.1/jasperai-dev-Depth",
"description": "This is Flux.1-dev ControlNet for Depth map developed by Jasper research team.",
"reference": "https://huggingface.co/jasperai/Flux.1-dev-Controlnet-Depth",
"filename": "diffusion_pytorch_model.safetensors",
"url": "https://huggingface.co/jasperai/Flux.1-dev-Controlnet-Depth/resolve/main/diffusion_pytorch_model.safetensors",
"size": "3.58GB"
},
{
"name": "jasperai/Flux.1-dev-Controlnet-Surface-Normals",
"type": "controlnet",
"base": "FLUX.1",
"save_path": "controlnet/FLUX.1/jasperai-dev-Surface-Normals",
"description": "This is Flux.1-dev ControlNet for Surface Normals map developed by Jasper research team.",
"reference": "https://huggingface.co/jasperai/Flux.1-dev-Controlnet-Surface-Normals",
"filename": "diffusion_pytorch_model.safetensors",
"url": "https://huggingface.co/jasperai/Flux.1-dev-Controlnet-Surface-Normals/resolve/main/diffusion_pytorch_model.safetensors",
"size": "3.58GB"
},
{
"name": "Shakker-Labs/FLUX.1-dev-ControlNet-Union-Pro (fp8_e4m3fn) by Kijai",
"type": "controlnet",
"base": "FLUX.1",
"save_path": "controlnet/FLUX.1",
"description": "FLUX.1 [Dev] Union Controlnet. Supports Canny, Tile, Depth, Blur, Pose, Gray, Low Quality\nVersion quantized to fp8_e4m3fn by Kijai",
"reference": "https://huggingface.co/Kijai/flux-fp8",
"filename": "flux_shakker_labs_union_pro-fp8_e4m3fn.safetensors",
"url": "https://huggingface.co/Kijai/flux-fp8/resolve/main/flux_shakker_labs_union_pro-fp8_e4m3fn.safetensors",
"size": "3.3GB"
},
{
"name": "ViT-L-14-TEXT-detail-improved-hiT-GmP-HF.safetensors [Long CLIP L]",
"type": "clip",
"base": "clip",
"save_path": "clip/long_clip",
"description": "Greatly improved TEXT + Detail (as CLIP-L for Flux.1)",
"reference": "https://huggingface.co/zer0int",
"filename": "ViT-L-14-TEXT-detail-improved-hiT-GmP-HF.safetensors",
"url": "https://huggingface.co/zer0int/CLIP-GmP-ViT-L-14/resolve/main/ViT-L-14-TEXT-detail-improved-hiT-GmP-HF.safetensors",
"size": "931MB"
},
{
"name": "ViT-L-14-TEXT-detail-improved-hiT-GmP-HF.safetensors [Long CLIP L]",
"type": "clip",
"base": "clip",
"save_path": "clip/long_clip",
"description": "Greatly improved TEXT + Detail (as CLIP-L for Flux.1)",
"reference": "https://huggingface.co/zer0int",
"filename": "ViT-L-14-TEXT-detail-improved-hiT-GmP-TE-only-HF.safetensors",
"url": "https://huggingface.co/zer0int/CLIP-GmP-ViT-L-14/resolve/main/ViT-L-14-TEXT-detail-improved-hiT-GmP-TE-only-HF.safetensors",
"size": "323MB"
},
{
"name": "Shakker-Labs/FLUX.1-dev-ControlNet-Union-Pro",
"type": "controlnet",
@ -597,98 +678,6 @@
"filename": "ae.sft",
"url": "https://huggingface.co/black-forest-labs/FLUX.1-schnell/resolve/main/ae.safetensors",
"size": "335MB"
},
{
"name": "kijai/FLUX.1 [schnell] Diffusion model (float8_e4m3fn)",
"type": "unet",
"base": "FLUX.1",
"save_path": "unet/FLUX1",
"description": "FLUX.1 [Schnell] Diffusion model (float8_e4m3fn)",
"reference": "https://huggingface.co/Kijai/flux-fp8",
"filename": "flux1-schnell-fp8.safetensors",
"url": "https://huggingface.co/Kijai/flux-fp8/resolve/main/flux1-schnell-fp8.safetensors",
"size": "11.9GB"
},
{
"name": "kijai/FLUX.1 [dev] Diffusion model (float8_e4m3fn)",
"type": "unet",
"base": "FLUX.1",
"save_path": "unet/FLUX1",
"description": "FLUX.1 [dev] Diffusion model (float8_e4m3fn)",
"reference": "https://huggingface.co/Kijai/flux-fp8",
"filename": "flux1-dev-fp8.safetensors",
"url": "https://huggingface.co/Kijai/flux-fp8/resolve/main/flux1-dev-fp8.safetensors",
"size": "11.9GB"
},
{
"name": "photomaker-v2.bin",
"type": "photomaker",
"base": "SDXL",
"save_path": "photomaker",
"description": "PhotoMaker model. This model is compatible with SDXL.",
"reference": "https://huggingface.co/TencentARC/PhotoMaker-V2",
"filename": "photomaker-v2.bin",
"url": "https://huggingface.co/TencentARC/PhotoMaker-V2/resolve/main/photomaker-v2.bin",
"size": "1.8GB"
},
{
"name": "hunyuan_dit_1.2.safetensors",
"type": "checkpoint",
"base": "Hunyuan-DiT",
"save_path": "checkpoints/hunyuan_dit_comfyui",
"description": "Different versions of HunyuanDIT packaged for ComfyUI use.",
"reference": "https://huggingface.co/comfyanonymous/hunyuan_dit_comfyui",
"filename": "hunyuan_dit_1.2.safetensors",
"url": "https://huggingface.co/comfyanonymous/hunyuan_dit_comfyui/resolve/main/hunyuan_dit_1.2.safetensors",
"size": "8.24GB"
},
{
"name": "hunyuan_dit_1.1.safetensors",
"type": "checkpoint",
"base": "Hunyuan-DiT",
"save_path": "checkpoints/hunyuan_dit_comfyui",
"description": "Different versions of HunyuanDIT packaged for ComfyUI use.",
"reference": "https://huggingface.co/comfyanonymous/hunyuan_dit_comfyui",
"filename": "hunyuan_dit_1.1.safetensors",
"url": "https://huggingface.co/comfyanonymous/hunyuan_dit_comfyui/resolve/main/hunyuan_dit_1.1.safetensors",
"size": "8.24GB"
},
{
"name": "hunyuan_dit_1.0.safetensors",
"type": "checkpoint",
"base": "Hunyuan-DiT",
"save_path": "checkpoints/hunyuan_dit_comfyui",
"description": "Different versions of HunyuanDIT packaged for ComfyUI use.",
"reference": "https://huggingface.co/comfyanonymous/hunyuan_dit_comfyui",
"filename": "hunyuan_dit_1.0.safetensors",
"url": "https://huggingface.co/comfyanonymous/hunyuan_dit_comfyui/resolve/main/hunyuan_dit_1.0.safetensors",
"size": "8.24GB"
},
{
"name": "xinsir/ControlNet++: All-in-one ControlNet (ProMax model)",
"type": "controlnet",
"base": "SDXL",
"save_path": "controlnet/SDXL/controlnet-union-sdxl-1.0",
"description": "All-in-one ControlNet for image generations and editing! (ProMax model)",
"reference": "https://huggingface.co/xinsir/controlnet-union-sdxl-1.0",
"filename": "diffusion_pytorch_model_promax.safetensors",
"url": "https://huggingface.co/xinsir/controlnet-union-sdxl-1.0/resolve/main/diffusion_pytorch_model_promax.safetensors",
"size": "2.50GB"
},
{
"name": "xinsir/ControlNet++: All-in-one ControlNet",
"type": "controlnet",
"base": "SDXL",
"save_path": "controlnet/SDXL/controlnet-union-sdxl-1.0",
"description": "All-in-one ControlNet for image generations and editing!",
"reference": "https://huggingface.co/xinsir/controlnet-union-sdxl-1.0",
"filename": "diffusion_pytorch_model.safetensors",
"url": "https://huggingface.co/xinsir/controlnet-union-sdxl-1.0/resolve/main/diffusion_pytorch_model.safetensors",
"size": "2.50GB"
}
]
}

View File

@ -170,16 +170,6 @@
"install_type": "git-clone",
"description": "Nodes:Concatenate multiple text nodes."
},
{
"author": "nilor-corp",
"title": "nilor-nodes",
"reference": "https://github.com/nilor-corp/nilor-nodes",
"files": [
"https://github.com/nilor-corp/nilor-nodes"
],
"install_type": "git-clone",
"description": "Nodes:Nilor Floats, Nilor Int To List Of Bools, Nilor Bool From List Of Bools, Nilor Int From List Of Ints, Nilor List of Ints, Nilor Count Images In Directory"
},
{
"author": "OuticNZ",
"title": "ComfyUI-Simple-Of-Complex",

View File

@ -1,7 +1,7 @@
[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 = "2.50.3"
version = "2.51.6"
license = { file = "LICENSE.txt" }
dependencies = ["GitPython", "PyGithub", "matrix-client==0.4.0", "transformers", "huggingface-hub>0.20", "typer", "rich", "typing-extensions"]