mirror of
https://github.com/Comfy-Org/ComfyUI-Manager.git
synced 2026-01-28 06:50:17 +08:00
Compare commits
28 Commits
ea64a0c66d
...
44a0a1455f
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
44a0a1455f | ||
|
|
5c475e3c15 | ||
|
|
f705ee6863 | ||
|
|
1f67c18989 | ||
|
|
de6d451c5b | ||
|
|
580296d6f3 | ||
|
|
a9e28fbce3 | ||
|
|
311779cb20 | ||
|
|
d2f8a89e87 | ||
|
|
84c95bf322 | ||
|
|
f75c801955 | ||
|
|
faa2f54371 | ||
|
|
4249ac193a | ||
|
|
c709274a28 | ||
|
|
c8f05e79db | ||
|
|
4d2887e99f | ||
|
|
29256a5154 | ||
|
|
82d42e4094 | ||
|
|
53850fb627 | ||
|
|
34b4c8ce46 | ||
|
|
e944841054 | ||
|
|
f6a5ff5552 | ||
|
|
01763b59d4 | ||
|
|
044173b2a1 | ||
|
|
99e7a88dbd | ||
|
|
01cd9fbb0e | ||
|
|
aaed1dc3d5 | ||
|
|
7419699ac8 |
32
README.md
32
README.md
@ -5,6 +5,7 @@
|
||||

|
||||
|
||||
## NOTICE
|
||||
* V3.38: **Security patch** - Manager data migrated to protected path. See [Migration Guide](docs/en/v3.38-userdata-security-migration.md).
|
||||
* V3.16: Support for `uv` has been added. Set `use_uv` in `config.ini`.
|
||||
* V3.10: `double-click feature` is removed
|
||||
* This feature has been moved to https://github.com/ltdrdata/comfyui-connection-helper
|
||||
@ -140,20 +141,27 @@ This repository provides Colab notebooks that allow you to install and use Comfy
|
||||
|
||||
|
||||
## Paths
|
||||
In `ComfyUI-Manager` V3.0 and later, configuration files and dynamically generated files are located under `<USER_DIRECTORY>/default/ComfyUI-Manager/`.
|
||||
Starting from V3.38, Manager uses a protected system path for enhanced security.
|
||||
|
||||
* <USER_DIRECTORY>
|
||||
* If executed without any options, the path defaults to ComfyUI/user.
|
||||
* It can be set using --user-directory <USER_DIRECTORY>.
|
||||
* <USER_DIRECTORY>
|
||||
* If executed without any options, the path defaults to ComfyUI/user.
|
||||
* It can be set using --user-directory <USER_DIRECTORY>.
|
||||
|
||||
* Basic config files: `<USER_DIRECTORY>/default/ComfyUI-Manager/config.ini`
|
||||
* Configurable channel lists: `<USER_DIRECTORY>/default/ComfyUI-Manager/channels.ini`
|
||||
* Configurable pip overrides: `<USER_DIRECTORY>/default/ComfyUI-Manager/pip_overrides.json`
|
||||
* Configurable pip blacklist: `<USER_DIRECTORY>/default/ComfyUI-Manager/pip_blacklist.list`
|
||||
* Configurable pip auto fix: `<USER_DIRECTORY>/default/ComfyUI-Manager/pip_auto_fix.list`
|
||||
* Saved snapshot files: `<USER_DIRECTORY>/default/ComfyUI-Manager/snapshots`
|
||||
* Startup script files: `<USER_DIRECTORY>/default/ComfyUI-Manager/startup-scripts`
|
||||
* Component files: `<USER_DIRECTORY>/default/ComfyUI-Manager/components`
|
||||
| ComfyUI Version | Manager Path |
|
||||
|-----------------|--------------|
|
||||
| v0.3.76+ (with System User API) | `<USER_DIRECTORY>/__manager/` |
|
||||
| Older versions | `<USER_DIRECTORY>/default/ComfyUI-Manager/` |
|
||||
|
||||
* Basic config files: `config.ini`
|
||||
* Configurable channel lists: `channels.list`
|
||||
* Configurable pip overrides: `pip_overrides.json`
|
||||
* Configurable pip blacklist: `pip_blacklist.list`
|
||||
* Configurable pip auto fix: `pip_auto_fix.list`
|
||||
* Saved snapshot files: `snapshots/`
|
||||
* Startup script files: `startup-scripts/`
|
||||
* Component files: `components/`
|
||||
|
||||
> **Note**: See [Migration Guide](docs/en/v3.38-userdata-security-migration.md) for upgrade details.
|
||||
|
||||
|
||||
## `extra_model_paths.yaml` Configuration
|
||||
|
||||
@ -8284,6 +8284,16 @@
|
||||
"install_type": "git-clone",
|
||||
"description": "Powerful ComfyUI custom node built on the FlashVSR model, facilitating real-time diffusion-based video super-resolution for streaming applications."
|
||||
},
|
||||
{
|
||||
"author": "1038lab",
|
||||
"title": "ComfyUI-QwenVL",
|
||||
"reference": "https://github.com/1038lab/ComfyUI-QwenVL",
|
||||
"files": [
|
||||
"https://github.com/1038lab/ComfyUI-QwenVL"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "ComfyUI-QwenVL custom node: Integrates the Qwen-VL series, including Qwen2.5-VL and the latest Qwen3-VL, to enable advanced multimodal AI for text generation, image understanding, and video analysis."
|
||||
},
|
||||
{
|
||||
"author": "Klinter",
|
||||
"title": "Klinter_nodes",
|
||||
@ -9785,16 +9795,6 @@
|
||||
"install_type": "git-clone",
|
||||
"description": "Load new workflow after mask editing."
|
||||
},
|
||||
{
|
||||
"author": "shinich39",
|
||||
"title": "comfyui-no-one-above-me",
|
||||
"reference": "https://github.com/shinich39/comfyui-no-one-above-me",
|
||||
"files": [
|
||||
"https://github.com/shinich39/comfyui-no-one-above-me"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Fix node to top."
|
||||
},
|
||||
{
|
||||
"author": "shinich39",
|
||||
"title": "comfyui-break-workflow",
|
||||
@ -11389,6 +11389,16 @@
|
||||
"install_type": "git-clone",
|
||||
"description": "DyPE: Dynamic Position Extrapolation for Ultra High Resolution Diffusion ,you can use a wrapper node it in comfyUI"
|
||||
},
|
||||
{
|
||||
"author": "smthemex",
|
||||
"title": "ComfyUI_GRAG_Image_Editing",
|
||||
"reference": "https://github.com/smthemex/ComfyUI_GRAG_Image_Editing",
|
||||
"files": [
|
||||
"https://github.com/smthemex/ComfyUI_GRAG_Image_Editing"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "GRAG-Image-Editing : Group-Relative Attention Guidance for Image Editing,you can try it in comfyUI"
|
||||
},
|
||||
{
|
||||
"author": "choey",
|
||||
"title": "Comfy-Topaz",
|
||||
@ -16834,6 +16844,16 @@
|
||||
"install_type": "git-clone",
|
||||
"description": "Unofficial diffusers integration of the official SDNQ pipeline to run in ComfyUI. (Description by CC)"
|
||||
},
|
||||
{
|
||||
"author": "erosDiffusion",
|
||||
"title": "ComfyUI-EulerDiscreteScheduler",
|
||||
"reference": "https://github.com/erosDiffusion/ComfyUI-EulerDiscreteScheduler",
|
||||
"files": [
|
||||
"https://github.com/erosDiffusion/ComfyUI-EulerDiscreteScheduler"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Noise Free images with Euler Discrete Scheduler in ComfyUI with Z-Image or other models"
|
||||
},
|
||||
{
|
||||
"author": "Steudio",
|
||||
"title": "ComfyUI Steudio",
|
||||
@ -20238,6 +20258,16 @@
|
||||
"install_type": "git-clone",
|
||||
"description": "A node for ComfyUI that provides a convenient way of resizing or cropping an image for diffusion tasks."
|
||||
},
|
||||
{
|
||||
"author": "SparknightLLC",
|
||||
"title": "ComfyUI-LatentOrientation",
|
||||
"reference": "https://github.com/SparknightLLC/ComfyUI-LatentOrientation",
|
||||
"files": [
|
||||
"https://github.com/SparknightLLC/ComfyUI-LatentOrientation"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "A simple node for ComfyUI that rotates or resizes the input latent to common orientations."
|
||||
},
|
||||
{
|
||||
"author": "lightricks",
|
||||
"title": "ComfyUI-LTXVideo",
|
||||
@ -22960,6 +22990,16 @@
|
||||
"install_type": "git-clone",
|
||||
"description": "A super simple node that outputs common video resolutions as 2 integers for Hunyuan and others!"
|
||||
},
|
||||
{
|
||||
"author": "HellerCommaA",
|
||||
"title": "ComfyUI-ZImageLatent",
|
||||
"reference": "https://github.com/HellerCommaA/ComfyUI-ZImageLatent",
|
||||
"files": [
|
||||
"https://github.com/HellerCommaA/ComfyUI-ZImageLatent"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "A super simple node that outputs official zimage resolutions as a latent"
|
||||
},
|
||||
{
|
||||
"author": "benjiyaya",
|
||||
"title": "ComfyUI-KokoroTTS",
|
||||
@ -23145,6 +23185,16 @@
|
||||
"install_type": "git-clone",
|
||||
"description": "Frontend extension that adds a sidebar for easy viewing of PNG file metadata."
|
||||
},
|
||||
{
|
||||
"author": "KLL535",
|
||||
"title": "ComfyUI_Simple_Qwen3-VL-gguf",
|
||||
"reference": "https://github.com/KLL535/ComfyUI_Simple_Qwen3-VL-gguf",
|
||||
"files": [
|
||||
"https://github.com/KLL535/ComfyUI_Simple_Qwen3-VL-gguf"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Simple Qwen3-VL gguf LLM model loader"
|
||||
},
|
||||
{
|
||||
"author": "mango125",
|
||||
"title": "ComfyUI-Mango-Random",
|
||||
@ -24796,6 +24846,16 @@
|
||||
"install_type": "git-clone",
|
||||
"description": "A ComfyUI custom node that provides dynamic text substitution using wildcards and CSV files. Perfect for creating varied prompts with consistent relationships between terms."
|
||||
},
|
||||
{
|
||||
"author": "illuminatianon",
|
||||
"title": "comfyui-lumi-tools",
|
||||
"reference": "https://github.com/illuminatianon/comfyui-lumi-tools",
|
||||
"files": [
|
||||
"https://github.com/illuminatianon/comfyui-lumi-tools"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "A ComfyUI custom node pack by Lumi."
|
||||
},
|
||||
{
|
||||
"author": "finegrain",
|
||||
"title": "comfyui-finegrain",
|
||||
@ -25964,6 +26024,16 @@
|
||||
"install_type": "git-clone",
|
||||
"description": "volcengine comfyui api"
|
||||
},
|
||||
{
|
||||
"author": "synthetai",
|
||||
"title": "ComfyUI-JM-Gemini-API",
|
||||
"reference": "https://github.com/synthetai/ComfyUI-JM-Gemini-API",
|
||||
"files": [
|
||||
"https://github.com/synthetai/ComfyUI-JM-Gemini-API"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "A custom node for ComfyUI that generates images using Google's Gemini API, supporting both text-to-image and image-to-image generation."
|
||||
},
|
||||
{
|
||||
"author": "chou18194766xx",
|
||||
"title": "comfyui-EncryptSave",
|
||||
@ -30418,6 +30488,16 @@
|
||||
"install_type": "git-clone",
|
||||
"description": "ComfyUI node for Flux Kontext Pro and Max models from Replicate"
|
||||
},
|
||||
{
|
||||
"author": "Aryan185",
|
||||
"title": "ComfyUI-VertexAPI",
|
||||
"reference": "https://github.com/Aryan185/ComfyUI-VertexAPI",
|
||||
"files": [
|
||||
"https://github.com/Aryan185/ComfyUI-VertexAPI"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "A collection of powerful custom nodes for ComfyUI that connect your local workflows to closed-source AI models via their APIs, supporting Google Gemini, Imagen, Veo, OpenAI's GPT-Image-1, and FLUX models."
|
||||
},
|
||||
{
|
||||
"author": "iacoposk8",
|
||||
"title": "ComfyUI Fooocus Inpaint Wrapper",
|
||||
@ -32859,6 +32939,16 @@
|
||||
"install_type": "git-clone",
|
||||
"description": "A comprehensive suite of custom nodes for building structured JSON prompts for FLUX.2 image generation with precision and control."
|
||||
},
|
||||
{
|
||||
"author": "MushroomFleet",
|
||||
"title": "ComfyUI-Variationator",
|
||||
"reference": "https://github.com/MushroomFleet/ComfyUI-Variationator",
|
||||
"files": [
|
||||
"https://github.com/MushroomFleet/ComfyUI-Variationator"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Advanced multi-dimensional prompt variation system for ComfyUI with 240 pre-defined modifiers and 19 custom nodes. (Description by CC)"
|
||||
},
|
||||
{
|
||||
"author": "Urabewe",
|
||||
"title": "ComfyUI Video Extend Counter",
|
||||
@ -33594,6 +33684,16 @@
|
||||
"install_type": "git-clone",
|
||||
"description": "A ComfyUI custom node based on the Volcano Engine Doubao large model Seedream API, designed for high-quality image generation."
|
||||
},
|
||||
{
|
||||
"author": "dzy1128",
|
||||
"title": "ComfyUI-VertexAI",
|
||||
"reference": "https://github.com/dzy1128/ComfyUI-VertexAI",
|
||||
"files": [
|
||||
"https://github.com/dzy1128/ComfyUI-VertexAI"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Google Gemini image generation node for ComfyUI supporting up to 6 input images with customizable prompts and parameters. (Description by CC)"
|
||||
},
|
||||
{
|
||||
"author": "swfxliyiyu",
|
||||
"title": "ComfyUI-FastVideo",
|
||||
@ -33725,16 +33825,6 @@
|
||||
"install_type": "git-clone",
|
||||
"description": "A custom ComfyUI node for seamless image editing using fal.ai's NanoBanana and Seedream (v4) models. Edit images with AI-powered prompts, supporting multi-image batches, custom resolutions, and easy fal.ai API key integration directly in the node interface. "
|
||||
},
|
||||
{
|
||||
"author": "comrender",
|
||||
"title": "ComfyUI-gpt5_image_text",
|
||||
"reference": "https://github.com/comrender/ComfyUI-gpt5_image_text",
|
||||
"files": [
|
||||
"https://github.com/comrender/ComfyUI-gpt5_image_text"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "A ComfyUI custom node for vision + text analysis using GPT-5 and GPT-4o with direct API key input, system prompt, temperature, max tokens, and multi-image support."
|
||||
},
|
||||
{
|
||||
"author": "comrender",
|
||||
"title": "ComfyUI-Topaz-Upscaler",
|
||||
@ -33745,26 +33835,6 @@
|
||||
"install_type": "git-clone",
|
||||
"description": "A custom node for ComfyUI that integrates the Topaz Labs API for AI-powered image upscaling and enhancement."
|
||||
},
|
||||
{
|
||||
"author": "comrender",
|
||||
"title": "ComfyUI-Nano-Banana-Resizer",
|
||||
"reference": "https://github.com/comrender/ComfyUI-Nano-Banana-Resizer",
|
||||
"files": [
|
||||
"https://github.com/comrender/ComfyUI-Nano-Banana-Resizer"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "A ComfyUI custom node that automatically calculates optimal output dimensions for Google's Nano Banana image editing model, supporting 22 aspect ratio buckets and ensuring pixel-perfect outputs without shifting or cropping."
|
||||
},
|
||||
{
|
||||
"author": "comrender",
|
||||
"title": "ComfyUI-edge-match-checker",
|
||||
"reference": "https://github.com/comrender/ComfyUI-edge-match-checker",
|
||||
"files": [
|
||||
"https://github.com/comrender/ComfyUI-edge-match-checker"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Node comparing two image masks or images with adjustable overlap threshold (default 95%) for detecting minor shifts and mismatches in proportions, suitable for automated post-processing validation. (Description by CC)"
|
||||
},
|
||||
{
|
||||
"author": "DecartAI",
|
||||
"title": "Lucy-Edit-ComfyUI",
|
||||
@ -35617,16 +35687,6 @@
|
||||
"install_type": "git-clone",
|
||||
"description": "NODES: TextEncodeQwenImageEditKrsSimple, TextEncodeQwenImageEditKrsAdvanced, QwenImageEditLatentKrs, ..."
|
||||
},
|
||||
{
|
||||
"author": "yemanou",
|
||||
"title": "NABA Image (Gemini REST) Node",
|
||||
"reference": "https://github.com/yemanou/ComfyUI-NABA",
|
||||
"files": [
|
||||
"https://github.com/yemanou/ComfyUI-NABA"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Simplified Gemini 2.5 Flash Image Preview node for ComfyUI. REST-only for stability, two optional reference images, padded aspect ratio resizing (no stretching), and basic sampling controls. All extra debug layers, SDK path, multi-seed, and legacy compatibility code removed to avoid crashes."
|
||||
},
|
||||
{
|
||||
"author": "Blacksnowskill",
|
||||
"title": "BSS WD14 Batch Tagger",
|
||||
@ -35675,6 +35735,16 @@
|
||||
"install_type": "git-clone",
|
||||
"description": "ComfyUI-Fossiel-QoL-Nodes is (what will hopefully become) a suite of custom nodes for ComfyUI to improve quality of life. These nodes have been developed for personal use but maybe you’ll find them useful as well."
|
||||
},
|
||||
{
|
||||
"author": "Fossiel",
|
||||
"title": "ComfyUI-Fossiel-WAN-Additional-Tilers",
|
||||
"reference": "https://github.com/Fossiel/ComfyUI-Fossiel-WAN-Additional-Tilers",
|
||||
"files": [
|
||||
"https://github.com/Fossiel/ComfyUI-Fossiel-WAN-Additional-Tilers"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Suite of nodes providing VAE tiling functionality for WAN conditioners to reduce VRAM usage while maintaining generation quality. (Description by CC)"
|
||||
},
|
||||
{
|
||||
"author": "rsxdalv",
|
||||
"title": "TTS WebUI API nodes for ComfyUI",
|
||||
@ -36056,6 +36126,16 @@
|
||||
"install_type": "git-clone",
|
||||
"description": "Image labeler for ComyUI"
|
||||
},
|
||||
{
|
||||
"author": "Seb-Lis",
|
||||
"title": "ComfyUI_Node_Pack",
|
||||
"reference": "https://github.com/Seb-Lis/ComfyUI_Node_Pack",
|
||||
"files": [
|
||||
"https://github.com/Seb-Lis/ComfyUI_Node_Pack"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "A collection of utility nodes for image processing, workflow management, and generation metadata tracking."
|
||||
},
|
||||
{
|
||||
"author": "gitcapoom",
|
||||
"title": "ComfyUI FOV Estimator",
|
||||
@ -37051,7 +37131,18 @@
|
||||
"install_type": "git-clone",
|
||||
"description": "Utility tools. Index Multiple is used for expanding multiple values from a list, IsOneOfGroupsActive to identify groups state, RepeatGroupState group enable/disable like rg but without connection etc.",
|
||||
"tags": ["utility", "list", "batch"]
|
||||
},
|
||||
},
|
||||
{
|
||||
"author": "akawana",
|
||||
"title": "RGBYP Mask Editor (RGB + YP)",
|
||||
"reference": "https://github.com/akawana/ComfyUI-RGBYP-Mask-Editor",
|
||||
"files": [
|
||||
"https://github.com/akawana/ComfyUI-RGBYP-Mask-Editor"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "A JS editor for five-color masks (RGB + Yellow + Pink) that works with any nodes, with three helper nodes — RGBYPLoadImage, RGBYPMaskBridge, and RGBYPMaskToRegularMasks—for convenient RGBYP mask handling.",
|
||||
"tags": ["utility", "mask", "rgb", "bridge"]
|
||||
},
|
||||
{
|
||||
"author": "lovisdotio",
|
||||
"title": "ComfyUI-Replace-First-Frame-Last-Frame",
|
||||
@ -37293,11 +37384,292 @@
|
||||
"install_type": "git-clone",
|
||||
"description": "ComfyUI custom nodes for Bokeh Diffusion - Defocus Blur Control in Text-to-Image Diffusion Models."
|
||||
},
|
||||
{
|
||||
"author": "HAL-XP",
|
||||
"title": "HALXP-Comfy",
|
||||
"reference": "https://github.com/hal-xp/halxp-comfy",
|
||||
"files": [
|
||||
"https://github.com/hal-xp/halxp-comfy"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "A UI suite for ComfyUI including Focus mode and layout enhancements."
|
||||
},
|
||||
{
|
||||
"author": "BuddyBytes",
|
||||
"title": "Smart Resolution Toolkit",
|
||||
"reference": "https://github.com/buddy-bytes/ComfyUI-SmartResolutionToolkit",
|
||||
"files": [
|
||||
"https://github.com/buddy-bytes/ComfyUI-SmartResolutionToolkit"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Resolution picker and latent generator for ComfyUI. Select presets like HD, FullHD, 2K, 4K, 8K with aspect ratios (1:1, 9:16, 4:5, 21:9 etc.) via dropdowns. Automatically snaps width/height to latent-safe multiples of 64. Ideal for EmptyLatentImage, AnimateDiff, ControlNet, video formats, and KSampler workflows. Outputs clean INT values or ready-to-use LATENT tensor."
|
||||
},
|
||||
{
|
||||
"author": "Bharanidharan",
|
||||
"title": "iSeeBetter Node for ComfyUI",
|
||||
"reference": "https://github.com/llikethat/ComfyUI-iseebetter",
|
||||
"files": [
|
||||
"https://github.com/llikethat/ComfyUI-iseebetter"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Custom Node to implement iSeeBetter upscaling method."
|
||||
},
|
||||
{
|
||||
"author": "Bharanidharan",
|
||||
"title": "faceExtractor for ComfyUI",
|
||||
"reference": "https://github.com/llikethat/ComfyUI-faceExtractor",
|
||||
"files": [
|
||||
"https://github.com/llikethat/ComfyUI-faceExtractor"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Custom Node to detect face matching the input reference image."
|
||||
},
|
||||
{
|
||||
"author": "Pondowner857",
|
||||
"title": "ComfyUI Remote Workflow Executor",
|
||||
"id": "comfy_Pond_Nodes_V2",
|
||||
"reference": "https://github.com/Pondowner857/comfy_Pond_Nodes_V2",
|
||||
"files": [
|
||||
"https://github.com/Pondowner857/comfy_Pond_Nodes_V2"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Remote workflow executor node - Execute workflows on remote ComfyUI servers. Supports image/text/audio/video input and output."
|
||||
},
|
||||
{
|
||||
"author": "luxdelux7",
|
||||
"title": "Forbidden Vision",
|
||||
"reference": "https://github.com/luxdelux7/ComfyUI-Forbidden-Vision",
|
||||
"files": [
|
||||
"https://github.com/luxdelux7/ComfyUI-Forbidden-Vision"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Custom face detection and segmentation for ComfyUI with automatic face fixing, intelligent color grading, and iterative refinement. Custom-trained models optimized for realistic, anime, and NSFW content.",
|
||||
"nodename_pattern": "ForbiddenVision"
|
||||
},
|
||||
{
|
||||
"author": "ah-kun",
|
||||
"title": "ComfyUI-FailSafe-Translate-Node",
|
||||
"reference": "https://github.com/ah-kun/ComfyUI-FailSafe-Translate-Node",
|
||||
"files": [
|
||||
"https://github.com/ah-kun/ComfyUI-FailSafe-Translate-Node"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Fail-safe Google Translate prompt node for ComfyUI (retry + caching)."
|
||||
},
|
||||
{
|
||||
"author": "Kazama-Suichiku",
|
||||
"title": "ComfyUI-Meshy",
|
||||
"id": "comfyui-meshy",
|
||||
"reference": "https://github.com/Kazama-Suichiku/ComfyUI-Meshy",
|
||||
"files": [
|
||||
"https://github.com/Kazama-Suichiku/ComfyUI-Meshy"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "ComfyUI-Meshy is a 3D generation extension based on Meshy AI API. It provides Text-to-3D and Image-to-3D capabilities within ComfyUI, allowing you to generate 3D models directly from text prompts or images. Supports multiple AI models (Meshy-4, Meshy-5, Meshy-6) with customizable topology, polygon count, and PBR settings."
|
||||
},
|
||||
{
|
||||
"author": "Carasibana",
|
||||
"title": "ComfyUI-PolyMask",
|
||||
"reference": "https://github.com/Carasibana/ComfyUI-PolyMask",
|
||||
"files": [
|
||||
"https://github.com/Carasibana/ComfyUI-PolyMask"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "ComfyUI nodes for loading images and drawing polygon masks interactively on them"
|
||||
},
|
||||
{
|
||||
"author": "cdanielp",
|
||||
"title": "COMFYUI_PROMPTMODELS",
|
||||
"reference": "https://github.com/cdanielp/COMFYUI_PROMPTMODELS",
|
||||
"files": [
|
||||
"https://github.com/cdanielp/COMFYUI_PROMPTMODELS"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Custom nodes for ComfyUI by PROMPTMODELS."
|
||||
},
|
||||
{
|
||||
"author": "supElement",
|
||||
"title": "ComfyUI_Element_easy",
|
||||
"reference": "https://github.com/supElement/ComfyUI_Element_easy",
|
||||
"files": [
|
||||
"https://github.com/supElement/ComfyUI_Element_easy"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Three custom ComfyUI nodes: Empty Image RGB, Text Line Break, and Random Chars (Append) for convenient utilities. (Description by CC)"
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
{
|
||||
"author": "Zeknes",
|
||||
"title": "Comfyui-Nanobanana-API",
|
||||
"reference": "https://github.com/Zeknes/Comfyui-Nanobanana-API",
|
||||
"files": [
|
||||
"https://github.com/Zeknes/Comfyui-Nanobanana-API"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "ComfyUI custom node for Gemini image generation via OpenRouter API, supporting text prompts and multiple image inputs (up to 4 images) with automatic saving to output directory. (Description by CC)"
|
||||
},
|
||||
{
|
||||
"author": "xiaoshengyvlin",
|
||||
"title": "ComfyUI-MetaData-ZaKo",
|
||||
"reference": "https://github.com/xiaoshengyvlin/ComfyUI-MetaData-ZaKo",
|
||||
"files": [
|
||||
"https://github.com/xiaoshengyvlin/ComfyUI-MetaData-ZaKo"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "ComfyUI extension for image metadata swapping and preservation in workflows. (Description by CC)"
|
||||
},
|
||||
{
|
||||
"author": "UndefinedUo",
|
||||
"title": "DuoUmiWildcards",
|
||||
"reference": "https://github.com/UndefinedUo/DuoUmiWildcards",
|
||||
"files": [
|
||||
"https://github.com/UndefinedUo/DuoUmiWildcards"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Custom ComfyUI node supporting wildcard text processing from files with YAML tags, randomization, latent ratio selection and preset aspect ratios."
|
||||
},
|
||||
{
|
||||
"author": "bpmpnaito",
|
||||
"title": "comfyui-imageviewer",
|
||||
"reference": "https://github.com/bpmpnaito/comfyui-imageviewer",
|
||||
"files": [
|
||||
"https://github.com/bpmpnaito/comfyui-imageviewer"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Image viewer node that displays preview of images directly in the node."
|
||||
},
|
||||
{
|
||||
"author": "ChangeTheConstants",
|
||||
"title": "SeedVarianceEnhancer",
|
||||
"reference": "https://github.com/ChangeTheConstants/SeedVarianceEnhancer",
|
||||
"files": [
|
||||
"https://github.com/ChangeTheConstants/SeedVarianceEnhancer"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "A ComfyUI custom node that adds diversity to Z-Image Turbo outputs by adding random noise to text prompt embeddings to compensate for low seed variance. (Description by CC)"
|
||||
},
|
||||
{
|
||||
"author": "SaTaNoob",
|
||||
"title": "ComfyUI-Z-Image-Turbo-Resolutions",
|
||||
"reference": "https://github.com/SaTaNoob/ComfyUI-Z-Image-Turbo-Resolutions",
|
||||
"files": [
|
||||
"https://github.com/SaTaNoob/ComfyUI-Z-Image-Turbo-Resolutions"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "A ComfyUI custom node that provides quick access to all image resolutions for the Z Image Turbo model, sourced from its official Hugging Face Space."
|
||||
},
|
||||
{
|
||||
"author": "CraftBlack",
|
||||
"title": "ComfyUI-Resolution-Divider",
|
||||
"reference": "https://github.com/CraftBlack/ComfyUI-Resolution-Divider",
|
||||
"files": [
|
||||
"https://github.com/CraftBlack/ComfyUI-Resolution-Divider"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Utility node for ComfyUI that calculates downscaled resolutions while maintaining original aspect ratio, ideal for image-to-video workflows to prevent OOM errors. (Description by CC)"
|
||||
},
|
||||
{
|
||||
"author": "Randy420Marsh",
|
||||
"title": "ComfyUI-Civitai-API-Url-Resolver",
|
||||
"reference": "https://github.com/Randy420Marsh/ComfyUI-Civitai-API-Url-Resolver",
|
||||
"files": [
|
||||
"https://github.com/Randy420Marsh/ComfyUI-Civitai-API-Url-Resolver"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "A ComfyUI custom node that converts Civitai share/model page URLs into direct download URLs, making it easier to integrate Civitai models into your workflows."
|
||||
},
|
||||
{
|
||||
"author": "zn123",
|
||||
"title": "ComfyUI-image-processor-zn123",
|
||||
"reference": "https://github.com/zn123/ComfyUI-image-processor-zn123",
|
||||
"files": [
|
||||
"https://github.com/zn123/ComfyUI-image-processor-zn123"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Comprehensive image processing plugin for ComfyUI"
|
||||
},
|
||||
{
|
||||
"author": "Koko-boya",
|
||||
"title": "Comfyui-Z-Image-Utilities",
|
||||
"reference": "https://github.com/Koko-boya/Comfyui-Z-Image-Utilities",
|
||||
"files": [
|
||||
"https://github.com/Koko-boya/Comfyui-Z-Image-Utilities"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Collection of utility nodes for ComfyUI designed specifically for the Z-Image model with vision model support and LLM-powered prompt enhancement."
|
||||
},
|
||||
{
|
||||
"author": "fredlef",
|
||||
"title": "ComfyUI FSL Nodes",
|
||||
"reference": "https://github.com/fredlef/Comfyui_FSL_Nodes",
|
||||
"files": [
|
||||
"https://github.com/fredlef/Comfyui_FSL_Nodes"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"tags": ["image", "chat", "gemini", "fsl"]
|
||||
},
|
||||
{
|
||||
"author": "exedesign",
|
||||
"title": "ComfyUI-Hunyuan3D-v3",
|
||||
"id": "hunyuan3d-v3",
|
||||
"reference": "https://github.com/exedesign/Hunyuan-3D-v3",
|
||||
"files": [
|
||||
"https://github.com/exedesign/Hunyuan-3D-v3"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Text-to-3D and Image-to-3D generation using Tencent Cloud Hunyuan 3D Global API. Supports PBR materials, face count control (40K-1.5M faces), and multiple generation types (Normal/LowPoly/Geometry/Sketch). Outputs industry-standard GLB format. Requires Tencent Cloud account with API access.",
|
||||
"nodename_pattern": "Hunyuan",
|
||||
"tags": ["3D", "generation", "text-to-3d", "image-to-3d", "hunyuan", "tencent"]
|
||||
},
|
||||
{
|
||||
"author": "btitkin",
|
||||
"title": "Random Prompt Builder",
|
||||
"id": "random-prompt-builder",
|
||||
"reference": "https://github.com/btitkin/ComfyUI-RandomPromptBuilder",
|
||||
"files": [
|
||||
"https://github.com/btitkin/ComfyUI-RandomPromptBuilder"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Advanced AI-powered prompt generation using local GGUF models. Generate detailed, structured prompts with character controls, style presets, and model-specific formatting for Pony, SDXL, Flux, and more. Supports GPU acceleration and runs completely offline."
|
||||
},
|
||||
{
|
||||
"author": "rjgoif",
|
||||
"title": "Img Label Tools",
|
||||
"id": "Img-Label-Tools",
|
||||
"reference": "https://github.com/rjgoif/ComfyUI-Img-Label-Tools",
|
||||
"install_type": "git-clone",
|
||||
"description": "Tools to help annotate images for sharing on Reddit, Discord, etc."
|
||||
},
|
||||
{
|
||||
"author": "mrf",
|
||||
"title": "ComfyPoe",
|
||||
"reference": "https://github.com/mrf/ComfyPoe",
|
||||
"files": [
|
||||
"https://github.com/mrf/ComfyPoe"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "ComfyUI nodes for image generation via Poe API"
|
||||
},
|
||||
{
|
||||
"author": "sirouk",
|
||||
"title": "chutes-comfyui-node",
|
||||
"reference": "https://github.com/sirouk/chutes-comfyui-node",
|
||||
"files": [
|
||||
"https://github.com/sirouk/chutes-comfyui-node"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "ComfyUI custom nodes for Chutes.ai video generation API"
|
||||
},
|
||||
{
|
||||
"author": "Tinuva88",
|
||||
"title": "Comfy-UmiAI",
|
||||
"reference": "https://github.com/Tinuva88/Comfy-UmiAI",
|
||||
"files": [
|
||||
"https://github.com/Tinuva88/Comfy-UmiAI"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "A logic engine for ComfyUI prompts that transforms static prompts into dynamic, context-aware workflows with persistent variables, conditional logic, native LoRA loading, and external data fetching. (Description by CC)"
|
||||
},
|
||||
|
||||
|
||||
|
||||
@ -37722,6 +38094,17 @@
|
||||
],
|
||||
"install_type": "unzip",
|
||||
"description": "This is a node to convert an image into a CMYK Halftone dot image."
|
||||
},
|
||||
{
|
||||
"author": "AICGayang",
|
||||
"title": "ComfyUI Ayang Node",
|
||||
"id": "ayang-node",
|
||||
"reference": "https://github.com/AICGayang/comfyui-ayang_node",
|
||||
"files": [
|
||||
"https://github.com/AICGayang/comfyui-ayang_node"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "A custom node pack for ComfyUI by AICGayang, providing new features and workflow nodes."
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
230
docs/en/v3.38-userdata-security-migration.md
Normal file
230
docs/en/v3.38-userdata-security-migration.md
Normal file
@ -0,0 +1,230 @@
|
||||
# ComfyUI-Manager V3.38: Userdata Security Migration Guide
|
||||
|
||||
## Introduction
|
||||
|
||||
ComfyUI-Manager V3.38 introduces a **security patch** that migrates Manager's configuration and data to a protected system path. This change leverages ComfyUI's new System User Protection API (PR #10966) to provide enhanced security isolation.
|
||||
|
||||
This guide explains what happens during the migration and how to handle various situations.
|
||||
|
||||
---
|
||||
|
||||
## What Changed
|
||||
|
||||
### Finding Your Paths
|
||||
|
||||
When ComfyUI starts, it displays the full paths in the terminal:
|
||||
|
||||
```
|
||||
** User directory: /path/to/ComfyUI/user
|
||||
** ComfyUI-Manager config path: /path/to/ComfyUI/user/__manager/config.ini
|
||||
```
|
||||
|
||||
Look for these lines in your startup log to find the exact location on your system. In this guide, paths are shown relative to the `user` directory.
|
||||
|
||||
### Path Migration
|
||||
|
||||
| Data | Legacy Path | New Path |
|
||||
|------|-------------|----------|
|
||||
| Configuration | `user/default/ComfyUI-Manager/` | `user/__manager/` |
|
||||
| Snapshots | `user/default/ComfyUI-Manager/snapshots/` | `user/__manager/snapshots/` |
|
||||
|
||||
### Why This Change
|
||||
|
||||
In older ComfyUI versions, the `default/` directory was **unprotected** and accessible via web APIs. If you ran ComfyUI with `--listen 0.0.0.0` or similar options to allow external connections, this data **may have been tampered with** by malicious actors.
|
||||
|
||||
**Note:** If you only used ComfyUI locally (without `--listen` or with `--listen 127.0.0.1`), your data was not exposed to this vulnerability.
|
||||
|
||||
The new `__manager` path uses ComfyUI's protected system directory, which:
|
||||
- **Cannot be accessed** from outside (protected by ComfyUI)
|
||||
- Isolates system settings from user data
|
||||
- Enables stricter security for remote access
|
||||
|
||||
**This is why only `config.ini` is automatically migrated** - other files (snapshots) may have been compromised and should be manually verified before copying.
|
||||
|
||||
---
|
||||
|
||||
## Automatic Migration
|
||||
|
||||
When you start ComfyUI with the new System User Protection API, Manager automatically handles the migration:
|
||||
|
||||
### Step 1: Configuration Migration
|
||||
|
||||
Only `config.ini` is migrated automatically.
|
||||
|
||||
**Important**: Snapshots are **NOT** automatically migrated. You must copy them manually if needed.
|
||||
|
||||
### Step 2: Security Level Check
|
||||
|
||||
During migration, if your security level is below `normal` (i.e., `weak` or `normal-`), it will be automatically raised to `normal`. This is a safety measure because the security level setting itself may have been tampered with in the old version.
|
||||
|
||||
```
|
||||
======================================================================
|
||||
[ComfyUI-Manager] WARNING: Security level adjusted
|
||||
- Previous: 'weak' → New: 'normal'
|
||||
- Raised to prevent unauthorized remote access.
|
||||
======================================================================
|
||||
```
|
||||
|
||||
If you need a lower security level, you can manually edit the config after migration.
|
||||
|
||||
### Step 3: Legacy Backup
|
||||
|
||||
Your entire legacy directory is moved to a backup location:
|
||||
```
|
||||
user/__manager/.legacy-manager-backup/
|
||||
```
|
||||
|
||||
This backup is preserved until you manually delete it.
|
||||
|
||||
---
|
||||
|
||||
## Persistent Backup Notification
|
||||
|
||||
As long as the backup exists, Manager will remind you on **every startup**:
|
||||
|
||||
```
|
||||
----------------------------------------------------------------------
|
||||
[ComfyUI-Manager] NOTICE: Legacy backup exists
|
||||
- Your old Manager data was backed up to:
|
||||
/path/to/ComfyUI/user/__manager/.legacy-manager-backup
|
||||
- Please verify and remove it when no longer needed.
|
||||
----------------------------------------------------------------------
|
||||
```
|
||||
|
||||
**To stop this notification**: Delete the `.legacy-manager-backup` folder inside `user/__manager/` after confirming you don't need any data from it.
|
||||
|
||||
---
|
||||
|
||||
## Recovering Old Data
|
||||
|
||||
### Snapshots
|
||||
|
||||
If you need your old snapshots, copy the contents of `.legacy-manager-backup/snapshots/` to `user/__manager/snapshots/`.
|
||||
|
||||
---
|
||||
|
||||
## Outdated ComfyUI Warning
|
||||
|
||||
If you're running an older version of ComfyUI without the System User Protection API, Manager will:
|
||||
|
||||
1. **Force security level to `strong`** - All installations are blocked
|
||||
2. **Display warning message**:
|
||||
|
||||
```
|
||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
[ComfyUI-Manager] ERROR: ComfyUI version is outdated!
|
||||
- Most operations are blocked for security.
|
||||
- ComfyUI update is still allowed.
|
||||
- Please update ComfyUI to use Manager normally.
|
||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
```
|
||||
|
||||
**Solution**: Update ComfyUI to v0.3.76 or later.
|
||||
|
||||
---
|
||||
|
||||
## Security Levels
|
||||
|
||||
| Level | What's Allowed |
|
||||
|-------|----------------|
|
||||
| `strong` | ComfyUI update only. All other installations blocked. |
|
||||
| `normal` | Install/update/remove registered custom nodes and models. |
|
||||
| `normal-` | Above + Install via Git URL or pip (localhost only). |
|
||||
| `weak` | All operations allowed, including from remote connections. |
|
||||
|
||||
**Notes:**
|
||||
- `strong` is forced on outdated ComfyUI versions.
|
||||
- `normal` is the default and recommended for most users.
|
||||
- `normal-` is for developers who need to install unregistered nodes locally.
|
||||
- `weak` should only be used in isolated development environments.
|
||||
|
||||
### Changing Security Level
|
||||
|
||||
Edit `user/__manager/config.ini`:
|
||||
```ini
|
||||
[default]
|
||||
security_level = normal
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Error Messages
|
||||
|
||||
### "comfyui_outdated" (HTTP 403)
|
||||
|
||||
This error appears when:
|
||||
- Your ComfyUI doesn't have the System User Protection API
|
||||
- All installations are blocked until you update ComfyUI
|
||||
|
||||
**Solution**: Update ComfyUI to the latest version.
|
||||
|
||||
### "security_level" (HTTP 403)
|
||||
|
||||
This error appears when:
|
||||
- Your security level blocks the requested operation
|
||||
- For example, `strong` level blocks all installations
|
||||
|
||||
**Solution**: Lower your security level in config.ini if appropriate for your use case.
|
||||
|
||||
---
|
||||
|
||||
## Security Warning: Suspicious Path
|
||||
|
||||
If you see this error on an **older** ComfyUI:
|
||||
|
||||
```
|
||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
[ComfyUI-Manager] ERROR: Suspicious path detected!
|
||||
- '__manager' exists with low security level: 'weak'
|
||||
- Please verify manually:
|
||||
/path/to/ComfyUI/user/__manager/config.ini
|
||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
```
|
||||
|
||||
On older ComfyUI versions, the `__manager` directory is not normally created. If this directory exists, it may have been created externally. For safety, manually verify the contents of this directory before updating ComfyUI.
|
||||
|
||||
---
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### All my installations are blocked
|
||||
|
||||
**Check 1**: Is your ComfyUI updated?
|
||||
- Old ComfyUI forces `security_level = strong`
|
||||
- Update ComfyUI to resolve
|
||||
|
||||
**Check 2**: What's your security level?
|
||||
- Check `user/__manager/config.ini`
|
||||
- `security_level = strong` blocks all installations
|
||||
|
||||
### My snapshots are missing
|
||||
|
||||
Snapshots are not automatically migrated. You need to manually copy the `snapshots` folder from inside `.legacy-manager-backup` to the `user/__manager/` directory.
|
||||
|
||||
### I keep seeing the backup notification
|
||||
|
||||
Delete the `.legacy-manager-backup` folder inside `user/__manager/` after confirming you don't need any data from it.
|
||||
|
||||
### Snapshot restore is blocked
|
||||
|
||||
On old ComfyUI (without System User API), snapshot restore is blocked because security is forced to `strong`. Update ComfyUI to enable snapshot restore.
|
||||
|
||||
---
|
||||
|
||||
## File Structure Reference
|
||||
|
||||
```
|
||||
user/
|
||||
└── __manager/
|
||||
├── config.ini # Manager configuration
|
||||
├── channels.list # Custom node channels
|
||||
├── snapshots/ # Environment snapshots
|
||||
└── .legacy-manager-backup/ # Backup of old Manager data (temporary)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Requirements
|
||||
|
||||
- **ComfyUI**: v0.3.76 or later (with System User Protection API)
|
||||
- **ComfyUI-Manager**: V3.38 or later
|
||||
File diff suppressed because it is too large
Load Diff
8743
github-stats.json
8743
github-stats.json
File diff suppressed because it is too large
Load Diff
@ -40,10 +40,11 @@ import cnr_utils
|
||||
import manager_util
|
||||
import git_utils
|
||||
import manager_downloader
|
||||
import manager_migration
|
||||
from node_package import InstalledNodePackage
|
||||
|
||||
|
||||
version_code = [3, 37, 2]
|
||||
version_code = [3, 38, 1]
|
||||
version_str = f"V{version_code[0]}.{version_code[1]}" + (f'.{version_code[2]}' if len(version_code) > 2 else '')
|
||||
|
||||
|
||||
@ -214,9 +215,10 @@ def update_user_directory(user_dir):
|
||||
global manager_pip_blacklist_path
|
||||
global manager_components_path
|
||||
|
||||
manager_files_path = os.path.abspath(os.path.join(user_dir, 'default', 'ComfyUI-Manager'))
|
||||
manager_files_path = manager_migration.get_manager_path(user_dir)
|
||||
if not os.path.exists(manager_files_path):
|
||||
os.makedirs(manager_files_path)
|
||||
manager_migration.run_migration_checks(user_dir, manager_files_path)
|
||||
|
||||
manager_snapshot_path = os.path.join(manager_files_path, "snapshots")
|
||||
if not os.path.exists(manager_snapshot_path):
|
||||
@ -1719,7 +1721,7 @@ def read_config():
|
||||
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 {
|
||||
result = {
|
||||
'http_channel_enabled': get_bool('http_channel_enabled', False),
|
||||
'preview_method': default_conf.get('preview_method', manager_funcs.get_current_preview_method()).lower(),
|
||||
'git_exe': default_conf.get('git_exe', ''),
|
||||
@ -1739,6 +1741,8 @@ def read_config():
|
||||
'security_level': default_conf.get('security_level', 'normal').lower(),
|
||||
'db_mode': default_conf.get('db_mode', 'cache').lower(),
|
||||
}
|
||||
manager_migration.force_security_level_if_needed(result)
|
||||
return result
|
||||
|
||||
except Exception:
|
||||
import importlib.util
|
||||
@ -1746,7 +1750,7 @@ def read_config():
|
||||
manager_util.use_uv = importlib.util.find_spec("uv") is not None and platform.system() != "Windows"
|
||||
manager_util.bypass_ssl = False
|
||||
|
||||
return {
|
||||
result = {
|
||||
'http_channel_enabled': False,
|
||||
'preview_method': manager_funcs.get_current_preview_method(),
|
||||
'git_exe': '',
|
||||
@ -1766,6 +1770,8 @@ def read_config():
|
||||
'security_level': 'normal', # strong | normal | normal- | weak
|
||||
'db_mode': 'cache', # local | cache | remote
|
||||
}
|
||||
manager_migration.force_security_level_if_needed(result)
|
||||
return result
|
||||
|
||||
|
||||
def get_config():
|
||||
@ -3360,8 +3366,8 @@ def get_comfyui_versions(repo=None):
|
||||
repo = git.Repo(comfy_path)
|
||||
|
||||
try:
|
||||
remote = get_remote_name(repo)
|
||||
repo.remotes[remote].fetch()
|
||||
remote = get_remote_name(repo)
|
||||
repo.remotes[remote].fetch()
|
||||
except:
|
||||
logging.error("[ComfyUI-Manager] Failed to fetch ComfyUI")
|
||||
|
||||
|
||||
356
glob/manager_migration.py
Normal file
356
glob/manager_migration.py
Normal file
@ -0,0 +1,356 @@
|
||||
"""
|
||||
ComfyUI-Manager migration module.
|
||||
Handles migration from legacy paths to new __manager path structure.
|
||||
"""
|
||||
|
||||
import os
|
||||
import sys
|
||||
import subprocess
|
||||
import configparser
|
||||
|
||||
# Startup notices for notice board
|
||||
startup_notices = [] # List of (message, level) tuples
|
||||
|
||||
|
||||
def add_startup_notice(message, level='warning'):
|
||||
"""Add a notice to be displayed on Manager notice board.
|
||||
|
||||
Args:
|
||||
message: HTML-formatted message string
|
||||
level: 'warning', 'error', 'info'
|
||||
"""
|
||||
global startup_notices
|
||||
startup_notices.append((message, level))
|
||||
|
||||
|
||||
# Cache for API check (computed once per session)
|
||||
_cached_has_system_user_api = None
|
||||
|
||||
|
||||
def has_system_user_api():
|
||||
"""Check if ComfyUI has the System User Protection API (PR #10966).
|
||||
|
||||
Result is cached for performance.
|
||||
"""
|
||||
global _cached_has_system_user_api
|
||||
if _cached_has_system_user_api is None:
|
||||
try:
|
||||
import folder_paths
|
||||
_cached_has_system_user_api = hasattr(folder_paths, 'get_system_user_directory')
|
||||
except Exception:
|
||||
_cached_has_system_user_api = False
|
||||
return _cached_has_system_user_api
|
||||
|
||||
|
||||
def get_manager_path(user_dir):
|
||||
"""Get the appropriate manager files path based on ComfyUI version.
|
||||
|
||||
Returns:
|
||||
str: manager_files_path
|
||||
"""
|
||||
if has_system_user_api():
|
||||
return os.path.abspath(os.path.join(user_dir, '__manager'))
|
||||
else:
|
||||
return os.path.abspath(os.path.join(user_dir, 'default', 'ComfyUI-Manager'))
|
||||
|
||||
|
||||
def run_migration_checks(user_dir, manager_files_path):
|
||||
"""Run all migration and security checks.
|
||||
|
||||
Call this after get_manager_path() to handle:
|
||||
- Legacy config migration (new ComfyUI)
|
||||
- Legacy backup notification (every startup)
|
||||
- Suspicious directory detection (old ComfyUI)
|
||||
- Outdated ComfyUI warning (old ComfyUI)
|
||||
"""
|
||||
if has_system_user_api():
|
||||
migrated = migrate_legacy_config(user_dir, manager_files_path)
|
||||
# Only check for legacy backup if migration didn't just happen
|
||||
# (migration already shows backup location in its message)
|
||||
if not migrated:
|
||||
check_legacy_backup(manager_files_path)
|
||||
else:
|
||||
check_suspicious_manager(user_dir)
|
||||
warn_outdated_comfyui()
|
||||
|
||||
|
||||
def check_legacy_backup(manager_files_path):
|
||||
"""Check for legacy backup and notify user to verify and remove it.
|
||||
|
||||
This runs on every startup to remind users about pending legacy backup.
|
||||
"""
|
||||
backup_dir = os.path.join(manager_files_path, '.legacy-manager-backup')
|
||||
if not os.path.exists(backup_dir):
|
||||
return
|
||||
|
||||
# Terminal output
|
||||
print("\n" + "-"*70)
|
||||
print("[ComfyUI-Manager] NOTICE: Legacy backup exists")
|
||||
print(" - Your old Manager data was backed up to:")
|
||||
print(f" {backup_dir}")
|
||||
print(" - Please verify and remove it when no longer needed.")
|
||||
print("-"*70 + "\n")
|
||||
|
||||
# Notice board output
|
||||
add_startup_notice(
|
||||
"Legacy ComfyUI-Manager data backup exists. Please verify and remove when no longer needed. See terminal for details.",
|
||||
level='info'
|
||||
)
|
||||
|
||||
|
||||
def check_suspicious_manager(user_dir):
|
||||
"""Check for suspicious __manager directory on old ComfyUI.
|
||||
|
||||
On old ComfyUI without System User API, if __manager exists with low security,
|
||||
warn the user to verify manually.
|
||||
|
||||
Returns:
|
||||
bool: True if suspicious setup detected
|
||||
"""
|
||||
if has_system_user_api():
|
||||
return False # Not suspicious on new ComfyUI
|
||||
|
||||
suspicious_path = os.path.abspath(os.path.join(user_dir, '__manager'))
|
||||
if not os.path.exists(suspicious_path):
|
||||
return False
|
||||
|
||||
config_path = os.path.join(suspicious_path, 'config.ini')
|
||||
if not os.path.exists(config_path):
|
||||
return False
|
||||
|
||||
config = configparser.ConfigParser()
|
||||
config.read(config_path)
|
||||
sec_level = config.get('default', 'security_level', fallback='normal').lower()
|
||||
|
||||
if sec_level in ['weak', 'normal-']:
|
||||
# Terminal output
|
||||
print("\n" + "!"*70)
|
||||
print("[ComfyUI-Manager] ERROR: Suspicious path detected!")
|
||||
print(f" - '__manager' exists with low security level: '{sec_level}'")
|
||||
print(" - Please verify manually:")
|
||||
print(f" {config_path}")
|
||||
print("!"*70 + "\n")
|
||||
|
||||
# Notice board output
|
||||
add_startup_notice(
|
||||
"[Security Alert] Suspicious path detected. See terminal log for details.",
|
||||
level='error'
|
||||
)
|
||||
return True
|
||||
|
||||
return False
|
||||
|
||||
|
||||
def warn_outdated_comfyui():
|
||||
"""Warn user about outdated ComfyUI without System User API."""
|
||||
if has_system_user_api():
|
||||
return
|
||||
|
||||
# Terminal output
|
||||
print("\n" + "!"*70)
|
||||
print("[ComfyUI-Manager] ERROR: ComfyUI version is outdated!")
|
||||
print(" - Most operations are blocked for security.")
|
||||
print(" - ComfyUI update is still allowed.")
|
||||
print(" - Please update ComfyUI to use Manager normally.")
|
||||
print("!"*70 + "\n")
|
||||
|
||||
# Notice board output
|
||||
add_startup_notice(
|
||||
"[Security Alert] ComfyUI outdated. Installations blocked (update allowed).<BR>"
|
||||
"Update ComfyUI for normal operation.",
|
||||
level='error'
|
||||
)
|
||||
|
||||
|
||||
def migrate_legacy_config(user_dir, manager_files_path):
|
||||
"""Migrate ONLY config.ini to new __manager path if needed.
|
||||
|
||||
IMPORTANT: Only config.ini is migrated. Other files (snapshots, cache, etc.)
|
||||
are NOT migrated - users must recreate them.
|
||||
|
||||
Scenarios:
|
||||
1. Legacy exists, New doesn't exist → Migrate config.ini
|
||||
2. Legacy exists, New exists → First update after upgrade
|
||||
- Run ComfyUI dependency installation
|
||||
- Rename legacy to .backup
|
||||
3. Legacy doesn't exist → No migration needed
|
||||
|
||||
Returns:
|
||||
bool: True if migration was performed
|
||||
"""
|
||||
if not has_system_user_api():
|
||||
return False
|
||||
|
||||
legacy_dir = os.path.join(user_dir, 'default', 'ComfyUI-Manager')
|
||||
legacy_config = os.path.join(legacy_dir, 'config.ini')
|
||||
new_config = os.path.join(manager_files_path, 'config.ini')
|
||||
|
||||
if not os.path.exists(legacy_dir):
|
||||
return False # No legacy directory, nothing to migrate
|
||||
|
||||
# IMPORTANT: Check for config.ini existence, not just directory
|
||||
# (because makedirs() creates __manager before this function is called)
|
||||
|
||||
# Case: Both configs exist (first update after ComfyUI upgrade)
|
||||
# This means user ran new ComfyUI at least once, creating __manager/config.ini
|
||||
if os.path.exists(legacy_config) and os.path.exists(new_config):
|
||||
_handle_first_update_migration(user_dir, legacy_dir, manager_files_path)
|
||||
return True
|
||||
|
||||
# Case: Legacy config exists but new config doesn't (normal migration)
|
||||
# This is the first run after ComfyUI upgrade
|
||||
if os.path.exists(legacy_config) and not os.path.exists(new_config):
|
||||
pass # Continue with normal migration below
|
||||
else:
|
||||
return False
|
||||
|
||||
# Terminal output
|
||||
print("\n" + "-"*70)
|
||||
print("[ComfyUI-Manager] NOTICE: Legacy config.ini detected")
|
||||
print(f" - Old: {legacy_config}")
|
||||
print(f" - New: {new_config}")
|
||||
print(" - Migrating config.ini only (other files are NOT migrated).")
|
||||
print(" - Security level below 'normal' will be raised.")
|
||||
print("-"*70 + "\n")
|
||||
|
||||
_migrate_config_with_security_check(legacy_config, new_config)
|
||||
|
||||
# Move legacy directory to backup
|
||||
_move_legacy_to_backup(legacy_dir, manager_files_path)
|
||||
|
||||
return True
|
||||
|
||||
|
||||
def _handle_first_update_migration(user_dir, legacy_dir, manager_files_path):
|
||||
"""Handle first ComfyUI update when both legacy and new directories exist.
|
||||
|
||||
This scenario happens when:
|
||||
- User was on old ComfyUI (using default/ComfyUI-Manager)
|
||||
- ComfyUI was updated (now has System User API)
|
||||
- Manager already created __manager on first new run
|
||||
- But legacy directory still exists
|
||||
|
||||
Actions:
|
||||
1. Run ComfyUI dependency installation
|
||||
2. Move legacy to __manager/.legacy-manager-backup
|
||||
"""
|
||||
# Terminal output
|
||||
print("\n" + "-"*70)
|
||||
print("[ComfyUI-Manager] NOTICE: First update after ComfyUI upgrade detected")
|
||||
print(" - Both legacy and new directories exist.")
|
||||
print(" - Running ComfyUI dependency installation...")
|
||||
print("-"*70 + "\n")
|
||||
|
||||
# Run ComfyUI dependency installation
|
||||
# Path: glob/manager_migration.py → glob → comfyui-manager → custom_nodes → ComfyUI
|
||||
try:
|
||||
comfyui_path = os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(__file__))))
|
||||
requirements_path = os.path.join(comfyui_path, 'requirements.txt')
|
||||
if os.path.exists(requirements_path):
|
||||
subprocess.run([sys.executable, '-m', 'pip', 'install', '-r', requirements_path],
|
||||
capture_output=True, check=False)
|
||||
print("[ComfyUI-Manager] ComfyUI dependencies installation completed.")
|
||||
except Exception as e:
|
||||
print(f"[ComfyUI-Manager] WARNING: Failed to install ComfyUI dependencies: {e}")
|
||||
|
||||
# Move legacy to backup inside __manager
|
||||
_move_legacy_to_backup(legacy_dir, manager_files_path)
|
||||
|
||||
|
||||
def _move_legacy_to_backup(legacy_dir, manager_files_path):
|
||||
"""Move legacy directory to backup inside __manager.
|
||||
|
||||
Returns:
|
||||
str: Path to backup directory if successful, None if failed
|
||||
"""
|
||||
import shutil
|
||||
|
||||
backup_dir = os.path.join(manager_files_path, '.legacy-manager-backup')
|
||||
|
||||
try:
|
||||
if os.path.exists(backup_dir):
|
||||
shutil.rmtree(backup_dir) # Remove old backup if exists
|
||||
shutil.move(legacy_dir, backup_dir)
|
||||
|
||||
# Terminal output (full paths shown here only)
|
||||
print("\n" + "-"*70)
|
||||
print("[ComfyUI-Manager] NOTICE: Legacy settings migrated")
|
||||
print(f" - Old location: {legacy_dir}")
|
||||
print(f" - Backed up to: {backup_dir}")
|
||||
print(" - Please verify and remove the backup when no longer needed.")
|
||||
print("-"*70 + "\n")
|
||||
|
||||
# Notice board output (no full paths for security)
|
||||
add_startup_notice(
|
||||
"Legacy ComfyUI-Manager data migrated. See terminal for details.",
|
||||
level='info'
|
||||
)
|
||||
return backup_dir
|
||||
except Exception as e:
|
||||
print(f"[ComfyUI-Manager] WARNING: Failed to backup legacy directory: {e}")
|
||||
add_startup_notice(
|
||||
f"[MIGRATION] Failed to backup legacy directory: {e}",
|
||||
level='warning'
|
||||
)
|
||||
return None
|
||||
|
||||
|
||||
def _migrate_config_with_security_check(legacy_path, new_path):
|
||||
"""Migrate legacy config, raising security level only if below default."""
|
||||
config = configparser.ConfigParser()
|
||||
try:
|
||||
config.read(legacy_path)
|
||||
except Exception as e:
|
||||
print(f"[ComfyUI-Manager] WARNING: Failed to parse config.ini: {e}")
|
||||
print(" - Creating fresh config with default settings.")
|
||||
add_startup_notice(
|
||||
"[MIGRATION] Failed to parse legacy config. Using defaults.",
|
||||
level='warning'
|
||||
)
|
||||
return # Skip migration, let Manager create fresh config
|
||||
|
||||
# Security level hierarchy: strong > normal > normal- > weak
|
||||
# Default is 'normal', only raise if below default
|
||||
if 'default' in config:
|
||||
current_level = config['default'].get('security_level', 'normal').lower()
|
||||
below_default_levels = ['weak', 'normal-']
|
||||
|
||||
if current_level in below_default_levels:
|
||||
config['default']['security_level'] = 'normal'
|
||||
|
||||
# Terminal output
|
||||
print("\n" + "="*70)
|
||||
print("[ComfyUI-Manager] WARNING: Security level adjusted")
|
||||
print(f" - Previous: '{current_level}' → New: 'normal'")
|
||||
print(" - Raised to prevent unauthorized remote access.")
|
||||
print("="*70 + "\n")
|
||||
|
||||
# Notice board output
|
||||
add_startup_notice(
|
||||
f"[MIGRATION] Security level raised: '{current_level}' → 'normal'.<BR>"
|
||||
"To prevent unauthorized remote access.",
|
||||
level='warning'
|
||||
)
|
||||
else:
|
||||
print(f" - Security level: '{current_level}' (no change needed)")
|
||||
|
||||
# Ensure directory exists
|
||||
os.makedirs(os.path.dirname(new_path), exist_ok=True)
|
||||
|
||||
with open(new_path, 'w') as f:
|
||||
config.write(f)
|
||||
|
||||
|
||||
def force_security_level_if_needed(config_dict):
|
||||
"""Force security level to 'strong' if on old ComfyUI.
|
||||
|
||||
Args:
|
||||
config_dict: Configuration dictionary to modify in-place
|
||||
|
||||
Returns:
|
||||
bool: True if security level was forced
|
||||
"""
|
||||
if not has_system_user_api():
|
||||
config_dict['security_level'] = 'strong'
|
||||
return True
|
||||
return False
|
||||
@ -22,6 +22,7 @@ import asyncio
|
||||
import queue
|
||||
|
||||
import manager_downloader
|
||||
import manager_migration
|
||||
|
||||
|
||||
logging.info(f"### Loading: ComfyUI-Manager ({core.version_str})")
|
||||
@ -276,6 +277,13 @@ import zipfile
|
||||
import urllib.request
|
||||
|
||||
|
||||
def security_403_response():
|
||||
"""Return appropriate 403 response based on ComfyUI version."""
|
||||
if not manager_migration.has_system_user_api():
|
||||
return web.json_response({"error": "comfyui_outdated"}, status=403)
|
||||
return web.json_response({"error": "security_level"}, status=403)
|
||||
|
||||
|
||||
def get_model_dir(data, show_log=False):
|
||||
if 'download_model_base' in folder_paths.folder_names_and_paths:
|
||||
models_base = folder_paths.folder_names_and_paths['download_model_base'][0][0]
|
||||
@ -732,7 +740,7 @@ async def fetch_updates(request):
|
||||
async def update_all(request):
|
||||
if not is_allowed_security_level('middle'):
|
||||
logging.error(SECURITY_MESSAGE_MIDDLE_OR_BELOW)
|
||||
return web.Response(status=403)
|
||||
return security_403_response()
|
||||
|
||||
with task_worker_lock:
|
||||
is_processing = task_worker_thread is not None and task_worker_thread.is_alive()
|
||||
@ -965,7 +973,7 @@ async def get_snapshot_list(request):
|
||||
async def remove_snapshot(request):
|
||||
if not is_allowed_security_level('middle'):
|
||||
logging.error(SECURITY_MESSAGE_MIDDLE_OR_BELOW)
|
||||
return web.Response(status=403)
|
||||
return security_403_response()
|
||||
|
||||
try:
|
||||
target = request.rel_url.query["target"]
|
||||
@ -983,7 +991,7 @@ async def remove_snapshot(request):
|
||||
async def restore_snapshot(request):
|
||||
if not is_allowed_security_level('middle'):
|
||||
logging.error(SECURITY_MESSAGE_MIDDLE_OR_BELOW)
|
||||
return web.Response(status=403)
|
||||
return security_403_response()
|
||||
|
||||
try:
|
||||
target = request.rel_url.query["target"]
|
||||
@ -1302,7 +1310,7 @@ async def fix_custom_node(request):
|
||||
async def install_custom_node_git_url(request):
|
||||
if not is_allowed_security_level('high'):
|
||||
logging.error(SECURITY_MESSAGE_NORMAL_MINUS)
|
||||
return web.Response(status=403)
|
||||
return security_403_response()
|
||||
|
||||
url = await request.text()
|
||||
res = await core.gitclone_install(url)
|
||||
@ -1322,7 +1330,7 @@ async def install_custom_node_git_url(request):
|
||||
async def install_custom_node_pip(request):
|
||||
if not is_allowed_security_level('high'):
|
||||
logging.error(SECURITY_MESSAGE_NORMAL_MINUS)
|
||||
return web.Response(status=403)
|
||||
return security_403_response()
|
||||
|
||||
packages = await request.text()
|
||||
core.pip_install(packages.split(' '))
|
||||
@ -1594,6 +1602,16 @@ async def get_notice(request):
|
||||
except:
|
||||
pass
|
||||
|
||||
# Prepend startup notices from manager_migration
|
||||
for message, level in reversed(manager_migration.startup_notices):
|
||||
if level == 'error':
|
||||
style = 'color:red; background-color:white; font-weight:bold'
|
||||
elif level == 'warning':
|
||||
style = 'color:orange; background-color:white; font-weight:bold'
|
||||
else:
|
||||
style = 'color:blue; background-color:white'
|
||||
markdown_content = f'<P style="{style}">{message}</P>' + markdown_content
|
||||
|
||||
return web.Response(text=markdown_content, status=200)
|
||||
else:
|
||||
return web.Response(text="Unable to retrieve Notice", status=200)
|
||||
@ -1601,11 +1619,35 @@ async def get_notice(request):
|
||||
return web.Response(text="Unable to retrieve Notice", status=200)
|
||||
|
||||
|
||||
@routes.get("/manager/startup_alerts")
|
||||
async def get_startup_alerts(request):
|
||||
"""Return startup alerts for customAlert display on page load.
|
||||
|
||||
Returns JSON array of alerts that should be shown to user immediately.
|
||||
All startup notices (error, warning, info) are returned.
|
||||
"""
|
||||
alerts = []
|
||||
|
||||
# Return all startup notices for alert display
|
||||
for message, level in manager_migration.startup_notices:
|
||||
# Convert HTML BR to newlines for customAlert
|
||||
text = message.replace('<BR>', '\n').replace('<br>', '\n')
|
||||
# Add [ComfyUI-Manager] prefix for customAlert (notice board shows in Manager UI anyway)
|
||||
text = text.replace('[Security Alert]', '[ComfyUI-Manager] Security Alert:')
|
||||
text = text.replace('[MIGRATION]', '[ComfyUI-Manager] Migration:')
|
||||
alerts.append({
|
||||
'message': text,
|
||||
'level': level
|
||||
})
|
||||
|
||||
return web.json_response(alerts)
|
||||
|
||||
|
||||
@routes.get("/manager/reboot")
|
||||
def restart(self):
|
||||
if not is_allowed_security_level('middle'):
|
||||
logging.error(SECURITY_MESSAGE_MIDDLE_OR_BELOW)
|
||||
return web.Response(status=403)
|
||||
return security_403_response()
|
||||
|
||||
try:
|
||||
sys.stdout.close_log()
|
||||
|
||||
@ -55,7 +55,7 @@ def get_pip_cmd(force_uv=False):
|
||||
subprocess.check_output(test_cmd, stderr=subprocess.DEVNULL, timeout=5)
|
||||
return [sys.executable] + (['-s'] if embedded else []) + ['-m', 'pip']
|
||||
except Exception:
|
||||
logging.warning("[ComfyUI-Manager] python -m pip not available. Falling back to uv.")
|
||||
logging.warning("[ComfyUI-Manager] `python -m pip` not available. Falling back to `uv`.")
|
||||
|
||||
# Try uv (either forced or pip failed)
|
||||
import shutil
|
||||
@ -64,19 +64,19 @@ def get_pip_cmd(force_uv=False):
|
||||
try:
|
||||
test_cmd = [sys.executable] + (['-s'] if embedded else []) + ['-m', 'uv', '--version']
|
||||
subprocess.check_output(test_cmd, stderr=subprocess.DEVNULL, timeout=5)
|
||||
logging.info("[ComfyUI-Manager] Using uv as Python module for pip operations.")
|
||||
logging.info("[ComfyUI-Manager] Using `uv` as Python module for pip operations.")
|
||||
return [sys.executable] + (['-s'] if embedded else []) + ['-m', 'uv', 'pip']
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
# Try standalone uv
|
||||
if shutil.which('uv'):
|
||||
logging.info("[ComfyUI-Manager] Using standalone uv for pip operations.")
|
||||
logging.info("[ComfyUI-Manager] Using standalone `uv` for pip operations.")
|
||||
return ['uv', 'pip']
|
||||
|
||||
# Nothing worked
|
||||
logging.error("[ComfyUI-Manager] Neither python -m pip nor uv are available. Cannot proceed with package operations.")
|
||||
raise Exception("Neither pip nor uv are available for package management")
|
||||
logging.error("[ComfyUI-Manager] Neither `python -m pip` nor `uv` are available. Cannot proceed with package operations.")
|
||||
raise Exception("Neither `pip` nor `uv` are available for package management")
|
||||
|
||||
|
||||
def make_pip_cmd(cmd):
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import { api } from "../../scripts/api.js";
|
||||
import { app } from "../../scripts/app.js";
|
||||
import { sleep, customConfirm, customAlert } from "./common.js";
|
||||
import { sleep, customConfirm, customAlert, handle403Response, show_message } from "./common.js";
|
||||
|
||||
async function tryInstallCustomNode(event) {
|
||||
let msg = '-= [ComfyUI Manager] extension installation request =-\n\n';
|
||||
@ -42,7 +42,7 @@ async function tryInstallCustomNode(event) {
|
||||
});
|
||||
|
||||
if(response.status == 403) {
|
||||
show_message('This action is not allowed with this security level configuration.');
|
||||
await handle403Response(response);
|
||||
return false;
|
||||
}
|
||||
else if(response.status == 400) {
|
||||
@ -54,7 +54,7 @@ async function tryInstallCustomNode(event) {
|
||||
|
||||
let response = await api.fetchApi("/manager/reboot");
|
||||
if(response.status == 403) {
|
||||
show_message('This action is not allowed with this security level configuration.');
|
||||
await handle403Response(response);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@ -14,7 +14,7 @@ import { OpenArtShareDialog } from "./comfyui-share-openart.js";
|
||||
import {
|
||||
free_models, install_pip, install_via_git_url, manager_instance,
|
||||
rebootAPI, setManagerInstance, show_message, customAlert, customPrompt,
|
||||
infoToast, showTerminal, setNeedRestart
|
||||
infoToast, showTerminal, setNeedRestart, handle403Response
|
||||
} from "./common.js";
|
||||
import { ComponentBuilderDialog, getPureName, load_components, set_component_policy } from "./components-manager.js";
|
||||
import { CustomNodesManager } from "./custom-nodes-manager.js";
|
||||
@ -753,9 +753,9 @@ async function onQueueStatus(event) {
|
||||
|
||||
const rebootButton = document.getElementById('cm-reboot-button5');
|
||||
rebootButton?.addEventListener("click",
|
||||
function() {
|
||||
if(rebootAPI()) {
|
||||
manager_dialog.close();
|
||||
async function() {
|
||||
if(await rebootAPI()) {
|
||||
manager_instance.close();
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -780,8 +780,13 @@ async function updateAll(update_comfyui) {
|
||||
|
||||
const response = await api.fetchApi(`/manager/queue/update_all?mode=${mode}`);
|
||||
|
||||
if (response.status == 401) {
|
||||
if (response.status == 403) {
|
||||
await handle403Response(response);
|
||||
reset_action_buttons();
|
||||
}
|
||||
else if (response.status == 401) {
|
||||
customAlert('Another task is already in progress. Please stop the ongoing task first.');
|
||||
reset_action_buttons();
|
||||
}
|
||||
else if(response.status == 200) {
|
||||
is_updating = true;
|
||||
@ -1453,6 +1458,31 @@ app.registerExtension({
|
||||
|
||||
load_components();
|
||||
|
||||
// Fetch and show startup alerts (critical errors like outdated ComfyUI)
|
||||
// Poll until extensionManager.toast is ready (set in Vue onMounted)
|
||||
const showStartupAlerts = async () => {
|
||||
let toastWaitCount = 0;
|
||||
const waitForToast = () => {
|
||||
if (window['app']?.extensionManager?.toast) {
|
||||
fetch('/manager/startup_alerts')
|
||||
.then(response => response.ok ? response.json() : [])
|
||||
.then(alerts => {
|
||||
for (const alert of alerts) {
|
||||
customAlert(alert.message);
|
||||
}
|
||||
})
|
||||
.catch(e => console.warn('[ComfyUI-Manager] Failed to fetch startup alerts:', e));
|
||||
} else if (toastWaitCount < 300) { // Max 30 seconds (300 * 100ms)
|
||||
toastWaitCount++;
|
||||
setTimeout(waitForToast, 100);
|
||||
} else {
|
||||
console.warn('[ComfyUI-Manager] Timeout waiting for toast. Startup alerts skipped.');
|
||||
}
|
||||
};
|
||||
waitForToast();
|
||||
};
|
||||
showStartupAlerts();
|
||||
|
||||
const menu = document.querySelector(".comfy-menu");
|
||||
const separator = document.createElement("hr");
|
||||
|
||||
|
||||
40
js/common.js
40
js/common.js
@ -100,6 +100,19 @@ export function show_message(msg) {
|
||||
app.ui.dialog.element.style.zIndex = 1100;
|
||||
}
|
||||
|
||||
export async function handle403Response(res, defaultMessage) {
|
||||
try {
|
||||
const data = await res.json();
|
||||
if(data.error === 'comfyui_outdated') {
|
||||
show_message('ComfyUI version is outdated.<BR>Please update ComfyUI to use Manager normally.');
|
||||
} else {
|
||||
show_message(defaultMessage || 'This action is not allowed with this security level configuration.');
|
||||
}
|
||||
} catch {
|
||||
show_message(defaultMessage || 'This action is not allowed with this security level configuration.');
|
||||
}
|
||||
}
|
||||
|
||||
export async function sleep(ms) {
|
||||
return new Promise(resolve => setTimeout(resolve, ms));
|
||||
}
|
||||
@ -163,20 +176,23 @@ export async function customPrompt(title, message) {
|
||||
}
|
||||
|
||||
|
||||
export function rebootAPI() {
|
||||
export async function rebootAPI() {
|
||||
if ('electronAPI' in window) {
|
||||
window.electronAPI.restartApp();
|
||||
return true;
|
||||
}
|
||||
|
||||
customConfirm("Are you sure you'd like to reboot the server?").then((isConfirmed) => {
|
||||
if (isConfirmed) {
|
||||
try {
|
||||
api.fetchApi("/manager/reboot");
|
||||
const isConfirmed = await customConfirm("Are you sure you'd like to reboot the server?");
|
||||
if (isConfirmed) {
|
||||
try {
|
||||
const response = await api.fetchApi("/manager/reboot");
|
||||
if (response.status == 403) {
|
||||
await handle403Response(response);
|
||||
return false;
|
||||
}
|
||||
catch(exception) {}
|
||||
}
|
||||
});
|
||||
catch(exception) {}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
@ -216,7 +232,7 @@ export async function install_pip(packages) {
|
||||
});
|
||||
|
||||
if(res.status == 403) {
|
||||
show_message('This action is not allowed with this security level configuration.');
|
||||
await handle403Response(res);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -251,7 +267,7 @@ export async function install_via_git_url(url, manager_dialog) {
|
||||
});
|
||||
|
||||
if(res.status == 403) {
|
||||
show_message('This action is not allowed with this security level configuration.');
|
||||
await handle403Response(res);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -262,9 +278,9 @@ export async function install_via_git_url(url, manager_dialog) {
|
||||
const self = this;
|
||||
|
||||
rebootButton.addEventListener("click",
|
||||
function() {
|
||||
if(rebootAPI()) {
|
||||
manager_dialog.close();
|
||||
async function() {
|
||||
if(await rebootAPI()) {
|
||||
manager_instance.close();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@ -7,7 +7,7 @@ import {
|
||||
fetchData, md5, icons, show_message, customConfirm, customAlert, customPrompt,
|
||||
sanitizeHTML, infoToast, showTerminal, setNeedRestart,
|
||||
storeColumnWidth, restoreColumnWidth, getTimeAgo, copyText, loadCss,
|
||||
showPopover, hidePopover
|
||||
showPopover, hidePopover, handle403Response
|
||||
} from "./common.js";
|
||||
|
||||
// https://cenfun.github.io/turbogrid/api.html
|
||||
@ -1528,7 +1528,16 @@ export class CustomNodesManager {
|
||||
errorMsg = `'${item.title}': `;
|
||||
|
||||
if(res.status == 403) {
|
||||
errorMsg += `This action is not allowed with this security level configuration.\n`;
|
||||
try {
|
||||
const data = await res.json();
|
||||
if(data.error === 'comfyui_outdated') {
|
||||
errorMsg += `ComfyUI version is outdated. Please update ComfyUI to use Manager normally.\n`;
|
||||
} else {
|
||||
errorMsg += `This action is not allowed with this security level configuration.\n`;
|
||||
}
|
||||
} catch {
|
||||
errorMsg += `This action is not allowed with this security level configuration.\n`;
|
||||
}
|
||||
} else if(res.status == 404) {
|
||||
errorMsg += `With the current security level configuration, only custom nodes from the <B>"default channel"</B> can be installed.\n`;
|
||||
} else {
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
import { app } from "../../scripts/app.js";
|
||||
import { $el } from "../../scripts/ui.js";
|
||||
import {
|
||||
manager_instance, rebootAPI,
|
||||
import {
|
||||
manager_instance, rebootAPI,
|
||||
fetchData, md5, icons, show_message, customAlert, infoToast, showTerminal,
|
||||
storeColumnWidth, restoreColumnWidth, loadCss
|
||||
storeColumnWidth, restoreColumnWidth, loadCss, handle403Response
|
||||
} from "./common.js";
|
||||
import { api } from "../../scripts/api.js";
|
||||
|
||||
@ -477,7 +477,16 @@ export class ModelManager {
|
||||
errorMsg = `'${item.name}': `;
|
||||
|
||||
if(res.status == 403) {
|
||||
errorMsg += `This action is not allowed with this security level configuration.\n`;
|
||||
try {
|
||||
const data = await res.json();
|
||||
if(data.error === 'comfyui_outdated') {
|
||||
errorMsg += `ComfyUI version is outdated. Please update ComfyUI to use Manager normally.\n`;
|
||||
} else {
|
||||
errorMsg += `This action is not allowed with this security level configuration.\n`;
|
||||
}
|
||||
} catch {
|
||||
errorMsg += `This action is not allowed with this security level configuration.\n`;
|
||||
}
|
||||
} else {
|
||||
errorMsg += await res.text() + '\n';
|
||||
}
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import { app } from "../../scripts/app.js";
|
||||
import { api } from "../../scripts/api.js"
|
||||
import { ComfyDialog, $el } from "../../scripts/ui.js";
|
||||
import { manager_instance, rebootAPI, show_message } from "./common.js";
|
||||
import { manager_instance, rebootAPI, show_message, handle403Response } from "./common.js";
|
||||
|
||||
|
||||
async function restore_snapshot(target) {
|
||||
@ -10,7 +10,7 @@ async function restore_snapshot(target) {
|
||||
const response = await api.fetchApi(`/snapshot/restore?target=${target}`, { cache: "no-store" });
|
||||
|
||||
if(response.status == 403) {
|
||||
show_message('This action is not allowed with this security level configuration.');
|
||||
await handle403Response(response);
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -38,7 +38,7 @@ async function remove_snapshot(target) {
|
||||
const response = await api.fetchApi(`/snapshot/remove?target=${target}`, { cache: "no-store" });
|
||||
|
||||
if(response.status == 403) {
|
||||
show_message('This action is not allowed with this security level configuration.');
|
||||
await handle403Response(response);
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -145,8 +145,8 @@ export class SnapshotManager extends ComfyDialog {
|
||||
if(btn_id) {
|
||||
const rebootButton = document.getElementById(btn_id);
|
||||
const self = this;
|
||||
rebootButton.onclick = function() {
|
||||
if(rebootAPI()) {
|
||||
rebootButton.onclick = async function() {
|
||||
if(await rebootAPI()) {
|
||||
self.close();
|
||||
self.manager_dialog.close();
|
||||
}
|
||||
|
||||
@ -1,5 +1,115 @@
|
||||
{
|
||||
"custom_nodes": [
|
||||
{
|
||||
"author": "quinteroac",
|
||||
"title": "comfyui_api_executor_nodes",
|
||||
"reference": "https://github.com/quinteroac/comfyui_api_executor_nodes",
|
||||
"files": [
|
||||
"https://github.com/quinteroac/comfyui_api_executor_nodes"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Custom nodes for ComfyUI that enable workflow execution via API (internal or external), as well as input/output handling and workflow selection."
|
||||
},
|
||||
{
|
||||
"author": "Chang-Jin-Lee",
|
||||
"title": "ComfyUI-PromptMixer-AI [WIP]",
|
||||
"reference": "https://github.com/Chang-Jin-Lee/ComfyUI-PromptMixer-AI",
|
||||
"files": [
|
||||
"https://github.com/Chang-Jin-Lee/ComfyUI-PromptMixer-AI"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "ComfyUI custom node collection for unified control of checkpoints, steps, CFG, samplers, LoRA and prompt parameters with local LLM integration. (Description by CC)\nNOTE: The files in the repo are not organized."
|
||||
},
|
||||
{
|
||||
"author": "leacvikas0",
|
||||
"title": "ComfyUI-Presence [WIP]",
|
||||
"reference": "https://github.com/leacvikas0/ComfyUI-Presence",
|
||||
"files": [
|
||||
"https://github.com/leacvikas0/ComfyUI-Presence"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "NODES: BeautifulTextNode, FluxAdaptiveInjector, InspectNode, PresenceDirector, PresenceDirectorFireworks, PresenceDirectorVertex, PresenceSaver, UnaliverBundlePreview, UnaliverNode, UnaliverPlanner, UnaliverStepIterato, ...\nNOTE: The files in the repo are not organized."
|
||||
},
|
||||
{
|
||||
"author": "Kraven1109",
|
||||
"title": "ComfyUI-Llama [NAME CONFLICT]",
|
||||
"reference": "https://github.com/Kraven1109/ComfyUI-Llama",
|
||||
"files": [
|
||||
"https://github.com/Kraven1109/ComfyUI-Llama"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Lightweight ComfyUI plugin exposing llama.cpp-based one-shot Qwen VQA nodes."
|
||||
},
|
||||
{
|
||||
"author": "xiaoxidashen",
|
||||
"title": "comfyui_my_utils",
|
||||
"reference": "https://github.com/xiaoxidashen/comfyui_my_utils",
|
||||
"files": [
|
||||
"https://github.com/xiaoxidashen/comfyui_my_utils"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Guide and utilities for creating ComfyUI custom nodes with image/video preview functionality. (Description by CC)"
|
||||
},
|
||||
{
|
||||
"author": "agavesunset",
|
||||
"title": "ComfyUI_LoRA_Tracker",
|
||||
"reference": "https://github.com/agavesunset/ComfyUI_LoRA_Tracker",
|
||||
"files": [
|
||||
"https://github.com/agavesunset/ComfyUI_LoRA_Tracker"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "ComfyUI node for tracking and displaying LoRA parameters. (Description by CC)"
|
||||
},
|
||||
{
|
||||
"author": "anilsathyan7",
|
||||
"title": "ComfyUI-Crystal-Upscaler",
|
||||
"reference": "https://github.com/anilsathyan7/ComfyUI-Crystal-Upscaler",
|
||||
"files": [
|
||||
"https://github.com/anilsathyan7/ComfyUI-Crystal-Upscaler"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "ComfyUI custom node for image upscaling using crystal upscaling technology. (Description by CC)"
|
||||
},
|
||||
{
|
||||
"author": "SleazySleaze",
|
||||
"title": "aesthetic-persona-comfyui-node",
|
||||
"reference": "https://github.com/SleazySleaze/aesthetic-persona-comfyui-node",
|
||||
"files": [
|
||||
"https://github.com/SleazySleaze/aesthetic-persona-comfyui-node"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Node providing aesthetic persona parsing capabilities for ComfyUI. (Description by CC)"
|
||||
},
|
||||
{
|
||||
"author": "xtanqn",
|
||||
"title": "comfyui-xishen [WIP]",
|
||||
"reference": "https://github.com/xtanqn/comfyui-xishen",
|
||||
"files": [
|
||||
"https://github.com/xtanqn/comfyui-xishen"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "A custom node for ComfyUI that generates random numbers as text output.\nNOTE: The files in the repo are not organized."
|
||||
},
|
||||
{
|
||||
"author": "heyburns",
|
||||
"title": "ComfyUI-Logic-Redux [WIP]",
|
||||
"reference": "https://github.com/heyburns/ComfyUI-Logic-Redux",
|
||||
"files": [
|
||||
"https://github.com/heyburns/ComfyUI-Logic-Redux"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Validation-friendly rewrite of ComfyUI Logic nodes with drop-in compatibility, featuring compare, int/float/bool/string pass-through, ternary logic, and debug nodes. (Description by CC)\nNOTE: The files in the repo are not organized."
|
||||
},
|
||||
{
|
||||
"author": "Mohamed-Sakr",
|
||||
"title": "ComfyUI-SimpleMarkdown [UNSAFE]",
|
||||
"reference": "https://github.com/Mohamed-Sakr/ComfyUI-SimpleMarkdown",
|
||||
"files": [
|
||||
"https://github.com/Mohamed-Sakr/ComfyUI-SimpleMarkdown"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "A simple markdown node for ComfyUI[w/This nodepack has a frontend vulnerability.]"
|
||||
},
|
||||
{
|
||||
"author": "starsFriday",
|
||||
"title": "ComfyUI-Tracker-Person [WIP]",
|
||||
@ -1203,16 +1313,6 @@
|
||||
"install_type": "git-clone",
|
||||
"description": "NODES: Image Size Input, Date/Time based output path"
|
||||
},
|
||||
{
|
||||
"author": "octapus8085",
|
||||
"title": "OpenAI-comfyui-O",
|
||||
"reference": "https://github.com/Spicely/Comfyui-File-Utils",
|
||||
"files": [
|
||||
"https://github.com/Spicely/Comfyui-File-Utils"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "This plugin provides multiple file-handling and utility nodes for ComfyUI, including: image saving, audio saving, video saving, video composition, audio-to-subtitle conversion, and random number generation nodes. These nodes not only process files but also return their absolute file paths.\nNOTE: The files in the repo are not organized.[w/This nodepack contains a node that has a vulnerability allowing write to arbitrary file paths.]"
|
||||
},
|
||||
{
|
||||
"author": "octapus8085",
|
||||
"title": "OpenAI-comfyui-O",
|
||||
|
||||
@ -340,6 +340,8 @@
|
||||
"ImageBlendText",
|
||||
"ImageBlendV1",
|
||||
"ImageRatioCrop",
|
||||
"Load_Images_Advance",
|
||||
"Load_Images_V1",
|
||||
"PDEmptyRatioLatent",
|
||||
"PDIMAGE_ImageCombine",
|
||||
"PDIMAGE_LongerSize",
|
||||
@ -349,18 +351,29 @@
|
||||
"PDImageResizeV2",
|
||||
"PDImageResizeV3",
|
||||
"PDImageToRatioV1",
|
||||
"PDJSON_BatchJsonIncremental",
|
||||
"PDJSON_Group",
|
||||
"PDStringConcate",
|
||||
"PDStringInput",
|
||||
"PDTEXT_SAVE_PATH",
|
||||
"PD_AitoolkitTrainingRedux",
|
||||
"PD_BatchCropBlackBorder",
|
||||
"PD_CaptionJSONEditor",
|
||||
"PD_CaptionJSONParser",
|
||||
"PD_CropBorder",
|
||||
"PD_Extract_Image",
|
||||
"PD_GetImageRatio",
|
||||
"PD_GetImageSize",
|
||||
"PD_ImageFileTraining",
|
||||
"PD_ImageListForSort",
|
||||
"PD_ImageListForSortWithMetadata",
|
||||
"PD_ImageSearch",
|
||||
"PD_ImageSize34Compose",
|
||||
"PD_Image_Crop_Location",
|
||||
"PD_Image_Rotate_v1",
|
||||
"PD_Image_centerCrop",
|
||||
"PD_JoinStringMultiLine",
|
||||
"PD_LoadImageMetadata",
|
||||
"PD_LoadImagesFromDir",
|
||||
"PD_LoadImagesFromZip",
|
||||
"PD_LoadTextsFromDir",
|
||||
@ -370,15 +383,36 @@
|
||||
"PD_Mask Selector By Area Left",
|
||||
"PD_MaskFillHoles",
|
||||
"PD_MaskRemoveSmallObjects",
|
||||
"PD_ModelLoraLoader",
|
||||
"PD_RemoveBlackBackground",
|
||||
"PD_RemoveColorWords",
|
||||
"PD_RemoveWhiteBorder",
|
||||
"PD_RenameV2",
|
||||
"PD_SAVE_PATH2",
|
||||
"PD_SaveTextPathAndName",
|
||||
"PD_ShowText",
|
||||
"PD_StringLineCount",
|
||||
"PD_StringToCaptionJSON",
|
||||
"PD_TensorTraining",
|
||||
"PD_Text Overlay Node",
|
||||
"PD_TextListPack",
|
||||
"PD_TextListSort",
|
||||
"PD_TextListStringAddWord",
|
||||
"PD_TextListUnpack",
|
||||
"PD_TxtBatchRename",
|
||||
"PD_Zip_Simple",
|
||||
"PD_del_word",
|
||||
"PD_empty_word",
|
||||
"PD_image_coversaver",
|
||||
"PD_image_ratio_size",
|
||||
"PD_image_to_text_v1",
|
||||
"PD_imagesave_path",
|
||||
"PD_load_image_v1",
|
||||
"PD_name_replacewordorder",
|
||||
"PD_number_star",
|
||||
"PD_number_start",
|
||||
"PD_random_prompt",
|
||||
"PD_rename_image",
|
||||
"PDbananaImagesizeByRatio",
|
||||
"PDimage_corp_v1",
|
||||
"PDimage_corp_v2",
|
||||
@ -1219,6 +1253,17 @@
|
||||
"title_aux": "ComfyUi-Text-Tiler"
|
||||
}
|
||||
],
|
||||
"https://github.com/Chang-Jin-Lee/ComfyUI-PromptMixer-AI": [
|
||||
[
|
||||
"FavoritePromptMixer",
|
||||
"FreeAIPrompt",
|
||||
"FreeAIPromptGenerate",
|
||||
"Load_Text_Batch_Simple"
|
||||
],
|
||||
{
|
||||
"title_aux": "ComfyUI-PromptMixer-AI [WIP]"
|
||||
}
|
||||
],
|
||||
"https://github.com/Chargeuk/ComfyUI-vts-nodes": [
|
||||
[
|
||||
"VTS Add Text To list",
|
||||
@ -2327,6 +2372,19 @@
|
||||
"title_aux": "ComfyUI Dynamic Prompting Simplified [WIP]"
|
||||
}
|
||||
],
|
||||
"https://github.com/Kraven1109/ComfyUI-Llama": [
|
||||
[
|
||||
"ComfyLLama",
|
||||
"ComfyLLamaServer",
|
||||
"ComfyLLamaTextConcat",
|
||||
"ComfyLLamaTextInput",
|
||||
"GGUFLoader",
|
||||
"MediaPathsLoader"
|
||||
],
|
||||
{
|
||||
"title_aux": "ComfyUI-Llama [NAME CONFLICT]"
|
||||
}
|
||||
],
|
||||
"https://github.com/Krish-701/RK_Comfyui": [
|
||||
[
|
||||
"RK_Accumulate_Text_Multiline",
|
||||
@ -2440,61 +2498,36 @@
|
||||
],
|
||||
"https://github.com/LSDJesus/ComfyUI-Luna-Collection": [
|
||||
[
|
||||
"LunaAssembler",
|
||||
"LunaBasePrompt",
|
||||
"LunaCacheManager",
|
||||
"LunaBatchPromptExtractor",
|
||||
"LunaBatchPromptLoader",
|
||||
"LunaCheckpointLoader",
|
||||
"LunaCheckpointTunnel",
|
||||
"LunaCivitaiBatchScraper",
|
||||
"LunaCivitaiScraper",
|
||||
"LunaConditionals",
|
||||
"LunaConfigGateway",
|
||||
"LunaConnectionEditor",
|
||||
"LunaConnectionMatcher",
|
||||
"LunaConnectionStats",
|
||||
"LunaDaemonConfig",
|
||||
"LunaDaemonConfigFromLoaders",
|
||||
"LunaDaemonModelSwitch",
|
||||
"LunaDaemonStatus",
|
||||
"LunaEmbeddingCache",
|
||||
"LunaDaemonCLIPLoader",
|
||||
"LunaDaemonVAELoader",
|
||||
"LunaDimensionScaler",
|
||||
"LunaDynamicModelLoader",
|
||||
"LunaEmbeddingManager",
|
||||
"LunaEmbeddingManagerRandom",
|
||||
"LunaExpanders",
|
||||
"LunaExpressionBatchSaver",
|
||||
"LunaExpressionList",
|
||||
"LunaExpressionPromptBuilder",
|
||||
"LunaExpressionSheetSlicer",
|
||||
"LunaListPreprocessedPrompts",
|
||||
"LunaLoRALinker",
|
||||
"LunaExpressionSlicerSaver",
|
||||
"LunaGGUFBatchConverter",
|
||||
"LunaGGUFConverter",
|
||||
"LunaLoRARandomizer",
|
||||
"LunaLoRAStacker",
|
||||
"LunaLoRAStackerRandom",
|
||||
"LunaLoadParameters",
|
||||
"LunaLoadPreprocessedPrompt",
|
||||
"LunaLogicResolver",
|
||||
"LunaModifiers",
|
||||
"LunaModifyPreprocessedPrompt",
|
||||
"LunaLoRATriggerInjector",
|
||||
"LunaLoRAValidator",
|
||||
"LunaMultiSaver",
|
||||
"LunaOptimizedPreprocessedLoader",
|
||||
"LunaParametersBridge",
|
||||
"LunaPerformanceCondition",
|
||||
"LunaPerformanceDisplay",
|
||||
"LunaPerformanceLogger",
|
||||
"LunaPerformanceMonitor",
|
||||
"LunaPerformanceStatsConcat",
|
||||
"LunaPromptPreprocessor",
|
||||
"LunaSampler",
|
||||
"LunaSaveNegativePrompt",
|
||||
"LunaSelectPromptFolder",
|
||||
"LunaSharedCLIPEncode",
|
||||
"LunaSharedCLIPEncodeDual",
|
||||
"LunaSharedCLIPEncodeSDXL",
|
||||
"LunaSharedVAEDecode",
|
||||
"LunaSharedVAEEncode",
|
||||
"LunaSinglePromptProcessor",
|
||||
"LunaOptimizedWeightsManager",
|
||||
"LunaPromptCraft",
|
||||
"LunaPromptCraftDebug",
|
||||
"LunaSmartLoRALinker",
|
||||
"LunaTextProcessor",
|
||||
"LunaUnifiedPromptProcessor",
|
||||
"LunaUNetTunnel",
|
||||
"LunaWildcardBuilder",
|
||||
"LunaWildcardPromptGenerator",
|
||||
"LunaYAMLInjector",
|
||||
"LunaYAMLPathExplorer",
|
||||
"LunaYAMLWildcard",
|
||||
@ -2650,12 +2683,19 @@
|
||||
],
|
||||
"https://github.com/LvyuanW/ComfyUI-6yuan": [
|
||||
[
|
||||
"6yuan_DrawTextNode",
|
||||
"ColorKMeans",
|
||||
"CropAlpha",
|
||||
"PosterColorEngine",
|
||||
"PosterLogoPlacer",
|
||||
"PosterMaskGenerator",
|
||||
"PosterTemplateLoader",
|
||||
"PosterTextRenderer",
|
||||
"RemoveBackground",
|
||||
"RemoveBackgroundAdvanced",
|
||||
"ShapeLanguageSummary",
|
||||
"ShrinkImage",
|
||||
"SimpleTextLayout",
|
||||
"StringPreview"
|
||||
],
|
||||
{
|
||||
@ -2936,6 +2976,14 @@
|
||||
"title_aux": "ComfyUI_mickster_nodes [WIP]"
|
||||
}
|
||||
],
|
||||
"https://github.com/Mohamed-Sakr/ComfyUI-SimpleMarkdown": [
|
||||
[
|
||||
"SimpleMarkdownPreview"
|
||||
],
|
||||
{
|
||||
"title_aux": "ComfyUI-SimpleMarkdown [UNSAFE]"
|
||||
}
|
||||
],
|
||||
"https://github.com/MrAdamBlack/CheckProgress": [
|
||||
[
|
||||
"CHECK_PROGRESS"
|
||||
@ -3436,20 +3484,46 @@
|
||||
"https://github.com/PozzettiAndrea/ComfyUI-CADabra": [
|
||||
[
|
||||
"BrepGeneration",
|
||||
"CADAnalysisViewer",
|
||||
"CADCheckOverlappingFaces",
|
||||
"CADConnectedComponents",
|
||||
"CADCountFaces",
|
||||
"CADDepthMapHybrid",
|
||||
"CADEstimateGapTolerance",
|
||||
"CADExtractFaces",
|
||||
"CADFaceAnalysis",
|
||||
"CADFillMaskBiharmonic",
|
||||
"CADFillMaskBiharmonicMask",
|
||||
"CADFixDegenerateFaces",
|
||||
"CADGetFaceInfo",
|
||||
"CADGetFilename",
|
||||
"CADGetMetadata",
|
||||
"CADHealShape",
|
||||
"CADMergeVertices",
|
||||
"CADProjectFacesXY",
|
||||
"CADROISelector",
|
||||
"CADRaytracerBVH",
|
||||
"CADRecodeExecute",
|
||||
"CADRecodeInference",
|
||||
"CADSave",
|
||||
"CADSewFaces",
|
||||
"CADSplitComponents",
|
||||
"CAD_Convert_Format",
|
||||
"CAD_Load",
|
||||
"CAD_Load_From_Folder",
|
||||
"CAD_Load_Gmsh",
|
||||
"CAD_Mesh_Gmsh",
|
||||
"CAD_Mesh_Gmsh_Advanced",
|
||||
"CAD_Quality_Metrics",
|
||||
"CAD_Remesh_OCC",
|
||||
"CAD_Remesh_OCC_Advanced",
|
||||
"LoadCADRecodeModel",
|
||||
"LoadPoint2CADModel",
|
||||
"LoadPointCloudXYZ",
|
||||
"ML_FeatureDetection",
|
||||
"ML_SurfaceRecon",
|
||||
"MeshFaceSegmentation",
|
||||
"MeshSegmentToPointCloud",
|
||||
"MeshToPointCloud",
|
||||
"Mesh_Optimize_Gmsh",
|
||||
"Point2CADExportBrep",
|
||||
"Point2CADSegmentation",
|
||||
@ -3502,11 +3576,15 @@
|
||||
"LoadBVHFromFolder",
|
||||
"LoadFBXCharacter",
|
||||
"LoadGVHMRModels",
|
||||
"LoadSAM3DBodyModels",
|
||||
"LoadSMPL",
|
||||
"MHRViewer",
|
||||
"SAM3DVideoInference",
|
||||
"SMPLRetargetToSMPL",
|
||||
"SMPLToFBX",
|
||||
"SMPLViewer",
|
||||
"SMPLtoBVH",
|
||||
"SaveMHR",
|
||||
"SaveSMPL"
|
||||
],
|
||||
{
|
||||
@ -3675,8 +3753,10 @@
|
||||
],
|
||||
"https://github.com/Rizzlord/ComfyUI-SeqTex": [
|
||||
[
|
||||
"SeqTex_DisplaceMesh",
|
||||
"SeqTex_Load_Mesh",
|
||||
"SeqTex_Loader",
|
||||
"SeqTex_ProjectTexture",
|
||||
"SeqTex_Step1_ProcessMesh",
|
||||
"SeqTex_Step2_GenerateCondition",
|
||||
"SeqTex_Step3_GenerateTexture",
|
||||
@ -3963,6 +4043,14 @@
|
||||
"title_aux": "multigpu_diffusion_comfyui"
|
||||
}
|
||||
],
|
||||
"https://github.com/SleazySleaze/aesthetic-persona-comfyui-node": [
|
||||
[
|
||||
"AestheticPersonaParser"
|
||||
],
|
||||
{
|
||||
"title_aux": "aesthetic-persona-comfyui-node"
|
||||
}
|
||||
],
|
||||
"https://github.com/Slix-M-Lestragg/comfyui-enhanced": [
|
||||
[
|
||||
"Range Iterator"
|
||||
@ -4034,19 +4122,6 @@
|
||||
"title_aux": "ComfyUI_Remaker_FaceSwap"
|
||||
}
|
||||
],
|
||||
"https://github.com/Spicely/Comfyui-File-Utils": [
|
||||
[
|
||||
"AudioToSubtitle",
|
||||
"RandomFloat",
|
||||
"SaveAudioWithPath",
|
||||
"SaveImageWithPath",
|
||||
"SaveVideoWithPath",
|
||||
"VideoCompose"
|
||||
],
|
||||
{
|
||||
"title_aux": "OpenAI-comfyui-O"
|
||||
}
|
||||
],
|
||||
"https://github.com/Stable-X/ComfyUI-Hi3DGen": [
|
||||
[
|
||||
"DifferenceExtractorNode",
|
||||
@ -4940,6 +5015,14 @@
|
||||
"title_aux": "ComfyUI-OpenPoser [WIP]"
|
||||
}
|
||||
],
|
||||
"https://github.com/agavesunset/ComfyUI_LoRA_Tracker": [
|
||||
[
|
||||
"LoRAParameterOverlay"
|
||||
],
|
||||
{
|
||||
"title_aux": "ComfyUI_LoRA_Tracker"
|
||||
}
|
||||
],
|
||||
"https://github.com/ahkimkoo/ComfyUI-OSS-Upload": [
|
||||
[
|
||||
"OSSAudioUploader",
|
||||
@ -5193,6 +5276,14 @@
|
||||
"title_aux": "ComfyUI-Legendary-Nodes"
|
||||
}
|
||||
],
|
||||
"https://github.com/anilsathyan7/ComfyUI-Crystal-Upscaler": [
|
||||
[
|
||||
"CrystalUpscalerNode"
|
||||
],
|
||||
{
|
||||
"title_aux": "ComfyUI-Crystal-Upscaler"
|
||||
}
|
||||
],
|
||||
"https://github.com/animEEEmpire/ComfyUI-Animemory-Loader": [
|
||||
[
|
||||
"AnimemoryNode"
|
||||
@ -5398,10 +5489,13 @@
|
||||
],
|
||||
"https://github.com/bakker/BK_Utils": [
|
||||
[
|
||||
"DynamicGroupSwitchMulti",
|
||||
"FluxPromptSaver",
|
||||
"FluxTextSampler",
|
||||
"IsOneOfGroupsActive",
|
||||
"ModelName",
|
||||
"SamePixelResolutionCalculator"
|
||||
"SamePixelResolutionCalculator",
|
||||
"SubgraphPromptSwitchAutoDisplay"
|
||||
],
|
||||
{
|
||||
"title_aux": "BK_Utils [WIP]"
|
||||
@ -6070,6 +6164,8 @@
|
||||
"AudioEncoderEncode",
|
||||
"AudioEncoderLoader",
|
||||
"AudioMerge",
|
||||
"AutogrowNamesTestNode",
|
||||
"AutogrowPrefixTestNode",
|
||||
"BasicGuider",
|
||||
"BasicScheduler",
|
||||
"BetaSamplingScheduler",
|
||||
@ -6108,6 +6204,7 @@
|
||||
"CheckpointLoaderSimple",
|
||||
"CheckpointSave",
|
||||
"ChromaRadianceOptions",
|
||||
"ComfySwitchNode",
|
||||
"ConditioningAverage",
|
||||
"ConditioningCombine",
|
||||
"ConditioningConcat",
|
||||
@ -6129,6 +6226,7 @@
|
||||
"CosmosPredict2ImageToVideoLatent",
|
||||
"CreateVideo",
|
||||
"CropMask",
|
||||
"DCTestNode",
|
||||
"DiffControlNetLoader",
|
||||
"DifferentialDiffusion",
|
||||
"DiffusersLoader",
|
||||
@ -6230,6 +6328,12 @@
|
||||
"KlingImageGenerationNode",
|
||||
"KlingLipSyncAudioToVideoNode",
|
||||
"KlingLipSyncTextToVideoNode",
|
||||
"KlingOmniProEditVideoNode",
|
||||
"KlingOmniProFirstLastFrameNode",
|
||||
"KlingOmniProImageNode",
|
||||
"KlingOmniProImageToVideoNode",
|
||||
"KlingOmniProTextToVideoNode",
|
||||
"KlingOmniProVideoToVideoNode",
|
||||
"KlingSingleImageVideoEffectNode",
|
||||
"KlingStartEndFrameNode",
|
||||
"KlingTextToVideoNode",
|
||||
@ -7356,6 +7460,7 @@
|
||||
"SceneSelect",
|
||||
"SceneUpdate",
|
||||
"SceneView",
|
||||
"SceneWanVideoLoraMultiSave",
|
||||
"SubdirLister",
|
||||
"TailEnhancePro",
|
||||
"TailSplit"
|
||||
@ -7824,6 +7929,22 @@
|
||||
"title_aux": "ComfyUI-CC-ImageLoader [UNSAFE]"
|
||||
}
|
||||
],
|
||||
"https://github.com/heyburns/ComfyUI-Logic-Redux": [
|
||||
[
|
||||
"Bool-\ud83d\udd2c",
|
||||
"Compare-\ud83d\udd2c",
|
||||
"DebugPrint-\ud83d\udd2c",
|
||||
"Float-\ud83d\udd2c",
|
||||
"If ANY execute A else B",
|
||||
"If ANY execute A else B-\ud83d\udd2c",
|
||||
"If ANY return A else B-\ud83d\udd2c",
|
||||
"Int-\ud83d\udd2c",
|
||||
"String-\ud83d\udd2c"
|
||||
],
|
||||
{
|
||||
"title_aux": "ComfyUI-Logic-Redux [WIP]"
|
||||
}
|
||||
],
|
||||
"https://github.com/hhelloe/ComfyuiQuantizerToFp8": [
|
||||
[
|
||||
"FP8QuantizeFormat",
|
||||
@ -8068,6 +8189,7 @@
|
||||
"Alta:GetImageAndPath",
|
||||
"Alta:GetImageByIndex",
|
||||
"Alta:GetStringByIndex",
|
||||
"Alta:IfOnly(Logic)",
|
||||
"Alta:Int2Str(Math)",
|
||||
"Alta:JSONKeyExtractor(Util)",
|
||||
"Alta:ListAllFiles",
|
||||
@ -8607,7 +8729,9 @@
|
||||
],
|
||||
"https://github.com/kaski23/Kaskis_Comfy_Nodes": [
|
||||
[
|
||||
"CollectVideoNode",
|
||||
"CollectKeyedVideosNode",
|
||||
"CollectVideosNode",
|
||||
"ImageDelay",
|
||||
"IntToString",
|
||||
"LoadImageWithFilename",
|
||||
"LoadVideoWithFilename",
|
||||
@ -9040,6 +9164,24 @@
|
||||
"title_aux": "ComfyUI_LBT [WIP]"
|
||||
}
|
||||
],
|
||||
"https://github.com/leacvikas0/ComfyUI-Presence": [
|
||||
[
|
||||
"BeautifulTextNode",
|
||||
"FluxAdaptiveInjector",
|
||||
"InspectNode",
|
||||
"PresenceDirector",
|
||||
"PresenceDirectorFireworks",
|
||||
"PresenceDirectorVertex",
|
||||
"PresenceSaver",
|
||||
"UnaliverBundlePreview",
|
||||
"UnaliverNode",
|
||||
"UnaliverPlanner",
|
||||
"UnaliverStepIterator"
|
||||
],
|
||||
{
|
||||
"title_aux": "ComfyUI-Presence [WIP]"
|
||||
}
|
||||
],
|
||||
"https://github.com/leadbreak/comfyui-faceaging": [
|
||||
[
|
||||
"AgeTransformationNode"
|
||||
@ -9100,7 +9242,9 @@
|
||||
],
|
||||
"https://github.com/lggcfx2020/ComfyUI-LGGCFX-Tools": [
|
||||
[
|
||||
"LGGCFX_ImagePreview",
|
||||
"LGGCFX_audio",
|
||||
"LGGCFX_prompt",
|
||||
"LGGCFX_resolution",
|
||||
"LGGCFX_time_frame",
|
||||
"VRAMReserver"
|
||||
@ -9124,12 +9268,19 @@
|
||||
[
|
||||
"CSVRandomPicker",
|
||||
"CSVRandomPickerAdv",
|
||||
"ImageBatchtoImageList",
|
||||
"ImageBatchtoImages",
|
||||
"KSamplerConfig",
|
||||
"KSamplerSchedulerFallback",
|
||||
"LoadImageBatch",
|
||||
"LoadZipBatch",
|
||||
"MaskToSAMCoords",
|
||||
"MaskToSAMCoordsV2",
|
||||
"MorseCode",
|
||||
"PoseReformer",
|
||||
"SaveITAsZip",
|
||||
"SaveImageAsZip",
|
||||
"SaveTextAsZip",
|
||||
"StrFormat",
|
||||
"StrFormatAdv",
|
||||
"YoloFaceReformer",
|
||||
@ -9481,10 +9632,15 @@
|
||||
"https://github.com/lyra-ai/lyra-nodes": [
|
||||
[
|
||||
"LyraAudioVisualizer",
|
||||
"LyraCdnUploader",
|
||||
"LyraCollectOpenAIResponse",
|
||||
"LyraCustomOpenAIRequest",
|
||||
"LyraFilenameBuilder",
|
||||
"LyraImageAudioFusion",
|
||||
"LyraLoadAudioFromURL",
|
||||
"LyraLoadImageFromURL"
|
||||
"LyraLoadImageFromURL",
|
||||
"LyraStringToTypes",
|
||||
"LyraWebRequester"
|
||||
],
|
||||
{
|
||||
"title_aux": "lyra-nodes"
|
||||
@ -10054,10 +10210,11 @@
|
||||
"https://github.com/nobinBB/comfyui-samenodes": [
|
||||
[
|
||||
"BatchImageProcessor",
|
||||
"CivitaiBulkDownloader",
|
||||
"ExtractPromptFromImage",
|
||||
"FloatToString",
|
||||
"FloatToStringWithPrefix",
|
||||
"LoraWildcardGenerator",
|
||||
"UpscaleImageByUsingModelCustom"
|
||||
"LoraWildcardGenerator"
|
||||
],
|
||||
{
|
||||
"title_aux": "comfyui-samenodes"
|
||||
@ -10563,6 +10720,30 @@
|
||||
"title_aux": "ComfyUI-AI_Tools [UNSAFE]"
|
||||
}
|
||||
],
|
||||
"https://github.com/quinteroac/comfyui_api_executor_nodes": [
|
||||
[
|
||||
"AnyTo",
|
||||
"ImageInputCombiner",
|
||||
"ImageInputPair",
|
||||
"IntInputCombiner",
|
||||
"IntInputPair",
|
||||
"RemoteWorkflowAPIExecutor",
|
||||
"SimpleText",
|
||||
"SimpleWorkflowAPIExecutor",
|
||||
"TextImageToImageWorkflowSelector",
|
||||
"TextImageToVideoWorkflowSelector",
|
||||
"TextInputCombiner",
|
||||
"TextInputPair",
|
||||
"TextToImageWorkflowSelector",
|
||||
"TextToVideoWorkflowSelector",
|
||||
"VideoInputPair",
|
||||
"WorkflowAPIExecutor",
|
||||
"YandereRandomTags"
|
||||
],
|
||||
{
|
||||
"title_aux": "comfyui_api_executor_nodes"
|
||||
}
|
||||
],
|
||||
"https://github.com/rakete/comfyui-rakete": [
|
||||
[
|
||||
"rakete.BuildString",
|
||||
@ -12273,6 +12454,14 @@
|
||||
"title_aux": "ComfyUI_RasterCardMaker"
|
||||
}
|
||||
],
|
||||
"https://github.com/xiaoxidashen/comfyui_my_utils": [
|
||||
[
|
||||
"VideoSplitCombine"
|
||||
],
|
||||
{
|
||||
"title_aux": "comfyui_my_utils"
|
||||
}
|
||||
],
|
||||
"https://github.com/xiaoyumu/ComfyUI-XYNodes": [
|
||||
[
|
||||
"AdjustImageColor",
|
||||
@ -12318,6 +12507,14 @@
|
||||
"title_aux": "ComfyUI-CombineVideoAndSubtitle"
|
||||
}
|
||||
],
|
||||
"https://github.com/xtanqn/comfyui-xishen": [
|
||||
[
|
||||
"XishenRandomIntegerNode"
|
||||
],
|
||||
{
|
||||
"title_aux": "comfyui-xishen [WIP]"
|
||||
}
|
||||
],
|
||||
"https://github.com/xuchenxu168/ComfyUI-Gemini-3": [
|
||||
[
|
||||
"Gemini3Chat",
|
||||
@ -12654,6 +12851,14 @@
|
||||
],
|
||||
"https://github.com/zhuanvi/ComfyUI-ZVNodes": [
|
||||
[
|
||||
"ApimartConfigManagerZV",
|
||||
"ApimartDownloadSavedTaskImageZV",
|
||||
"ApimartDownloadSavedTaskVideoZV",
|
||||
"ApimartImage2VideoSubmitZV",
|
||||
"ApimartRemixByTaskIdSubmitZV",
|
||||
"ApimartRemixVideoSubmitZV",
|
||||
"ApimartText2VideoSubmitZV",
|
||||
"BBOXFormatConverterZV",
|
||||
"ImageCounterNodeZV",
|
||||
"JoinListZV",
|
||||
"JsonListIndexerZV",
|
||||
@ -12667,15 +12872,22 @@
|
||||
"LoadImageFromDirZV",
|
||||
"LoadImageFromUrlZV",
|
||||
"LoadTxtFromDirZV",
|
||||
"LoadVideoFromDirZV",
|
||||
"MultiLineConditionalZV",
|
||||
"MultiLineOperationZV",
|
||||
"NanoBananaProText2ImageSubmitZV",
|
||||
"PatternFillNodeZV",
|
||||
"ProductionDisplacementMapNodeZV",
|
||||
"RandomSelectListZV",
|
||||
"SaveImageToPathZV",
|
||||
"SaveTxtToPathZV",
|
||||
"SeeDream40Text2ImageSubmitZV",
|
||||
"SeeDream45Text2ImageSubmitZV",
|
||||
"StringToPathZV",
|
||||
"TriangleCharacterLayoutZV",
|
||||
"TxtCounterNodeZV",
|
||||
"UniversalBBOXToMaskZV",
|
||||
"Veo31Image2VideoSubmitZV",
|
||||
"VideoSceneDetectorZV",
|
||||
"VideoSpeedZV",
|
||||
"doubaoI2INodeZV",
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -1,5 +1,65 @@
|
||||
{
|
||||
"custom_nodes": [
|
||||
{
|
||||
"author": "shinich39",
|
||||
"title": "comfyui-no-one-above-me [REMOVED]",
|
||||
"reference": "https://github.com/shinich39/comfyui-no-one-above-me",
|
||||
"files": [
|
||||
"https://github.com/shinich39/comfyui-no-one-above-me"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Fix node to top."
|
||||
},
|
||||
{
|
||||
"author": "octapus8085",
|
||||
"title": "OpenAI-comfyui-O [REMOVED]",
|
||||
"reference": "https://github.com/Spicely/Comfyui-File-Utils",
|
||||
"files": [
|
||||
"https://github.com/Spicely/Comfyui-File-Utils"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "This plugin provides multiple file-handling and utility nodes for ComfyUI, including: image saving, audio saving, video saving, video composition, audio-to-subtitle conversion, and random number generation nodes. These nodes not only process files but also return their absolute file paths.\nNOTE: The files in the repo are not organized.[w/This nodepack contains a node that has a vulnerability allowing write to arbitrary file paths.]"
|
||||
},
|
||||
{
|
||||
"author": "yemanou",
|
||||
"title": "NABA Image (Gemini REST) Node [REMOVED]",
|
||||
"reference": "https://github.com/yemanou/ComfyUI-NABA",
|
||||
"files": [
|
||||
"https://github.com/yemanou/ComfyUI-NABA"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Simplified Gemini 2.5 Flash Image Preview node for ComfyUI. REST-only for stability, two optional reference images, padded aspect ratio resizing (no stretching), and basic sampling controls. All extra debug layers, SDK path, multi-seed, and legacy compatibility code removed to avoid crashes."
|
||||
},
|
||||
{
|
||||
"author": "comrender",
|
||||
"title": "ComfyUI-Nano-Banana-Resizer [REMOVED]",
|
||||
"reference": "https://github.com/comrender/ComfyUI-Nano-Banana-Resizer",
|
||||
"files": [
|
||||
"https://github.com/comrender/ComfyUI-Nano-Banana-Resizer"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "A ComfyUI custom node that automatically calculates optimal output dimensions for Google's Nano Banana image editing model, supporting 22 aspect ratio buckets and ensuring pixel-perfect outputs without shifting or cropping."
|
||||
},
|
||||
{
|
||||
"author": "comrender",
|
||||
"title": "ComfyUI-edge-match-checker [REMOVED]",
|
||||
"reference": "https://github.com/comrender/ComfyUI-edge-match-checker",
|
||||
"files": [
|
||||
"https://github.com/comrender/ComfyUI-edge-match-checker"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Node comparing two image masks or images with adjustable overlap threshold (default 95%) for detecting minor shifts and mismatches in proportions, suitable for automated post-processing validation. (Description by CC)"
|
||||
},
|
||||
{
|
||||
"author": "comrender",
|
||||
"title": "ComfyUI-gpt5_image_text [REMOVED]",
|
||||
"reference": "https://github.com/comrender/ComfyUI-gpt5_image_text",
|
||||
"files": [
|
||||
"https://github.com/comrender/ComfyUI-gpt5_image_text"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "A ComfyUI custom node for vision + text analysis using GPT-5 and GPT-4o with direct API key input, system prompt, temperature, max tokens, and multi-image support."
|
||||
},
|
||||
{
|
||||
"author": "PozzettiAndrea",
|
||||
"title": "ComfyUI-CameraAnalysis [REMOVED]",
|
||||
|
||||
@ -1,5 +1,432 @@
|
||||
{
|
||||
"custom_nodes": [
|
||||
{
|
||||
"author": "KLL535",
|
||||
"title": "ComfyUI_Simple_Qwen3-VL-gguf",
|
||||
"reference": "https://github.com/KLL535/ComfyUI_Simple_Qwen3-VL-gguf",
|
||||
"files": [
|
||||
"https://github.com/KLL535/ComfyUI_Simple_Qwen3-VL-gguf"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Simple Qwen3-VL gguf LLM model loader"
|
||||
},
|
||||
{
|
||||
"author": "sirouk",
|
||||
"title": "chutes-comfyui-node",
|
||||
"reference": "https://github.com/sirouk/chutes-comfyui-node",
|
||||
"files": [
|
||||
"https://github.com/sirouk/chutes-comfyui-node"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "ComfyUI custom nodes for Chutes.ai video generation API"
|
||||
},
|
||||
{
|
||||
"author": "1038lab",
|
||||
"title": "ComfyUI-QwenVL",
|
||||
"reference": "https://github.com/1038lab/ComfyUI-QwenVL",
|
||||
"files": [
|
||||
"https://github.com/1038lab/ComfyUI-QwenVL"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "ComfyUI-QwenVL custom node: Integrates the Qwen-VL series, including Qwen2.5-VL and the latest Qwen3-VL, to enable advanced multimodal AI for text generation, image understanding, and video analysis."
|
||||
},
|
||||
{
|
||||
"author": "smthemex",
|
||||
"title": "ComfyUI_GRAG_Image_Editing",
|
||||
"reference": "https://github.com/smthemex/ComfyUI_GRAG_Image_Editing",
|
||||
"files": [
|
||||
"https://github.com/smthemex/ComfyUI_GRAG_Image_Editing"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "GRAG-Image-Editing : Group-Relative Attention Guidance for Image Editing,you can try it in comfyUI"
|
||||
},
|
||||
{
|
||||
"author": "dzy1128",
|
||||
"title": "ComfyUI-VertexAI",
|
||||
"reference": "https://github.com/dzy1128/ComfyUI-VertexAI",
|
||||
"files": [
|
||||
"https://github.com/dzy1128/ComfyUI-VertexAI"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Google Gemini image generation node for ComfyUI supporting up to 6 input images with customizable prompts and parameters. (Description by CC)"
|
||||
},
|
||||
{
|
||||
"author": "mrf",
|
||||
"title": "ComfyPoe",
|
||||
"reference": "https://github.com/mrf/ComfyPoe",
|
||||
"files": [
|
||||
"https://github.com/mrf/ComfyPoe"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "ComfyUI nodes for image generation via Poe API"
|
||||
},
|
||||
{
|
||||
"author": "Tinuva88",
|
||||
"title": "Comfy-UmiAI",
|
||||
"reference": "https://github.com/Tinuva88/Comfy-UmiAI",
|
||||
"files": [
|
||||
"https://github.com/Tinuva88/Comfy-UmiAI"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "A logic engine for ComfyUI prompts that transforms static prompts into dynamic, context-aware workflows with persistent variables, conditional logic, native LoRA loading, and external data fetching. (Description by CC)"
|
||||
},
|
||||
{
|
||||
"author": "fredlef",
|
||||
"title": "ComfyUI FSL Nodes",
|
||||
"reference": "https://github.com/fredlef/Comfyui_FSL_Nodes",
|
||||
"files": [
|
||||
"https://github.com/fredlef/Comfyui_FSL_Nodes"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"tags": ["image", "chat", "gemini", "fsl"]
|
||||
},
|
||||
{
|
||||
"author": "exedesign",
|
||||
"title": "ComfyUI-Hunyuan3D-v3",
|
||||
"id": "hunyuan3d-v3",
|
||||
"reference": "https://github.com/exedesign/Hunyuan-3D-v3",
|
||||
"files": [
|
||||
"https://github.com/exedesign/Hunyuan-3D-v3"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Text-to-3D and Image-to-3D generation using Tencent Cloud Hunyuan 3D Global API. Supports PBR materials, face count control (40K-1.5M faces), and multiple generation types (Normal/LowPoly/Geometry/Sketch). Outputs industry-standard GLB format. Requires Tencent Cloud account with API access.",
|
||||
"nodename_pattern": "Hunyuan",
|
||||
"tags": ["3D", "generation", "text-to-3d", "image-to-3d", "hunyuan", "tencent"]
|
||||
},
|
||||
{
|
||||
"author": "rjgoif",
|
||||
"title": "Img Label Tools",
|
||||
"id": "Img-Label-Tools",
|
||||
"reference": "https://github.com/rjgoif/ComfyUI-Img-Label-Tools",
|
||||
"install_type": "git-clone",
|
||||
"description": "Tools to help annotate images for sharing on Reddit, Discord, etc."
|
||||
},
|
||||
{
|
||||
"author": "akawana",
|
||||
"title": "RGBYP Mask Editor (RGB + YP)",
|
||||
"reference": "https://github.com/akawana/ComfyUI-RGBYP-Mask-Editor",
|
||||
"files": [
|
||||
"https://github.com/akawana/ComfyUI-RGBYP-Mask-Editor"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "A JS editor for five-color masks (RGB + Yellow + Pink) that works with any nodes, with three helper nodes — RGBYPLoadImage, RGBYPMaskBridge, and RGBYPMaskToRegularMasks—for convenient RGBYP mask handling.",
|
||||
"tags": ["utility", "mask", "rgb", "bridge"]
|
||||
},
|
||||
{
|
||||
"author": "btitkin",
|
||||
"title": "Random Prompt Builder",
|
||||
"id": "random-prompt-builder",
|
||||
"reference": "https://github.com/btitkin/ComfyUI-RandomPromptBuilder",
|
||||
"files": [
|
||||
"https://github.com/btitkin/ComfyUI-RandomPromptBuilder"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Advanced AI-powered prompt generation using local GGUF models. Generate detailed, structured prompts with character controls, style presets, and model-specific formatting for Pony, SDXL, Flux, and more. Supports GPU acceleration and runs completely offline."
|
||||
},
|
||||
{
|
||||
"author": "erosDiffusion",
|
||||
"title": "ComfyUI-EulerDiscreteScheduler",
|
||||
"reference": "https://github.com/erosDiffusion/ComfyUI-EulerDiscreteScheduler",
|
||||
"files": [
|
||||
"https://github.com/erosDiffusion/ComfyUI-EulerDiscreteScheduler"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Noise Free images with Euler Discrete Scheduler in ComfyUI with Z-Image or other models"
|
||||
},
|
||||
{
|
||||
"author": "Koko-boya",
|
||||
"title": "Comfyui-Z-Image-Utilities",
|
||||
"reference": "https://github.com/Koko-boya/Comfyui-Z-Image-Utilities",
|
||||
"files": [
|
||||
"https://github.com/Koko-boya/Comfyui-Z-Image-Utilities"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Collection of utility nodes for ComfyUI designed specifically for the Z-Image model with vision model support and LLM-powered prompt enhancement."
|
||||
},
|
||||
{
|
||||
"author": "illuminatianon",
|
||||
"title": "comfyui-lumi-tools",
|
||||
"reference": "https://github.com/illuminatianon/comfyui-lumi-tools",
|
||||
"files": [
|
||||
"https://github.com/illuminatianon/comfyui-lumi-tools"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "A ComfyUI custom node pack by Lumi."
|
||||
},
|
||||
{
|
||||
"author": "Carasibana",
|
||||
"title": "ComfyUI-PolyMask",
|
||||
"reference": "https://github.com/Carasibana/ComfyUI-PolyMask",
|
||||
"files": [
|
||||
"https://github.com/Carasibana/ComfyUI-PolyMask"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "ComfyUI nodes for loading images and drawing polygon masks interactively on them"
|
||||
},
|
||||
{
|
||||
"author": "HellerCommaA",
|
||||
"title": "ComfyUI-ZImageLatent",
|
||||
"reference": "https://github.com/HellerCommaA/ComfyUI-ZImageLatent",
|
||||
"files": [
|
||||
"https://github.com/HellerCommaA/ComfyUI-ZImageLatent"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "A super simple node that outputs official zimage resolutions as a latent"
|
||||
},
|
||||
{
|
||||
"author": "SparknightLLC",
|
||||
"title": "ComfyUI-LatentOrientation",
|
||||
"reference": "https://github.com/SparknightLLC/ComfyUI-LatentOrientation",
|
||||
"files": [
|
||||
"https://github.com/SparknightLLC/ComfyUI-LatentOrientation"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "A simple node for ComfyUI that rotates or resizes the input latent to common orientations."
|
||||
},
|
||||
{
|
||||
"author": "cdanielp",
|
||||
"title": "COMFYUI_PROMPTMODELS",
|
||||
"reference": "https://github.com/cdanielp/COMFYUI_PROMPTMODELS",
|
||||
"files": [
|
||||
"https://github.com/cdanielp/COMFYUI_PROMPTMODELS"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Custom nodes for ComfyUI by PROMPTMODELS."
|
||||
},
|
||||
{
|
||||
"author": "supElement",
|
||||
"title": "ComfyUI_Element_easy",
|
||||
"reference": "https://github.com/supElement/ComfyUI_Element_easy",
|
||||
"files": [
|
||||
"https://github.com/supElement/ComfyUI_Element_easy"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Three custom ComfyUI nodes: Empty Image RGB, Text Line Break, and Random Chars (Append) for convenient utilities. (Description by CC)"
|
||||
},
|
||||
{
|
||||
"author": "ChangeTheConstants",
|
||||
"title": "SeedVarianceEnhancer",
|
||||
"reference": "https://github.com/ChangeTheConstants/SeedVarianceEnhancer",
|
||||
"files": [
|
||||
"https://github.com/ChangeTheConstants/SeedVarianceEnhancer"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "A ComfyUI custom node that adds diversity to Z-Image Turbo outputs by adding random noise to text prompt embeddings to compensate for low seed variance. (Description by CC)"
|
||||
},
|
||||
{
|
||||
"author": "SaTaNoob",
|
||||
"title": "ComfyUI-Z-Image-Turbo-Resolutions",
|
||||
"reference": "https://github.com/SaTaNoob/ComfyUI-Z-Image-Turbo-Resolutions",
|
||||
"files": [
|
||||
"https://github.com/SaTaNoob/ComfyUI-Z-Image-Turbo-Resolutions"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "A ComfyUI custom node that provides quick access to all image resolutions for the Z Image Turbo model, sourced from its official Hugging Face Space."
|
||||
},
|
||||
{
|
||||
"author": "CraftBlack",
|
||||
"title": "ComfyUI-Resolution-Divider",
|
||||
"reference": "https://github.com/CraftBlack/ComfyUI-Resolution-Divider",
|
||||
"files": [
|
||||
"https://github.com/CraftBlack/ComfyUI-Resolution-Divider"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Utility node for ComfyUI that calculates downscaled resolutions while maintaining original aspect ratio, ideal for image-to-video workflows to prevent OOM errors. (Description by CC)"
|
||||
},
|
||||
{
|
||||
"author": "Randy420Marsh",
|
||||
"title": "ComfyUI-Civitai-API-Url-Resolver",
|
||||
"reference": "https://github.com/Randy420Marsh/ComfyUI-Civitai-API-Url-Resolver",
|
||||
"files": [
|
||||
"https://github.com/Randy420Marsh/ComfyUI-Civitai-API-Url-Resolver"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "A ComfyUI custom node that converts Civitai share/model page URLs into direct download URLs, making it easier to integrate Civitai models into your workflows."
|
||||
},
|
||||
{
|
||||
"author": "Fossiel",
|
||||
"title": "ComfyUI-Fossiel-WAN-Additional-Tilers",
|
||||
"reference": "https://github.com/Fossiel/ComfyUI-Fossiel-WAN-Additional-Tilers",
|
||||
"files": [
|
||||
"https://github.com/Fossiel/ComfyUI-Fossiel-WAN-Additional-Tilers"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Suite of nodes providing VAE tiling functionality for WAN conditioners to reduce VRAM usage while maintaining generation quality. (Description by CC)"
|
||||
},
|
||||
{
|
||||
"author": "Aryan185",
|
||||
"title": "ComfyUI-VertexAPI",
|
||||
"reference": "https://github.com/Aryan185/ComfyUI-VertexAPI",
|
||||
"files": [
|
||||
"https://github.com/Aryan185/ComfyUI-VertexAPI"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "A collection of powerful custom nodes for ComfyUI that connect your local workflows to closed-source AI models via their APIs, supporting Google Gemini, Imagen, Veo, OpenAI's GPT-Image-1, and FLUX models."
|
||||
},
|
||||
{
|
||||
"author": "Zeknes",
|
||||
"title": "Comfyui-Nanobanana-API",
|
||||
"reference": "https://github.com/Zeknes/Comfyui-Nanobanana-API",
|
||||
"files": [
|
||||
"https://github.com/Zeknes/Comfyui-Nanobanana-API"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "ComfyUI custom node for Gemini image generation via OpenRouter API, supporting text prompts and multiple image inputs (up to 4 images) with automatic saving to output directory. (Description by CC)"
|
||||
},
|
||||
{
|
||||
"author": "xiaoshengyvlin",
|
||||
"title": "ComfyUI-MetaData-ZaKo",
|
||||
"reference": "https://github.com/xiaoshengyvlin/ComfyUI-MetaData-ZaKo",
|
||||
"files": [
|
||||
"https://github.com/xiaoshengyvlin/ComfyUI-MetaData-ZaKo"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "ComfyUI extension for image metadata swapping and preservation in workflows. (Description by CC)"
|
||||
},
|
||||
{
|
||||
"author": "UndefinedUo",
|
||||
"title": "DuoUmiWildcards",
|
||||
"reference": "https://github.com/UndefinedUo/DuoUmiWildcards",
|
||||
"files": [
|
||||
"https://github.com/UndefinedUo/DuoUmiWildcards"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Custom ComfyUI node supporting wildcard text processing from files with YAML tags, randomization, latent ratio selection and preset aspect ratios."
|
||||
},
|
||||
{
|
||||
"author": "bpmpnaito",
|
||||
"title": "comfyui-imageviewer",
|
||||
"reference": "https://github.com/bpmpnaito/comfyui-imageviewer",
|
||||
"files": [
|
||||
"https://github.com/bpmpnaito/comfyui-imageviewer"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Image viewer node that displays preview of images directly in the node."
|
||||
},
|
||||
{
|
||||
"author": "synthetai",
|
||||
"title": "ComfyUI-JM-Gemini-API",
|
||||
"reference": "https://github.com/synthetai/ComfyUI-JM-Gemini-API",
|
||||
"files": [
|
||||
"https://github.com/synthetai/ComfyUI-JM-Gemini-API"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "A custom node for ComfyUI that generates images using Google's Gemini API, supporting both text-to-image and image-to-image generation."
|
||||
},
|
||||
{
|
||||
"author": "MushroomFleet",
|
||||
"title": "ComfyUI-Variationator",
|
||||
"reference": "https://github.com/MushroomFleet/ComfyUI-Variationator",
|
||||
"files": [
|
||||
"https://github.com/MushroomFleet/ComfyUI-Variationator"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Advanced multi-dimensional prompt variation system for ComfyUI with 240 pre-defined modifiers and 19 custom nodes. (Description by CC)"
|
||||
},
|
||||
{
|
||||
"author": "Seb-Lis",
|
||||
"title": "ComfyUI_Node_Pack",
|
||||
"reference": "https://github.com/Seb-Lis/ComfyUI_Node_Pack",
|
||||
"files": [
|
||||
"https://github.com/Seb-Lis/ComfyUI_Node_Pack"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "A collection of utility nodes for image processing, workflow management, and generation metadata tracking."
|
||||
},
|
||||
{
|
||||
"author": "llikethat",
|
||||
"title": "ComfyUI-faceExtracter",
|
||||
"reference": "https://github.com/llikethat/ComfyUI-faceExtracter",
|
||||
"files": [
|
||||
"https://github.com/llikethat/ComfyUI-faceExtracter"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Memory-efficient face extraction tool for ComfyUI with reference-based matching supporting multiple backends (InsightFace, MediaPipe, OpenCV) for video processing of any length. (Description by CC)"
|
||||
},
|
||||
{
|
||||
"author": "zn123",
|
||||
"title": "ComfyUI-image-processor-zn123",
|
||||
"reference": "https://github.com/zn123/ComfyUI-image-processor-zn123",
|
||||
"files": [
|
||||
"https://github.com/zn123/ComfyUI-image-processor-zn123"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Comprehensive image processing plugin for ComfyUI"
|
||||
},
|
||||
|
||||
{
|
||||
"author": "HAL-XP",
|
||||
"title": "HALXP-Comfy",
|
||||
"reference": "https://github.com/hal-xp/halxp-comfy",
|
||||
"files": [
|
||||
"https://github.com/hal-xp/halxp-comfy"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "A UI suite for ComfyUI including Focus mode and layout enhancements."
|
||||
},
|
||||
{
|
||||
"author": "BuddyBytes",
|
||||
"title": "Smart Resolution Toolkit",
|
||||
"reference": "https://github.com/buddy-bytes/ComfyUI-SmartResolutionToolkit",
|
||||
"files": [
|
||||
"https://github.com/buddy-bytes/ComfyUI-SmartResolutionToolkit"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Resolution picker and latent generator for ComfyUI. Select presets like HD, FullHD, 2K, 4K, 8K with aspect ratios (1:1, 9:16, 4:5, 21:9 etc.) via dropdowns. Automatically snaps width/height to latent-safe multiples of 64. Ideal for EmptyLatentImage, AnimateDiff, ControlNet, video formats, and KSampler workflows. Outputs clean INT values or ready-to-use LATENT tensor."
|
||||
},
|
||||
{
|
||||
"author": "Bharanidharan",
|
||||
"title": "iSeeBetter Node for ComfyUI",
|
||||
"reference": "https://github.com/llikethat/ComfyUI-iseebetter",
|
||||
"files": [
|
||||
"https://github.com/llikethat/ComfyUI-iseebetter"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Custom Node to implement iSeeBetter upscaling method."
|
||||
},
|
||||
{
|
||||
"author": "Pondowner857",
|
||||
"title": "ComfyUI Remote Workflow Executor",
|
||||
"id": "comfy_Pond_Nodes_V2",
|
||||
"reference": "https://github.com/Pondowner857/comfy_Pond_Nodes_V2",
|
||||
"files": [
|
||||
"https://github.com/Pondowner857/comfy_Pond_Nodes_V2"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Remote workflow executor node - Execute workflows on remote ComfyUI servers. Supports image/text/audio/video input and output."
|
||||
},
|
||||
{
|
||||
"author": "luxdelux7",
|
||||
"title": "Forbidden Vision",
|
||||
"reference": "https://github.com/luxdelux7/ComfyUI-Forbidden-Vision",
|
||||
"files": [
|
||||
"https://github.com/luxdelux7/ComfyUI-Forbidden-Vision"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Custom face detection and segmentation for ComfyUI with automatic face fixing, intelligent color grading, and iterative refinement. Custom-trained models optimized for realistic, anime, and NSFW content.",
|
||||
"nodename_pattern": "ForbiddenVision"
|
||||
},
|
||||
{
|
||||
"author": "Kazama-Suichiku",
|
||||
"title": "ComfyUI-Meshy",
|
||||
"id": "comfyui-meshy",
|
||||
"reference": "https://github.com/Kazama-Suichiku/ComfyUI-Meshy",
|
||||
"files": [
|
||||
"https://github.com/Kazama-Suichiku/ComfyUI-Meshy"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "ComfyUI-Meshy is a 3D generation extension based on Meshy AI API. It provides Text-to-3D and Image-to-3D capabilities within ComfyUI, allowing you to generate 3D models directly from text prompts or images. Supports multiple AI models (Meshy-4, Meshy-5, Meshy-6) with customizable topology, polygon count, and PBR settings."
|
||||
},
|
||||
{
|
||||
"author": "ah-kun",
|
||||
"title": "ComfyUI-FailSafe-Translate-Node",
|
||||
"reference": "https://github.com/ah-kun/ComfyUI-FailSafe-Translate-Node",
|
||||
"files": [
|
||||
"https://github.com/ah-kun/ComfyUI-FailSafe-Translate-Node"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Fail-safe Google Translate prompt node for ComfyUI (retry + caching)."
|
||||
},
|
||||
{
|
||||
"author": "princepainter",
|
||||
"title": "PainterFLF2V - First/Last Frame Video Enhancer",
|
||||
@ -384,468 +811,6 @@
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "ComfyUI node that applies vintage/retro effects through JPG compression, color grading, film grain, vignette, and more to emulate more realistic photo aesthetics."
|
||||
},
|
||||
{
|
||||
"title": "Download Tools for ComfyUI",
|
||||
"reference": "https://github.com/EricRollei/Download_Tools",
|
||||
"files": [
|
||||
"https://github.com/EricRollei/Download_Tools"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Comprehensive media downloading and web scraping nodes for ComfyUI. Download from 1000+ websites including Instagram, Reddit, Twitter, YouTube, TikTok using gallery-dl, yt-dlp, and advanced web scraping. Features: Gallery-dl downloader (100+ sites), Yt-dlp downloader (1000+ platforms), Web Image Scraper with 15+ site-specific handlers, browser cookie authentication, MCP integration for Claude Desktop.",
|
||||
"author": "Eric Hiss (EricRollei)",
|
||||
"nodename_pattern": "(Gallery-dl|Yt-dlp|Web.*Scraper)",
|
||||
"tags": [
|
||||
"download",
|
||||
"scraper",
|
||||
"web",
|
||||
"gallery-dl",
|
||||
"yt-dlp",
|
||||
"instagram",
|
||||
"youtube",
|
||||
"twitter",
|
||||
"reddit",
|
||||
"media",
|
||||
"video",
|
||||
"image",
|
||||
"tiktok",
|
||||
"deviantart",
|
||||
"pixiv"
|
||||
]
|
||||
},
|
||||
{
|
||||
"author": "akawana",
|
||||
"title": "Keybinding Extra",
|
||||
"reference": "https://github.com/akawana/ComfyUI-Keybinding-extra",
|
||||
"files": [
|
||||
"https://github.com/akawana/ComfyUI-Keybinding-extra"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Adds shortcuts for commenting and deleting lines of text, with a configurable comment symbol. Includes a node that cleans comments from text and splits content using tags for Regional Prompting.",
|
||||
"tags": ["frontend", "shortcut", "utility"]
|
||||
},
|
||||
{
|
||||
"author": "turisc",
|
||||
"title": "Text Line Selector",
|
||||
"reference": "https://github.com/TuriSc/comfyui-text-line-selector",
|
||||
"files": [
|
||||
"https://github.com/TuriSc/comfyui-text-line-selector"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Extracts a single line from multiline string. Useful for batch processing"
|
||||
},
|
||||
{
|
||||
"author": "FuryNocturnTV",
|
||||
"title": "ComfyUI-Studio-Fury",
|
||||
"reference": "https://github.com/FuryNocturn/ComfyUI-Studio-Fury",
|
||||
"files": [
|
||||
"https://github.com/FuryNocturn/ComfyUI-Studio-Fury"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Nodos custom, al estilo fury, nodos que añaden versatilidad. con el tiempo ira creciendo los nodos."
|
||||
},
|
||||
{
|
||||
"author": "granddyser",
|
||||
"title": "Wan-video-extender",
|
||||
"reference": "https://github.com/Granddyser/wan-video-extender",
|
||||
"files": [
|
||||
"https://github.com/Granddyser/wan-video-extender"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Wan Video Extender extends a short video or a single image into a longer, temporally consistent clip using a VACE based control latent. It runs in multiple extension loops. Each loop can have its own prompt and optional LoRA, so you can evolve the scene step by step without rebuilding the graph."
|
||||
},
|
||||
{
|
||||
"author": "Icekiub",
|
||||
"title": "ComfyUI-IcyHider",
|
||||
"id": "text_processor",
|
||||
"reference": "https://github.com/icekiub-ai/ComfyUI-IcyHider",
|
||||
"files": [
|
||||
"https://github.com/icekiub-ai/ComfyUI-IcyHider"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "A custom node extension that hides image previews until you hover over the node."
|
||||
},
|
||||
{
|
||||
"author": "pznodes",
|
||||
"title": "ComfyUI-SAM3DBody",
|
||||
"reference": "https://github.com/PozzettiAndrea/ComfyUI-SAM3DBody",
|
||||
"files": [
|
||||
"https://github.com/PozzettiAndrea/ComfyUI-SAM3DBody"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "SAM 3D Body integration for ComfyUI - Robust full-body human mesh recovery from single images. Reconstruct 3D human meshes with pose, shape, and hand details. First draft, please open a github issue if you have any problems or feature requests :)"
|
||||
},
|
||||
{
|
||||
"author": "danielpflorian",
|
||||
"title": "ComfyUI-WorkflowGenerator",
|
||||
"reference": "https://github.com/DanielPFlorian/ComfyUI-WorkflowGenerator",
|
||||
"files": [
|
||||
"https://github.com/DanielPFlorian/ComfyUI-WorkflowGenerator"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "ComfyUI-WorkflowGenerator custom nodes for generating ComfyUI workflows from natural language"
|
||||
},
|
||||
{
|
||||
"author": "EricRollei",
|
||||
"title": "PDF Tools - Advanced PDF Processing & OCR",
|
||||
"id": "pdf-tools",
|
||||
"reference": "https://github.com/EricRollei/PDF-Tools",
|
||||
"files": [
|
||||
"https://github.com/EricRollei/PDF-Tools"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Advanced PDF processing, OCR, Image and text parsing, smart image crop nodes for ComfyUI. Features include multi-language OCR (Surya, PaddleOCR VL), AI vision analysis (Florence-2, LayoutLMv3), advanced PDF extraction with quality assessment, spread detection for scanned books, and comprehensive layout analysis. Supports 90+ languages with multiple output formats.",
|
||||
"tags": [
|
||||
"PDF",
|
||||
"OCR",
|
||||
"document",
|
||||
"vision",
|
||||
"Florence-2",
|
||||
"Surya",
|
||||
"PaddleOCR",
|
||||
"LayoutLMv3",
|
||||
"multilingual",
|
||||
"layout-analysis"
|
||||
],
|
||||
"category": "Document Processing"
|
||||
},
|
||||
{
|
||||
"author": "EricRollei",
|
||||
"title": "AAA Metadata System",
|
||||
"id": "aaa-metadata-system",
|
||||
"reference": "https://github.com/EricRollei/AAA_Metadata_System",
|
||||
"files": [
|
||||
"https://github.com/EricRollei/AAA_Metadata_System"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Advanced metadata management and multi-format image save system for ComfyUI. Save/load with metadata for PNG, JPEG, TIFF, PSD (with layers), SVG, and WebP. Features XMP/TXT/JSON sidecar files, embedded EXIF/XMP, MWG-RS regions for face metadata, workflow tracking, LoRA/embedding detection, runtime execution hooks, and Automatic1111 compatibility. Preserve layers, alpha channels, and complete provenance across all formats.",
|
||||
"nodename_pattern": "^(MetadataAwareSaveImage|Multi_LoRA_Loader|LoadImageLayers)"
|
||||
},
|
||||
{
|
||||
"author": "EricRollei",
|
||||
"title": "HYPIR Image Restoration for ComfyUI",
|
||||
"reference": "https://github.com/EricRollei/HYPIR-ComfyUI",
|
||||
"files": [
|
||||
"https://github.com/EricRollei/HYPIR-ComfyUI"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Custom ComfyUI nodes for HYPIR image restoration using Stable Diffusion 2.1. Restores and upscales scanned or generated images with optional LM Studio prompt enhancement and tiled VAE processing for large resolutions.",
|
||||
"nodename_pattern": "HYPIR"
|
||||
},
|
||||
{
|
||||
"author": "Madiator2011",
|
||||
"title": "ComfyUI RunpodDirect",
|
||||
"id": "runpoddirect",
|
||||
"reference": "https://github.com/MadiatorLabs/ComfyUI-RunpodDirect",
|
||||
"files": [
|
||||
"https://github.com/MadiatorLabs/ComfyUI-RunpodDirect"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Direct model downloads to your Runod pod with blazing-fast multi-connection support. No more downloading models to your local machine and re-uploading!"
|
||||
},
|
||||
{
|
||||
"author": "Writili",
|
||||
"title": "WtlNodes",
|
||||
"id": "wtlnodes",
|
||||
"reference": "https://github.com/Scorpiosis0/ComfyUI-WtlNodes",
|
||||
"files": [
|
||||
"https://github.com/Scorpiosis0/ComfyUI-WtlNodes"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "This node adds improvement over some already existing nodes as well as some custom nodes."
|
||||
},
|
||||
{
|
||||
"author": "yuanyuan-spec",
|
||||
"title": "HunyuanVideo-1.5 nodes",
|
||||
"reference": "https://github.com/yuanyuan-spec/comfyui_hunyuanvideo_1.5_plugin",
|
||||
"files": [
|
||||
"https://github.com/yuanyuan-spec/comfyui_hunyuanvideo_1.5_plugin"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "A ComfyUI plugin based on HunyuanVideo-1.5, offering both simplified and complete node sets for quick usage or deep workflow customization."
|
||||
},
|
||||
{
|
||||
"author": "rookiestar28",
|
||||
"title": "ComfyUI Text Processor",
|
||||
"id": "ComfyUI_Text_Processor",
|
||||
"reference": "https://github.com/rookiestar28/ComfyUI_Text_Processor",
|
||||
"files": [
|
||||
"https://github.com/rookiestar28/ComfyUI_Text_Processor"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "An advanced text processing node for ComfyUI."
|
||||
},
|
||||
{
|
||||
"author": "kjqwer",
|
||||
"title": "SmartSaveImage",
|
||||
"reference": "https://github.com/kjqwer/SmartSaveImage",
|
||||
"files": [
|
||||
"https://github.com/kjqwer/SmartSaveImage"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Smart Image Saving Nodes - Offers intelligent folder management and image saving capabilities, supporting flexible folder hierarchy control, multiple metadata sources, various image formats, and metadata embedding. It includes two nodes: SmartFolderManager and SmartImageSaver.",
|
||||
"pip": ["Pillow", "piexif"],
|
||||
"nodename_pattern": "Smart"
|
||||
},
|
||||
{
|
||||
"author": "EricRollei",
|
||||
"title": "AAA_Metadata_System",
|
||||
"reference": "https://github.com/EricRollei/AAA_Metadata_System",
|
||||
"files": [
|
||||
"https://github.com/EricRollei/AAA_Metadata_System"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "A comprehensive metadata management system for ComfyUI that enables storing, retrieving, and manipulating image metadata across multiple formats including embedded files, XMP sidecars, text files, and SQLite databases."
|
||||
},
|
||||
{
|
||||
"author": "Ltamann",
|
||||
"title": "ComfyUI-TBG-SAM3",
|
||||
"reference": "https://github.com/Ltamann/ComfyUI-TBG-SAM3",
|
||||
"files": [
|
||||
"https://github.com/Ltamann/ComfyUI-TBG-SAM3"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "A ComfyUI custom node extension integrating Meta's Segment Anything Model 3 (SAM 3) for advanced image and video segmentation with text-prompt, point-based, and mask-driven capabilities. Provides production-ready nodes compatible with ComfyUI's Impact Pack SEGS format, depth map generation, and support for Python 3.13+ with CUDA and CPU support."
|
||||
},
|
||||
{
|
||||
"author": "hobinrude",
|
||||
"title": "ComfyUI_DWposeDeluxe",
|
||||
"reference": "https://github.com/hobinrude/ComfyUI_DWposeDeluxe",
|
||||
"files": [
|
||||
"https://github.com/hobinrude/ComfyUI_DWposeDeluxe"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "A custom ComfyUI node integrating DW-Pose (Denoising Whole-Body Pose Estimation) for high-quality pose detection with CPU (ONNX) and GPU (TensorRT) support. Features 20x faster performance with TensorRT acceleration, automatic model downloading, customizable pose visualization, keypoint conversion, and video workflow integration."
|
||||
},
|
||||
{
|
||||
"author": "sbcode",
|
||||
"title": "Remove Background",
|
||||
"reference": "https://github.com/Sean-Bradley/ComfyUI-Remove-Background",
|
||||
"files": [
|
||||
"https://github.com/Sean-Bradley/ComfyUI-Remove-Background"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Remove background scenery from an image of a person. The output image is saved as an RGBA PNG. The alpha channel is included."
|
||||
},
|
||||
{
|
||||
"author": "wouterverweirder",
|
||||
"title": "ComfyUI SAM3",
|
||||
"reference": "https://github.com/wouterverweirder/comfyui_sam3",
|
||||
"files": [
|
||||
"https://github.com/wouterverweirder/comfyui_sam3"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Custom Nodes to work with SAM3"
|
||||
},
|
||||
{
|
||||
"author": "Hearmeman24",
|
||||
"title": "ComfyUI-LoRAPlotNode",
|
||||
"reference": "https://github.com/Hearmeman24/ComfyUI-LoRAPlotNode",
|
||||
"files": [
|
||||
"https://github.com/Hearmeman24/ComfyUI-LoRAPlotNode"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "A custom ComfyUI node for testing multiple LoRA models across different strength values. Automatically generates model/clip pairs for each LoRA-strength combination and includes an image saver node with text overlay for easy identification."
|
||||
},
|
||||
{
|
||||
"author": "PozzettiAndrea",
|
||||
"title": "ComfyUI-SAM3",
|
||||
"reference": "https://github.com/PozzettiAndrea/ComfyUI-SAM3",
|
||||
"files": [
|
||||
"https://github.com/PozzettiAndrea/ComfyUI-SAM3"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "ComfyUI integration for Meta's SAM3 model enabling open-vocabulary image segmentation using natural language text prompts, with automatic model download, geometric refinement, and flexible confidence thresholds."
|
||||
},
|
||||
{
|
||||
"author": "wwzhifeng",
|
||||
"title": "comfyui-jsonprompt",
|
||||
"reference": "https://github.com/wwzhifeng/comfyui-jsonprompt",
|
||||
"files": [
|
||||
"https://github.com/wwzhifeng/comfyui-jsonprompt"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Custom ComfyUI node that expands structured JSON text into standard prompts for use with models like Gemini, Flux, OpenAI, and Sora. (Description by CC)"
|
||||
},
|
||||
{
|
||||
"author": "StarIICraft",
|
||||
"title": "ComfyUI-Simple-Selector",
|
||||
"reference": "https://github.com/StarIICraft/ComfyUI-Simple-Selector",
|
||||
"files": [
|
||||
"https://github.com/StarIICraft/ComfyUI-Simple-Selector"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Logic control node with 5 universal input ports that checks connections in reverse priority order and outputs the index of the first valid active input, with support for muted nodes and any data type."
|
||||
},
|
||||
{
|
||||
"author": "fr0nky0ng",
|
||||
"title": "ComfyUI-JSON-Prompt",
|
||||
"reference": "https://github.com/fr0nky0ng/ComfyUI-JSON-Prompt",
|
||||
"files": [
|
||||
"https://github.com/fr0nky0ng/ComfyUI-JSON-Prompt"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Custom node for ComfyUI that generates JSON prompts from natural language descriptions to improve text-to-image generation quality. Supports local LLM integration via Ollama or Google Gemini API."
|
||||
},
|
||||
{
|
||||
"author": "EricRollei",
|
||||
"title": "Eric_Image_Processing_Nodes",
|
||||
"reference": "https://github.com/EricRollei/Eric_Image_Processing_Nodes",
|
||||
"files": [
|
||||
"https://github.com/EricRollei/Eric_Image_Processing_Nodes"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "A comprehensive collection of advanced image processing nodes for ComfyUI, featuring state-of-the-art denoising, enhancement, and restoration techniques with GPU acceleration and specialized film grain processing."
|
||||
},
|
||||
{
|
||||
"author": "huyl3-cpu",
|
||||
"title": "comfyui-huyl2-nodes",
|
||||
"reference": "https://github.com/huyl3-cpu/comfyui-sortlist",
|
||||
"files": [
|
||||
"https://github.com/huyl3-cpu/comfyui-sortlist"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Custom utility nodes for ComfyUI by huyl2 (sort list v2, etc.)"
|
||||
},
|
||||
{
|
||||
"author": "7BEII",
|
||||
"title": "comfyui-PD_comfy-api-node",
|
||||
"reference": "https://github.com/7BEII/comfyui-PD_comfy-api-node",
|
||||
"files": [
|
||||
"https://github.com/7BEII/comfyui-PD_comfy-api-node"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "ComfyUI custom node suite integrating multiple AI image generation APIs (Gemini, Flux.1 Kontext Pro) with unified authentication via ComfyUI API Key and real-time cost tracking. (Description by CC)"
|
||||
},
|
||||
{
|
||||
"author": "wallen0322",
|
||||
"title": "ComfyUI-AE-Animation",
|
||||
"reference": "https://github.com/wallen0322/ComfyUI-AE-Animation",
|
||||
"files": [
|
||||
"https://github.com/wallen0322/ComfyUI-AE-Animation"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "After Effects-style animation nodes for ComfyUI with timeline-based keyframe control, layer management, and real-time preview rendering. (Description by CC)"
|
||||
},
|
||||
{
|
||||
"author": "wallen0322",
|
||||
"title": "ComfyUI-TTM-WAN22",
|
||||
"reference": "https://github.com/wallen0322/ComfyUI-TTM-WAN22",
|
||||
"files": [
|
||||
"https://github.com/wallen0322/ComfyUI-TTM-WAN22"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "TTM (Time-to-Move) node for ComfyUI enabling motion-controlled video generation with Wan2.2 models using dual-clock denoising for independent background and object animation control."
|
||||
},
|
||||
{
|
||||
"author": "swan7-py",
|
||||
"title": "ComfyUI-ImageAlphaCrop",
|
||||
"reference": "https://github.com/swan7-py/ComfyUI-ImageAlphaCrop",
|
||||
"files": [
|
||||
"https://github.com/swan7-py/ComfyUI-ImageAlphaCrop"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "ComfyUI plugin for automatically cropping transparent alpha channel borders from images - ideal for processing logos and icons. Supports batch processing with adjustable padding and alpha threshold. (Description by CC)"
|
||||
},
|
||||
{
|
||||
"author": "was",
|
||||
"title": "WAS LMStudio Easy-Query",
|
||||
"reference": "https://github.com/WASasquatch/ComfyUI_LMStudio_EasyQuery",
|
||||
"files": [
|
||||
"https://github.com/WASasquatch/ComfyUI_LMStudio_EasyQuery"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "LM Studio calls with image support and easy task directions."
|
||||
},
|
||||
{
|
||||
"author": "PozzettiAndrea",
|
||||
"title": "ComfyUI-AnyTop",
|
||||
"reference": "https://github.com/PozzettiAndrea/ComfyUI-AnyTop",
|
||||
"files": [
|
||||
"https://github.com/PozzettiAndrea/ComfyUI-AnyTop"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Standalone ComfyUI custom nodes for AnyTop - Universal Motion Generation for Any Skeleton Topology."
|
||||
},
|
||||
{
|
||||
"author": "IamCreateAI",
|
||||
"title": "ComfyUI-Animon",
|
||||
"reference": "https://github.com/IamCreateAI/ComfyUI-Animon",
|
||||
"files": [
|
||||
"https://github.com/IamCreateAI/ComfyUI-Animon"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "ComfyUI nodes for [Animon Platform](https://platform.animon.ai/), a comprehensive API service offering a variety of image and video generation models."
|
||||
},
|
||||
{
|
||||
"author": "neonr0",
|
||||
"title": "ComfyUI-PixelConstrainedScaler",
|
||||
"reference": "https://github.com/neonr-0/ComfyUI-PixelConstrainedScaler",
|
||||
"files": [
|
||||
"https://github.com/neonr-0/ComfyUI-PixelConstrainedScaler"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Smart upscaling with pixel-budget awareness while preserving native aspect ratios. Ideal for Image to Image (I2I) and Image to Video (I2V) workflows!"
|
||||
},
|
||||
{
|
||||
"author": "slahiri",
|
||||
"title": "ComfyUI-AI-Photography-Toolkit",
|
||||
"reference": "https://github.com/slahiri/ComfyUI-AI-Photography-Toolkit",
|
||||
"files": [
|
||||
"https://github.com/slahiri/ComfyUI-AI-Photography-Toolkit"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "A collection of AI-powered photography and image generation tools for ComfyUI, featuring the SID_AIPromptGenerator node that uses Anthropic's Claude API to analyze images and generate optimized prompts for various image generation models."
|
||||
},
|
||||
{
|
||||
"author": "wzyfromhust",
|
||||
"title": "ComfyUI_SAM2UltraV2",
|
||||
"reference": "https://github.com/wzyfromhust/ComfyUI_SAM2UltraV2",
|
||||
"files": [
|
||||
"https://github.com/wzyfromhust/ComfyUI_SAM2UltraV2"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "A fully modular and high-performance implementation of SAM2 (Segment Anything Model 2) for ComfyUI with dual-prompt support, negative point sampling, and upper body segmentation."
|
||||
},
|
||||
{
|
||||
"author": "cedarconnor",
|
||||
"title": "ComfyUI-DreamCube",
|
||||
"reference": "https://github.com/cedarconnor/ComfyUI-DreamCube",
|
||||
"files": [
|
||||
"https://github.com/cedarconnor/ComfyUI-DreamCube"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "360° panoramic depth estimation with multi-plane synchronization for ComfyUI, featuring equirectangular-cubemap transformations, cross-face consistency, and boundary blending for seamless depth maps."
|
||||
},
|
||||
{
|
||||
"author": "dowa-git",
|
||||
"title": "comfyui-dowa",
|
||||
"reference": "https://github.com/dowa-git/comfyui-dowa",
|
||||
"files": [
|
||||
"https://github.com/dowa-git/comfyui-dowa"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "Professional navigation bar widget for ComfyUI with JWT-based user authentication, workflow templates, and team collaboration features in a purple gradient design."
|
||||
},
|
||||
{
|
||||
"author": "fuselayer",
|
||||
"title": "comfyui-lite-tracker",
|
||||
"reference": "https://github.com/fuselayer/comfyui-lite-tracker",
|
||||
"files": [
|
||||
"https://github.com/fuselayer/comfyui-lite-tracker"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "ComfyUI custom nodes for LiteTracker, a fast and efficient point tracking model for videos with load model, track, and grid editor nodes."
|
||||
},
|
||||
{
|
||||
"author": "yichengup",
|
||||
"title": "ComfyUI-YCNodes_Toolkit",
|
||||
"reference": "https://github.com/yichengup/ComfyUI-YCNodes_Toolkit",
|
||||
"files": [
|
||||
"https://github.com/yichengup/ComfyUI-YCNodes_Toolkit"
|
||||
],
|
||||
"install_type": "git-clone",
|
||||
"description": "ComfyUI toolkit with custom nodes for BBox canvas visualization, image brush mask drawing, and coordinate annotation for debugging and external data bridging. (Description by CC)"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -85,7 +85,15 @@ cm_global.register_api('cm.is_import_failed_extension', is_import_failed_extensi
|
||||
comfyui_manager_path = os.path.abspath(os.path.dirname(__file__))
|
||||
|
||||
custom_nodes_base_path = folder_paths.get_folder_paths('custom_nodes')[0]
|
||||
manager_files_path = os.path.abspath(os.path.join(folder_paths.get_user_directory(), 'default', 'ComfyUI-Manager'))
|
||||
|
||||
# Check for System User API availability (PR #10966)
|
||||
_has_system_user_api = hasattr(folder_paths, 'get_system_user_directory')
|
||||
|
||||
if _has_system_user_api:
|
||||
manager_files_path = os.path.abspath(os.path.join(folder_paths.get_user_directory(), '__manager'))
|
||||
else:
|
||||
manager_files_path = os.path.abspath(os.path.join(folder_paths.get_user_directory(), 'default', 'ComfyUI-Manager'))
|
||||
|
||||
manager_pip_overrides_path = os.path.join(manager_files_path, "pip_overrides.json")
|
||||
manager_pip_blacklist_path = os.path.join(manager_files_path, "pip_blacklist.list")
|
||||
restore_snapshot_path = os.path.join(manager_files_path, "startup-scripts", "restore-snapshot.json")
|
||||
@ -516,7 +524,8 @@ check_bypass_ssl()
|
||||
|
||||
# Perform install
|
||||
processed_install = set()
|
||||
script_list_path = os.path.join(folder_paths.user_directory, "default", "ComfyUI-Manager", "startup-scripts", "install-scripts.txt")
|
||||
# Use manager_files_path for consistency (fixes path inconsistency bug)
|
||||
script_list_path = os.path.join(manager_files_path, "startup-scripts", "install-scripts.txt")
|
||||
pip_fixer = manager_util.PIPFixer(manager_util.get_installed_packages(), comfy_path, manager_files_path)
|
||||
|
||||
|
||||
@ -793,7 +802,11 @@ def execute_startup_script():
|
||||
|
||||
|
||||
# Check if script_list_path exists
|
||||
if os.path.exists(script_list_path):
|
||||
# Block startup-scripts on old ComfyUI (security measure)
|
||||
if not _has_system_user_api:
|
||||
if os.path.exists(script_list_path):
|
||||
print("[ComfyUI-Manager] Startup scripts blocked on old ComfyUI version.")
|
||||
elif os.path.exists(script_list_path):
|
||||
execute_startup_script()
|
||||
|
||||
|
||||
|
||||
@ -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 = "3.37.2"
|
||||
version = "3.38.1"
|
||||
license = { file = "LICENSE.txt" }
|
||||
dependencies = ["GitPython", "PyGithub", "matrix-nio", "transformers", "huggingface-hub>0.20", "typer", "rich", "typing-extensions", "toml", "uv", "chardet"]
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user