From 6897a1d077e06e8147e55932fc880a5cd6ef8f13 Mon Sep 17 00:00:00 2001 From: "Dr.Lt.Data" Date: Wed, 19 Mar 2025 22:24:04 +0900 Subject: [PATCH 01/29] support pip comfyui-manager --- main.py | 4 ++++ nodes.py | 1 + 2 files changed, 5 insertions(+) diff --git a/main.py b/main.py index 1b100fa8aedf..16a13cf97bf9 100644 --- a/main.py +++ b/main.py @@ -10,6 +10,7 @@ import itertools import utils.extra_config import logging +import comfyui_manager if __name__ == "__main__": #NOTE: These do not do anything on core ComfyUI which should already have no communication with the internet, they are for custom nodes. @@ -69,6 +70,8 @@ def execute_script(script_path): if args.disable_all_custom_nodes: return + comfyui_manager.prestartup() + node_paths = folder_paths.get_folder_paths("custom_nodes") for custom_node_path in node_paths: possible_modules = os.listdir(custom_node_path) @@ -261,6 +264,7 @@ def start_comfyui(asyncio_loop=None): prompt_server = server.PromptServer(asyncio_loop) q = execution.PromptQueue(prompt_server) + comfyui_manager.start() nodes.init_extra_nodes(init_custom_nodes=not args.disable_all_custom_nodes) cuda_malloc_warning() diff --git a/nodes.py b/nodes.py index 71d1b8dd7f84..c06269525929 100644 --- a/nodes.py +++ b/nodes.py @@ -37,6 +37,7 @@ import folder_paths import latent_preview import node_helpers +import comfyui_manager def before_node_execution(): comfy.model_management.throw_exception_if_processing_interrupted() From fb1b9c76b02442f89e97302499b627d122ffd1c4 Mon Sep 17 00:00:00 2001 From: "Dr.Lt.Data" Date: Thu, 10 Apr 2025 08:40:53 +0900 Subject: [PATCH 02/29] added: --disable-manager option --- comfy/cli_args.py | 1 + main.py | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/comfy/cli_args.py b/comfy/cli_args.py index 62079e6a7709..52930652b114 100644 --- a/comfy/cli_args.py +++ b/comfy/cli_args.py @@ -49,6 +49,7 @@ def __call__(self, parser, namespace, values, option_string=None): parser.add_argument("--input-directory", type=str, default=None, help="Set the ComfyUI input directory. Overrides --base-directory.") parser.add_argument("--auto-launch", action="store_true", help="Automatically launch ComfyUI in the default browser.") parser.add_argument("--disable-auto-launch", action="store_true", help="Disable auto launching the browser.") +parser.add_argument("--disable-manager", action="store_true", help="Disable ComfyUI-Manager feature.") parser.add_argument("--cuda-device", type=int, default=None, metavar="DEVICE_ID", help="Set the id of the cuda device this instance will use.") cm_group = parser.add_mutually_exclusive_group() cm_group.add_argument("--cuda-malloc", action="store_true", help="Enable cudaMallocAsync (enabled by default for torch 2.0 and up).") diff --git a/main.py b/main.py index 16a13cf97bf9..3ab31f414fe5 100644 --- a/main.py +++ b/main.py @@ -264,7 +264,9 @@ def start_comfyui(asyncio_loop=None): prompt_server = server.PromptServer(asyncio_loop) q = execution.PromptQueue(prompt_server) - comfyui_manager.start() + if not args.disable_manager: + comfyui_manager.start() + nodes.init_extra_nodes(init_custom_nodes=not args.disable_all_custom_nodes) cuda_malloc_warning() From 8b9f31abdfed38b199db9ff9bcc33b55fb6d5958 Mon Sep 17 00:00:00 2001 From: "Dr.Lt.Data" Date: Thu, 10 Apr 2025 12:10:24 +0900 Subject: [PATCH 03/29] fixed: ruff check --- nodes.py | 1 - 1 file changed, 1 deletion(-) diff --git a/nodes.py b/nodes.py index 0b62a9f707a1..f63e8cb5ed88 100644 --- a/nodes.py +++ b/nodes.py @@ -37,7 +37,6 @@ import folder_paths import latent_preview import node_helpers -import comfyui_manager def before_node_execution(): comfy.model_management.throw_exception_if_processing_interrupted() From cc975e5f0b141fac0e3548d058d36260183a7814 Mon Sep 17 00:00:00 2001 From: "Dr.Lt.Data" Date: Sat, 12 Apr 2025 19:11:02 +0900 Subject: [PATCH 04/29] add comfyui_manager to requirements.txt It's still in the development stage, so the version is not pinned yet. --- requirements.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/requirements.txt b/requirements.txt index 851db23bdc53..310ab57bafcd 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,5 @@ comfyui-frontend-package==1.15.13 +comfyui_manager torch torchsde torchvision From 418eaed42ca2d30d5e0c657f9c27b0b7c62f0b28 Mon Sep 17 00:00:00 2001 From: "Dr.Lt.Data" Date: Sat, 12 Apr 2025 20:55:27 +0900 Subject: [PATCH 05/29] fixed: Ensure that `comfyui_manager`'s prestartup always runs, even when `--disable-all-custom-nodes` is used. feat: Disable specific custom nodes according to the policy of `comfyui_manager`. --- main.py | 7 +++++-- nodes.py | 5 +++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/main.py b/main.py index 7ca04f4b1895..ff582ff22ab4 100644 --- a/main.py +++ b/main.py @@ -70,8 +70,6 @@ def execute_script(script_path): if args.disable_all_custom_nodes: return - comfyui_manager.prestartup() - node_paths = folder_paths.get_folder_paths("custom_nodes") for custom_node_path in node_paths: possible_modules = os.listdir(custom_node_path) @@ -79,6 +77,10 @@ def execute_script(script_path): for possible_module in possible_modules: module_path = os.path.join(custom_node_path, possible_module) + + if comfyui_manager.should_be_disabled(module_path): + continue + if os.path.isfile(module_path) or module_path.endswith(".disabled") or module_path == "__pycache__": continue @@ -98,6 +100,7 @@ def execute_script(script_path): logging.info("") apply_custom_paths() +comfyui_manager.prestartup() execute_prestartup_script() diff --git a/nodes.py b/nodes.py index 8c1720c1acd5..5b8077ab746a 100644 --- a/nodes.py +++ b/nodes.py @@ -37,6 +37,7 @@ import folder_paths import latent_preview import node_helpers +import comfyui_manager def before_node_execution(): comfy.model_management.throw_exception_if_processing_interrupted() @@ -2196,6 +2197,10 @@ def init_external_custom_nodes(): module_path = os.path.join(custom_node_path, possible_module) if os.path.isfile(module_path) and os.path.splitext(module_path)[1] != ".py": continue if module_path.endswith(".disabled"): continue + if comfyui_manager.should_be_disabled(module_path): + logging.info(f"Blocked by policy: {module_path}") + continue + time_before = time.perf_counter() success = load_custom_node(module_path, base_node_names, module_parent="custom_nodes") node_import_times.append((time.perf_counter() - time_before, module_path, success)) From 94f61c63788f144d8c86db2d72aa22c6742e79d7 Mon Sep 17 00:00:00 2001 From: "Dr.Lt.Data" Date: Tue, 15 Apr 2025 01:36:17 +0900 Subject: [PATCH 06/29] add --enable-manager-legacy-ui --- comfy/cli_args.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/comfy/cli_args.py b/comfy/cli_args.py index 771fc1655eae..87b9a87b487d 100644 --- a/comfy/cli_args.py +++ b/comfy/cli_args.py @@ -49,7 +49,6 @@ def __call__(self, parser, namespace, values, option_string=None): parser.add_argument("--input-directory", type=str, default=None, help="Set the ComfyUI input directory. Overrides --base-directory.") parser.add_argument("--auto-launch", action="store_true", help="Automatically launch ComfyUI in the default browser.") parser.add_argument("--disable-auto-launch", action="store_true", help="Disable auto launching the browser.") -parser.add_argument("--disable-manager", action="store_true", help="Disable ComfyUI-Manager feature.") parser.add_argument("--cuda-device", type=int, default=None, metavar="DEVICE_ID", help="Set the id of the cuda device this instance will use.") cm_group = parser.add_mutually_exclusive_group() cm_group.add_argument("--cuda-malloc", action="store_true", help="Enable cudaMallocAsync (enabled by default for torch 2.0 and up).") @@ -118,6 +117,11 @@ class LatentPreviewMethod(enum.Enum): upcast.add_argument("--dont-upcast-attention", action="store_true", help="Disable all upcasting of attention. Should be unnecessary except for debugging.") +manager_group = parser.add_mutually_exclusive_group() +manager_group.add_argument("--disable-manager", action="store_true", help="Disable ComfyUI-Manager feature.") +manager_group.add_argument("--enable-manager-legacy-ui", action="store_true", help="Enables the legacy UI of ComfyUI-Manager") + + vram_group = parser.add_mutually_exclusive_group() vram_group.add_argument("--gpu-only", action="store_true", help="Store and run everything (text encoders/CLIP models, etc... on the GPU).") vram_group.add_argument("--highvram", action="store_true", help="By default models will be unloaded to CPU memory after being used. This option keeps them in GPU memory.") @@ -152,6 +156,7 @@ class PerformanceFeature(enum.Enum): parser.add_argument("--verbose", default='INFO', const='DEBUG', nargs="?", choices=['DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'], help='Set the logging level') parser.add_argument("--log-stdout", action="store_true", help="Send normal process output to stdout instead of stderr (default).") + # The default built-in provider hosted under web/ DEFAULT_VERSION_STRING = "comfyanonymous/ComfyUI@latest" From 57dae1469fbad2fdc2b44fd73739461886e9b7c3 Mon Sep 17 00:00:00 2001 From: "Dr.Lt.Data" Date: Mon, 28 Apr 2025 17:56:50 +0900 Subject: [PATCH 07/29] modified: --disable-manager will prevent importing comfyui-manager feat: --disable-manager-ui will disable the endpoints and ui of comfyui-manager --- comfy/cli_args.py | 3 ++- main.py | 16 +++++++++++----- nodes.py | 12 ++++++++---- 3 files changed, 21 insertions(+), 10 deletions(-) diff --git a/comfy/cli_args.py b/comfy/cli_args.py index 68c7285eee9c..af5016e64219 100644 --- a/comfy/cli_args.py +++ b/comfy/cli_args.py @@ -119,7 +119,8 @@ class LatentPreviewMethod(enum.Enum): manager_group = parser.add_mutually_exclusive_group() -manager_group.add_argument("--disable-manager", action="store_true", help="Disable ComfyUI-Manager feature.") +manager_group.add_argument("--disable-manager", action="store_true", help="Completely disable the ComfyUI-Manager feature.") +manager_group.add_argument("--disable-manager-ui", action="store_true", help="Disables only the ComfyUI-Manager UI and endpoints. Scheduled installations and similar background tasks will still operate.") manager_group.add_argument("--enable-manager-legacy-ui", action="store_true", help="Enables the legacy UI of ComfyUI-Manager") diff --git a/main.py b/main.py index 295d0f4e218d..c1bfdaf57691 100644 --- a/main.py +++ b/main.py @@ -11,7 +11,9 @@ import utils.extra_config import logging import sys -import comfyui_manager + +if not args.disable_manager: + import comfyui_manager if __name__ == "__main__": #NOTE: These do not do anything on core ComfyUI which should already have no communication with the internet, they are for custom nodes. @@ -79,8 +81,9 @@ def execute_script(script_path): for possible_module in possible_modules: module_path = os.path.join(custom_node_path, possible_module) - if comfyui_manager.should_be_disabled(module_path): - continue + if not args.disable_manager: + if comfyui_manager.should_be_disabled(module_path): + continue if os.path.isfile(module_path) or module_path.endswith(".disabled") or module_path == "__pycache__": continue @@ -101,7 +104,10 @@ def execute_script(script_path): logging.info("") apply_custom_paths() -comfyui_manager.prestartup() + +if not args.disable_manager: + comfyui_manager.prestartup() + execute_prestartup_script() @@ -274,7 +280,7 @@ def start_comfyui(asyncio_loop=None): prompt_server = server.PromptServer(asyncio_loop) q = execution.PromptQueue(prompt_server) - if not args.disable_manager: + if not args.disable_manager and not args.disable_manager_ui: comfyui_manager.start() nodes.init_extra_nodes(init_custom_nodes=not args.disable_all_custom_nodes) diff --git a/nodes.py b/nodes.py index f7bd54e46c58..188c67d1608e 100644 --- a/nodes.py +++ b/nodes.py @@ -37,7 +37,9 @@ import folder_paths import latent_preview import node_helpers -import comfyui_manager + +if not args.disable_manager: + import comfyui_manager def before_node_execution(): comfy.model_management.throw_exception_if_processing_interrupted() @@ -2173,9 +2175,11 @@ def init_external_custom_nodes(): module_path = os.path.join(custom_node_path, possible_module) if os.path.isfile(module_path) and os.path.splitext(module_path)[1] != ".py": continue if module_path.endswith(".disabled"): continue - if comfyui_manager.should_be_disabled(module_path): - logging.info(f"Blocked by policy: {module_path}") - continue + + if not args.disable_manager: + if comfyui_manager.should_be_disabled(module_path): + logging.info(f"Blocked by policy: {module_path}") + continue time_before = time.perf_counter() success = load_custom_node(module_path, base_node_names, module_parent="custom_nodes") From 17cfabec7dd103ad9b56b508c393e36d8138f729 Mon Sep 17 00:00:00 2001 From: "Dr.Lt.Data" Date: Tue, 1 Jul 2025 12:55:53 +0900 Subject: [PATCH 08/29] added: Apply manager middleware --- server.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/server.py b/server.py index 878b5eeb1eb5..993d52daf0b3 100644 --- a/server.py +++ b/server.py @@ -36,6 +36,9 @@ from typing import Optional, Union from api_server.routes.internal.internal_routes import InternalRoutes +if not args.disable_manager: + import comfyui_manager + class BinaryEventTypes: PREVIEW_IMAGE = 1 UNENCODED_PREVIEW_IMAGE = 2 @@ -175,6 +178,9 @@ def __init__(self, loop): else: middlewares.append(create_origin_only_middleware()) + if not args.disable_manager: + middlewares.append(comfyui_manager.create_middleware()) + max_upload_size = round(args.max_upload_size * 1024 * 1024) self.app = web.Application(client_max_size=max_upload_size, middlewares=middlewares) self.sockets = dict() From 117d8ae992dc4ab6ba9e4254eaf56a29b2feb836 Mon Sep 17 00:00:00 2001 From: "Dr.Lt.Data" Date: Sat, 23 Aug 2025 06:45:52 +0900 Subject: [PATCH 09/29] update requirments.txt --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index c8f7bf8416c6..d52964187900 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,7 +1,7 @@ comfyui-frontend-package==1.25.9 comfyui-workflow-templates==0.1.62 comfyui-embedded-docs==0.2.6 -comfyui_manager +comfyui_manager==4.0.0b13 torch torchsde torchvision From 26cac3c0534b9a7a8d9a82389fa21577b36f97c5 Mon Sep 17 00:00:00 2001 From: "Dr.Lt.Data" Date: Sat, 23 Aug 2025 08:47:27 +0900 Subject: [PATCH 10/29] restore custom_nodes dir --- custom_nodes/example_node.py.example | 155 +++++++++++++++++++++++++++ custom_nodes/websocket_image_save.py | 44 ++++++++ 2 files changed, 199 insertions(+) create mode 100644 custom_nodes/example_node.py.example create mode 100644 custom_nodes/websocket_image_save.py diff --git a/custom_nodes/example_node.py.example b/custom_nodes/example_node.py.example new file mode 100644 index 000000000000..29ab2aa72319 --- /dev/null +++ b/custom_nodes/example_node.py.example @@ -0,0 +1,155 @@ +class Example: + """ + A example node + + Class methods + ------------- + INPUT_TYPES (dict): + Tell the main program input parameters of nodes. + IS_CHANGED: + optional method to control when the node is re executed. + + Attributes + ---------- + RETURN_TYPES (`tuple`): + The type of each element in the output tuple. + RETURN_NAMES (`tuple`): + Optional: The name of each output in the output tuple. + FUNCTION (`str`): + The name of the entry-point method. For example, if `FUNCTION = "execute"` then it will run Example().execute() + OUTPUT_NODE ([`bool`]): + If this node is an output node that outputs a result/image from the graph. The SaveImage node is an example. + The backend iterates on these output nodes and tries to execute all their parents if their parent graph is properly connected. + Assumed to be False if not present. + CATEGORY (`str`): + The category the node should appear in the UI. + DEPRECATED (`bool`): + Indicates whether the node is deprecated. Deprecated nodes are hidden by default in the UI, but remain + functional in existing workflows that use them. + EXPERIMENTAL (`bool`): + Indicates whether the node is experimental. Experimental nodes are marked as such in the UI and may be subject to + significant changes or removal in future versions. Use with caution in production workflows. + execute(s) -> tuple || None: + The entry point method. The name of this method must be the same as the value of property `FUNCTION`. + For example, if `FUNCTION = "execute"` then this method's name must be `execute`, if `FUNCTION = "foo"` then it must be `foo`. + """ + def __init__(self): + pass + + @classmethod + def INPUT_TYPES(s): + """ + Return a dictionary which contains config for all input fields. + Some types (string): "MODEL", "VAE", "CLIP", "CONDITIONING", "LATENT", "IMAGE", "INT", "STRING", "FLOAT". + Input types "INT", "STRING" or "FLOAT" are special values for fields on the node. + The type can be a list for selection. + + Returns: `dict`: + - Key input_fields_group (`string`): Can be either required, hidden or optional. A node class must have property `required` + - Value input_fields (`dict`): Contains input fields config: + * Key field_name (`string`): Name of a entry-point method's argument + * Value field_config (`tuple`): + + First value is a string indicate the type of field or a list for selection. + + Second value is a config for type "INT", "STRING" or "FLOAT". + """ + return { + "required": { + "image": ("IMAGE",), + "int_field": ("INT", { + "default": 0, + "min": 0, #Minimum value + "max": 4096, #Maximum value + "step": 64, #Slider's step + "display": "number", # Cosmetic only: display as "number" or "slider" + "lazy": True # Will only be evaluated if check_lazy_status requires it + }), + "float_field": ("FLOAT", { + "default": 1.0, + "min": 0.0, + "max": 10.0, + "step": 0.01, + "round": 0.001, #The value representing the precision to round to, will be set to the step value by default. Can be set to False to disable rounding. + "display": "number", + "lazy": True + }), + "print_to_screen": (["enable", "disable"],), + "string_field": ("STRING", { + "multiline": False, #True if you want the field to look like the one on the ClipTextEncode node + "default": "Hello World!", + "lazy": True + }), + }, + } + + RETURN_TYPES = ("IMAGE",) + #RETURN_NAMES = ("image_output_name",) + + FUNCTION = "test" + + #OUTPUT_NODE = False + + CATEGORY = "Example" + + def check_lazy_status(self, image, string_field, int_field, float_field, print_to_screen): + """ + Return a list of input names that need to be evaluated. + + This function will be called if there are any lazy inputs which have not yet been + evaluated. As long as you return at least one field which has not yet been evaluated + (and more exist), this function will be called again once the value of the requested + field is available. + + Any evaluated inputs will be passed as arguments to this function. Any unevaluated + inputs will have the value None. + """ + if print_to_screen == "enable": + return ["int_field", "float_field", "string_field"] + else: + return [] + + def test(self, image, string_field, int_field, float_field, print_to_screen): + if print_to_screen == "enable": + print(f"""Your input contains: + string_field aka input text: {string_field} + int_field: {int_field} + float_field: {float_field} + """) + #do some processing on the image, in this example I just invert it + image = 1.0 - image + return (image,) + + """ + The node will always be re executed if any of the inputs change but + this method can be used to force the node to execute again even when the inputs don't change. + You can make this node return a number or a string. This value will be compared to the one returned the last time the node was + executed, if it is different the node will be executed again. + This method is used in the core repo for the LoadImage node where they return the image hash as a string, if the image hash + changes between executions the LoadImage node is executed again. + """ + #@classmethod + #def IS_CHANGED(s, image, string_field, int_field, float_field, print_to_screen): + # return "" + +# Set the web directory, any .js file in that directory will be loaded by the frontend as a frontend extension +# WEB_DIRECTORY = "./somejs" + + +# Add custom API routes, using router +from aiohttp import web +from server import PromptServer + +@PromptServer.instance.routes.get("/hello") +async def get_hello(request): + return web.json_response("hello") + + +# A dictionary that contains all nodes you want to export with their names +# NOTE: names should be globally unique +NODE_CLASS_MAPPINGS = { + "Example": Example +} + +# A dictionary that contains the friendly/humanly readable titles for the nodes +NODE_DISPLAY_NAME_MAPPINGS = { + "Example": "Example Node" +} diff --git a/custom_nodes/websocket_image_save.py b/custom_nodes/websocket_image_save.py new file mode 100644 index 000000000000..15f87f9f5617 --- /dev/null +++ b/custom_nodes/websocket_image_save.py @@ -0,0 +1,44 @@ +from PIL import Image +import numpy as np +import comfy.utils +import time + +#You can use this node to save full size images through the websocket, the +#images will be sent in exactly the same format as the image previews: as +#binary images on the websocket with a 8 byte header indicating the type +#of binary message (first 4 bytes) and the image format (next 4 bytes). + +#Note that no metadata will be put in the images saved with this node. + +class SaveImageWebsocket: + @classmethod + def INPUT_TYPES(s): + return {"required": + {"images": ("IMAGE", ),} + } + + RETURN_TYPES = () + FUNCTION = "save_images" + + OUTPUT_NODE = True + + CATEGORY = "api/image" + + def save_images(self, images): + pbar = comfy.utils.ProgressBar(images.shape[0]) + step = 0 + for image in images: + i = 255. * image.cpu().numpy() + img = Image.fromarray(np.clip(i, 0, 255).astype(np.uint8)) + pbar.update_absolute(step, images.shape[0], ("PNG", img, None)) + step += 1 + + return {} + + @classmethod + def IS_CHANGED(s, images): + return time.time() + +NODE_CLASS_MAPPINGS = { + "SaveImageWebsocket": SaveImageWebsocket, +} From 6087e0210c558ebbd2a78a7aa35a0fa10afeaf4e Mon Sep 17 00:00:00 2001 From: "Dr.Lt.Data" Date: Sun, 24 Aug 2025 16:05:10 +0900 Subject: [PATCH 11/29] modified: Changed behavior so that if comfyui-manager is not installed, it provides an installation guide message instead of raising an exception. --- main.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/main.py b/main.py index 5d083c8e4a79..22590ecd7ff7 100644 --- a/main.py +++ b/main.py @@ -16,7 +16,11 @@ from comfy_api import feature_flags if not args.disable_manager: - import comfyui_manager + try: + import comfyui_manager + except Exception: + logging.warning(f"\n\nUnable to run comfyui-manager, disabling it. To enable comfyui-manager, run the following command:\ncommand:\n\t{sys.executable} -m pip install --pre comfyui_manager\n") + args.disable_manager = True if __name__ == "__main__": #NOTE: These do not do anything on core ComfyUI, they are for custom nodes. From 523b54b9b463f28bfdf7a4ac04e4d053a2ef3e96 Mon Sep 17 00:00:00 2001 From: "Dr.Lt.Data" Date: Thu, 28 Aug 2025 00:29:56 +0900 Subject: [PATCH 12/29] update requirements.txt --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index b564cf3033c9..97074c124f61 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,7 +1,7 @@ comfyui-frontend-package==1.25.11 comfyui-workflow-templates==0.1.68 comfyui-embedded-docs==0.2.6 -comfyui_manager==4.0.0b13 +comfyui_manager==4.0.1b2 torch torchsde torchvision From 69bbe1d5a9dd3a127574591326fb501702a48c30 Mon Sep 17 00:00:00 2001 From: "Dr.Lt.Data" Date: Tue, 2 Sep 2025 07:44:17 +0900 Subject: [PATCH 13/29] modified: SERVER_FEATURE_FLAGS - manager extension is added --- comfy_api/feature_flags.py | 1 + 1 file changed, 1 insertion(+) diff --git a/comfy_api/feature_flags.py b/comfy_api/feature_flags.py index 0d4389a6e9e7..bfb77eb5fa1f 100644 --- a/comfy_api/feature_flags.py +++ b/comfy_api/feature_flags.py @@ -13,6 +13,7 @@ SERVER_FEATURE_FLAGS: Dict[str, Any] = { "supports_preview_metadata": True, "max_upload_size": args.max_upload_size * 1024 * 1024, # Convert MB to bytes + "extension": {"manager": {"supports_v4": True}}, } From 31469f962fbaf9faaba8c76344be1dc779a24448 Mon Sep 17 00:00:00 2001 From: "Dr.Lt.Data" Date: Thu, 4 Sep 2025 11:31:37 +0900 Subject: [PATCH 14/29] fixed: issue of not properly detecting the removal of the `comfyui_manager` package in a conda environment. --- main.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/main.py b/main.py index 40237d7d72c7..f15725939b6f 100644 --- a/main.py +++ b/main.py @@ -11,14 +11,15 @@ import utils.extra_config import logging import sys +import importlib.util from comfy_execution.progress import get_progress_state from comfy_execution.utils import get_executing_context from comfy_api import feature_flags if not args.disable_manager: - try: + if importlib.util.find_spec("comfyui_manager"): import comfyui_manager - except Exception: + else: logging.warning(f"\n\nUnable to run comfyui-manager, disabling it. To enable comfyui-manager, run the following command:\ncommand:\n\t{sys.executable} -m pip install --pre comfyui_manager\n") args.disable_manager = True From 561eaf6ccf6d95b0e9ecc0b30206ac0df3963764 Mon Sep 17 00:00:00 2001 From: "Dr.Lt.Data" Date: Thu, 4 Sep 2025 11:44:53 +0900 Subject: [PATCH 15/29] fixed: Robust detection of missing comfyui_manager --- main.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/main.py b/main.py index f15725939b6f..a0a52ac34240 100644 --- a/main.py +++ b/main.py @@ -11,17 +11,25 @@ import utils.extra_config import logging import sys -import importlib.util from comfy_execution.progress import get_progress_state from comfy_execution.utils import get_executing_context from comfy_api import feature_flags + +def handle_comfyui_manager_unavailable(): + logging.warning(f"\n\nYou appear to be running comfyui-manager from source, this is not recommended. Please install comfyui-manager using the following command:\ncommand:\n\t{sys.executable} -m pip install --pre comfyui_manager\n") + args.disable_manager = True + + if not args.disable_manager: if importlib.util.find_spec("comfyui_manager"): import comfyui_manager + + if not comfyui_manager.__file__.endswith('__init__.py'): + handle_comfyui_manager_unavailable() else: - logging.warning(f"\n\nUnable to run comfyui-manager, disabling it. To enable comfyui-manager, run the following command:\ncommand:\n\t{sys.executable} -m pip install --pre comfyui_manager\n") - args.disable_manager = True + handle_comfyui_manager_unavailable() + if __name__ == "__main__": #NOTE: These do not do anything on core ComfyUI, they are for custom nodes. From f8aab7cab0ca84d38e1b03f5265314ec57d22f16 Mon Sep 17 00:00:00 2001 From: "Dr.Lt.Data" Date: Thu, 4 Sep 2025 11:49:48 +0900 Subject: [PATCH 16/29] fixed: more robust detection of missing comfyui_manager --- main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main.py b/main.py index a0a52ac34240..d73957cc967e 100644 --- a/main.py +++ b/main.py @@ -25,7 +25,7 @@ def handle_comfyui_manager_unavailable(): if importlib.util.find_spec("comfyui_manager"): import comfyui_manager - if not comfyui_manager.__file__.endswith('__init__.py'): + if comfyui_manager.__file__ and not comfyui_manager.__file__.endswith('__init__.py'): handle_comfyui_manager_unavailable() else: handle_comfyui_manager_unavailable() From 08e9c3ddf0676ae9ff5365901b1fa9ca887894db Mon Sep 17 00:00:00 2001 From: "Dr.Lt.Data" Date: Thu, 4 Sep 2025 11:51:11 +0900 Subject: [PATCH 17/29] fixed: more robust detection of missing comfyui_manager --- main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main.py b/main.py index d73957cc967e..341b267173f5 100644 --- a/main.py +++ b/main.py @@ -25,7 +25,7 @@ def handle_comfyui_manager_unavailable(): if importlib.util.find_spec("comfyui_manager"): import comfyui_manager - if comfyui_manager.__file__ and not comfyui_manager.__file__.endswith('__init__.py'): + if not comfyui_manager.__file__ or not comfyui_manager.__file__.endswith('__init__.py'): handle_comfyui_manager_unavailable() else: handle_comfyui_manager_unavailable() From 3b65618d13d6a3f46c12e922fbed965e137a63a8 Mon Sep 17 00:00:00 2001 From: "Dr.Lt.Data" Date: Sat, 6 Sep 2025 03:40:20 +0900 Subject: [PATCH 18/29] update requirements --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 8ae8076b50a5..1af3bca3b486 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,7 +1,7 @@ comfyui-frontend-package==1.25.11 comfyui-workflow-templates==0.1.75 comfyui-embedded-docs==0.2.6 -comfyui_manager==4.0.1b2 +comfyui_manager==4.0.1b5 torch torchsde torchvision From c97f6aa0b2c3eb02acdaf738e8293b8e3671ac0b Mon Sep 17 00:00:00 2001 From: Jin Yi Date: Sun, 7 Sep 2025 14:29:45 +0900 Subject: [PATCH 19/29] Fix OS reporting in /system_stats API to use sys.platform MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace os.name with sys.platform for more detailed OS identification. This change provides better OS differentiation: - Windows: "nt" -> "win32" - macOS: "posix" -> "darwin" - Linux: "posix" -> "linux" Previously, both macOS and Linux returned "posix", making them indistinguishable. Now each OS has a unique identifier, aligning with the Registry Specifications for proper compatibility checks. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- server.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server.py b/server.py index 8f9c88ebf771..92c764c45d9d 100644 --- a/server.py +++ b/server.py @@ -558,7 +558,7 @@ async def system_stats(request): system_stats = { "system": { - "os": os.name, + "os": sys.platform, "ram_total": ram_total, "ram_free": ram_free, "comfyui_version": __version__, From 0f8d57206ce9fa56b3c68595be59475ee64f31b0 Mon Sep 17 00:00:00 2001 From: "Dr.Lt.Data" Date: Sat, 13 Sep 2025 08:16:21 +0900 Subject: [PATCH 20/29] Update comfyui_manager dependency in requirements --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 219250f50278..d25fcebe2c4d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,7 +1,7 @@ comfyui-frontend-package==1.26.11 comfyui-workflow-templates==0.1.81 comfyui-embedded-docs==0.2.6 -comfyui_manager==4.0.1b5 +comfyui_manager==4.0.1 torch torchsde torchvision From e7ff647d0230cea3cffa7449ee5d353e75625467 Mon Sep 17 00:00:00 2001 From: comfyanonymous Date: Wed, 17 Sep 2025 20:58:42 -0400 Subject: [PATCH 21/29] --disable-manager -> --enable-manager --- comfy/cli_args.py | 2 +- main.py | 24 ++++++++++++------------ nodes.py | 4 ++-- server.py | 4 ++-- 4 files changed, 17 insertions(+), 17 deletions(-) diff --git a/comfy/cli_args.py b/comfy/cli_args.py index 9cc6b712fee9..f062d97341b1 100644 --- a/comfy/cli_args.py +++ b/comfy/cli_args.py @@ -120,8 +120,8 @@ class LatentPreviewMethod(enum.Enum): upcast.add_argument("--dont-upcast-attention", action="store_true", help="Disable all upcasting of attention. Should be unnecessary except for debugging.") +parser.add_argument("--enable-manager", action="store_true", help="Enable the ComfyUI-Manager feature.") manager_group = parser.add_mutually_exclusive_group() -manager_group.add_argument("--disable-manager", action="store_true", help="Completely disable the ComfyUI-Manager feature.") manager_group.add_argument("--disable-manager-ui", action="store_true", help="Disables only the ComfyUI-Manager UI and endpoints. Scheduled installations and similar background tasks will still operate.") manager_group.add_argument("--enable-manager-legacy-ui", action="store_true", help="Enables the legacy UI of ComfyUI-Manager") diff --git a/main.py b/main.py index 341b267173f5..df83f0800e7d 100644 --- a/main.py +++ b/main.py @@ -16,12 +16,19 @@ from comfy_api import feature_flags +if __name__ == "__main__": + #NOTE: These do not do anything on core ComfyUI, they are for custom nodes. + os.environ['HF_HUB_DISABLE_TELEMETRY'] = '1' + os.environ['DO_NOT_TRACK'] = '1' + +setup_logger(log_level=args.verbose, use_stdout=args.log_stdout) + + def handle_comfyui_manager_unavailable(): logging.warning(f"\n\nYou appear to be running comfyui-manager from source, this is not recommended. Please install comfyui-manager using the following command:\ncommand:\n\t{sys.executable} -m pip install --pre comfyui_manager\n") - args.disable_manager = True -if not args.disable_manager: +if args.enable_manager: if importlib.util.find_spec("comfyui_manager"): import comfyui_manager @@ -31,13 +38,6 @@ def handle_comfyui_manager_unavailable(): handle_comfyui_manager_unavailable() -if __name__ == "__main__": - #NOTE: These do not do anything on core ComfyUI, they are for custom nodes. - os.environ['HF_HUB_DISABLE_TELEMETRY'] = '1' - os.environ['DO_NOT_TRACK'] = '1' - -setup_logger(log_level=args.verbose, use_stdout=args.log_stdout) - def apply_custom_paths(): # extra model paths extra_model_paths_config_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), "extra_model_paths.yaml") @@ -96,7 +96,7 @@ def execute_script(script_path): for possible_module in possible_modules: module_path = os.path.join(custom_node_path, possible_module) - if not args.disable_manager: + if args.enable_manager: if comfyui_manager.should_be_disabled(module_path): continue @@ -123,7 +123,7 @@ def execute_script(script_path): apply_custom_paths() -if not args.disable_manager: +if args.enable_manager: comfyui_manager.prestartup() execute_prestartup_script() @@ -337,7 +337,7 @@ def start_comfyui(asyncio_loop=None): asyncio.set_event_loop(asyncio_loop) prompt_server = server.PromptServer(asyncio_loop) - if not args.disable_manager and not args.disable_manager_ui: + if args.enable_manager and not args.disable_manager_ui: comfyui_manager.start() hook_breaker_ac10a0.save_functions() diff --git a/nodes.py b/nodes.py index 9bd3b4dcffda..ca15fb9cd74d 100644 --- a/nodes.py +++ b/nodes.py @@ -43,7 +43,7 @@ import latent_preview import node_helpers -if not args.disable_manager: +if args.enable_manager: import comfyui_manager def before_node_execution(): @@ -2234,7 +2234,7 @@ async def init_external_custom_nodes(): logging.info(f"Skipping {possible_module} due to disable_all_custom_nodes and whitelist_custom_nodes") continue - if not args.disable_manager: + if args.enable_manager: if comfyui_manager.should_be_disabled(module_path): logging.info(f"Blocked by policy: {module_path}") continue diff --git a/server.py b/server.py index df6138639a49..46b1052686b5 100644 --- a/server.py +++ b/server.py @@ -42,7 +42,7 @@ # Import cache control middleware from middleware.cache_middleware import cache_control -if not args.disable_manager: +if args.enable_manager: import comfyui_manager async def send_socket_catch_exception(function, message): @@ -171,7 +171,7 @@ def __init__(self, loop): else: middlewares.append(create_origin_only_middleware()) - if not args.disable_manager: + if args.enable_manager: middlewares.append(comfyui_manager.create_middleware()) max_upload_size = round(args.max_upload_size * 1024 * 1024) From 036aa3efa899e88f0dfc4763a2649d249698b269 Mon Sep 17 00:00:00 2001 From: "Dr.Lt.Data" Date: Fri, 19 Sep 2025 07:38:10 +0900 Subject: [PATCH 22/29] fixed: Even if --enable-manager is applied, it should switch to a disabled state if comfyui_manager is not installed. --- main.py | 1 + 1 file changed, 1 insertion(+) diff --git a/main.py b/main.py index df83f0800e7d..a06da4c6f6e5 100644 --- a/main.py +++ b/main.py @@ -26,6 +26,7 @@ def handle_comfyui_manager_unavailable(): logging.warning(f"\n\nYou appear to be running comfyui-manager from source, this is not recommended. Please install comfyui-manager using the following command:\ncommand:\n\t{sys.executable} -m pip install --pre comfyui_manager\n") + args.enable_manager = False if args.enable_manager: From 267c54eaae6f9b57aada7808ae8fcec72c88a12d Mon Sep 17 00:00:00 2001 From: "Dr.Lt.Data" Date: Fri, 19 Sep 2025 12:00:17 +0900 Subject: [PATCH 23/29] Updated `comfyui_manager` to version 4.0.2 in `requirements.txt` --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index d25fcebe2c4d..010bc0528b85 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,7 +1,7 @@ comfyui-frontend-package==1.26.11 comfyui-workflow-templates==0.1.81 comfyui-embedded-docs==0.2.6 -comfyui_manager==4.0.1 +comfyui_manager==4.0.2 torch torchsde torchvision From f46771bd9754b5fd78b47618af8163f31dc5baf3 Mon Sep 17 00:00:00 2001 From: "Dr.Lt.Data" Date: Tue, 21 Oct 2025 12:35:02 +0900 Subject: [PATCH 24/29] update requirements.txt --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index a574b28dde17..5ce7ace9ebf2 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,7 +1,7 @@ comfyui-frontend-package==1.28.7 comfyui-workflow-templates==0.2.1 comfyui-embedded-docs==0.3.0 -comfyui_manager==4.0.2 +comfyui_manager==4.0.3b1 torch torchsde torchvision From 79fb96488aa3842b9799a96e570535c6aed8e963 Mon Sep 17 00:00:00 2001 From: Jedrzej Kosinski Date: Tue, 25 Nov 2025 20:43:23 -0800 Subject: [PATCH 25/29] Move manager requirement into its own file --- manager_requirements.txt | 1 + requirements.txt | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 manager_requirements.txt diff --git a/manager_requirements.txt b/manager_requirements.txt new file mode 100644 index 000000000000..d3ef1a151395 --- /dev/null +++ b/manager_requirements.txt @@ -0,0 +1 @@ +comfyui_manager==4.0.3b1 diff --git a/requirements.txt b/requirements.txt index 650cfbbbcb29..5f20816d6dcd 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,7 +1,6 @@ comfyui-frontend-package==1.30.6 comfyui-workflow-templates==0.7.20 comfyui-embedded-docs==0.3.1 -comfyui_manager==4.0.3b1 torch torchsde torchvision From d69c8b3ac253c07c77a892e358001363378accef Mon Sep 17 00:00:00 2001 From: "Dr.Lt.Data" Date: Wed, 26 Nov 2025 22:16:40 +0900 Subject: [PATCH 26/29] updated: manager_requirements.txt --- manager_requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manager_requirements.txt b/manager_requirements.txt index d3ef1a151395..2cbaf0789a02 100644 --- a/manager_requirements.txt +++ b/manager_requirements.txt @@ -1 +1 @@ -comfyui_manager==4.0.3b1 +comfyui_manager==4.0.3b2 From 4061eaa469a3bb9cafa50f687470c46ad790e223 Mon Sep 17 00:00:00 2001 From: "Dr.Lt.Data" Date: Wed, 26 Nov 2025 22:39:19 +0900 Subject: [PATCH 27/29] updated: manager_requirements.txt --- manager_requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manager_requirements.txt b/manager_requirements.txt index 2cbaf0789a02..52cc5389cc3f 100644 --- a/manager_requirements.txt +++ b/manager_requirements.txt @@ -1 +1 @@ -comfyui_manager==4.0.3b2 +comfyui_manager==4.0.3b3 From 7cf52dd51efe7e93d6b48ac5f97f01d675b17ef9 Mon Sep 17 00:00:00 2001 From: Jedrzej Kosinski Date: Wed, 26 Nov 2025 16:32:23 -0800 Subject: [PATCH 28/29] Make manager warning for --enable-manager not appear if is windows_standalone_build --- main.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/main.py b/main.py index 240c1255f32a..0cd815d9e620 100644 --- a/main.py +++ b/main.py @@ -25,7 +25,8 @@ def handle_comfyui_manager_unavailable(): - logging.warning(f"\n\nYou appear to be running comfyui-manager from source, this is not recommended. Please install comfyui-manager using the following command:\ncommand:\n\t{sys.executable} -m pip install --pre comfyui_manager\n") + if not args.windows_standalone_build: + logging.warning(f"\n\nYou appear to be running comfyui-manager from source, this is not recommended. Please install comfyui-manager using the following command:\ncommand:\n\t{sys.executable} -m pip install --pre comfyui_manager\n") args.enable_manager = False From f19a2b53f41fd99956031c9775df95aada38ede7 Mon Sep 17 00:00:00 2001 From: Jedrzej Kosinski Date: Wed, 26 Nov 2025 16:42:29 -0800 Subject: [PATCH 29/29] Create install_manager scripts, make update.py attempt to update comfyui_manager package if already installed, add --enable-manager startup arg to all run scripts --- .ci/manager_windows/install_manager.bat | 4 ++++ .ci/manager_windows/install_manager.py | 24 +++++++++++++++++++ .ci/update_windows/update.py | 21 ++++++++++++++++ .ci/windows_amd_base_files/run_amd_gpu.bat | 2 +- .../run_amd_gpu_disable_smart_memory.bat | 2 +- .../run_nvidia_gpu_fast.bat | 2 +- .../run_nvidia_gpu_disable_api_nodes.bat | 2 +- .ci/windows_nvidia_base_files/run_cpu.bat | 2 +- .../run_nvidia_gpu.bat | 2 +- .../run_nvidia_gpu_fast_fp16_accumulation.bat | 2 +- 10 files changed, 56 insertions(+), 7 deletions(-) create mode 100644 .ci/manager_windows/install_manager.bat create mode 100644 .ci/manager_windows/install_manager.py diff --git a/.ci/manager_windows/install_manager.bat b/.ci/manager_windows/install_manager.bat new file mode 100644 index 000000000000..56dfa1c4598f --- /dev/null +++ b/.ci/manager_windows/install_manager.bat @@ -0,0 +1,4 @@ +@echo off +..\python_embeded\python.exe .\install_manager.py ..\ComfyUI\ +echo Installed manager through pip package, if not already installed. +pause \ No newline at end of file diff --git a/.ci/manager_windows/install_manager.py b/.ci/manager_windows/install_manager.py new file mode 100644 index 000000000000..db991d984e42 --- /dev/null +++ b/.ci/manager_windows/install_manager.py @@ -0,0 +1,24 @@ +import sys +import os + +repo_path = str(sys.argv[1]) +repo_manager_req_path = os.path.join(repo_path, "manager_requirements.txt") + +if os.path.exists(repo_manager_req_path): + import subprocess + # if not installed, we get 'WARNING: Package(s) not found: comfyui_manager' + # if installed, there will be a line like 'Version: 0.1.0' = False + try: + output = subprocess.check_output([sys.executable, '-s', '-m', 'pip', 'show', 'comfyui_manager']) + if 'Version:' in output.decode('utf-8'): + print("comfyui_manager is already installed, will attempt to update to matching version of ComfyUI.") # noqa: T201 + else: + print("comfyui_manager is not installed, will install it now.") # noqa: T201 + except: + pass + + try: + subprocess.check_call([sys.executable, '-s', '-m', 'pip', 'install', '-r', repo_manager_req_path]) + print("comfyui_manager installed successfully.") # noqa: T201 + except: + print("Failed to install comfyui_manager, please install it manually.") # noqa: T201 diff --git a/.ci/update_windows/update.py b/.ci/update_windows/update.py index 51a263203d82..4a202786d9af 100755 --- a/.ci/update_windows/update.py +++ b/.ci/update_windows/update.py @@ -114,6 +114,8 @@ def latest_tag(repo): req_path = os.path.join(cur_path, "current_requirements.txt") repo_req_path = os.path.join(repo_path, "requirements.txt") +manager_req_path = os.path.join(cur_path, "current_manager_requirements.txt") +repo_manager_req_path = os.path.join(repo_path, "manager_requirements.txt") def files_equal(file1, file2): try: @@ -140,6 +142,25 @@ def file_size(f): except: pass +if os.path.exists(repo_manager_req_path) and (not os.path.exists(manager_req_path) or not files_equal(repo_manager_req_path, manager_req_path)): + import subprocess + # first, confirm that comfyui_manager package is installed; only update it if it is + # if not installed, we get 'WARNING: Package(s) not found: comfyui_manager' + # if installed, there will be a line like 'Version: 0.1.0' + update_manager = False + try: + output = subprocess.check_output([sys.executable, '-s', '-m', 'pip', 'show', 'comfyui_manager']) + if 'Version:' in output.decode('utf-8'): + update_manager = True + except: + pass + + if update_manager: + try: + subprocess.check_call([sys.executable, '-s', '-m', 'pip', 'install', '-r', repo_manager_req_path]) + shutil.copy(repo_manager_req_path, manager_req_path) + except: + pass stable_update_script = os.path.join(repo_path, ".ci/update_windows/update_comfyui_stable.bat") stable_update_script_to = os.path.join(cur_path, "update_comfyui_stable.bat") diff --git a/.ci/windows_amd_base_files/run_amd_gpu.bat b/.ci/windows_amd_base_files/run_amd_gpu.bat index 274d7c9486e0..a911d7a57185 100755 --- a/.ci/windows_amd_base_files/run_amd_gpu.bat +++ b/.ci/windows_amd_base_files/run_amd_gpu.bat @@ -1,2 +1,2 @@ -.\python_embeded\python.exe -s ComfyUI\main.py --windows-standalone-build +.\python_embeded\python.exe -s ComfyUI\main.py --windows-standalone-build --enable-manager pause diff --git a/.ci/windows_amd_base_files/run_amd_gpu_disable_smart_memory.bat b/.ci/windows_amd_base_files/run_amd_gpu_disable_smart_memory.bat index cece0aeb20b5..1c382477f435 100755 --- a/.ci/windows_amd_base_files/run_amd_gpu_disable_smart_memory.bat +++ b/.ci/windows_amd_base_files/run_amd_gpu_disable_smart_memory.bat @@ -1,2 +1,2 @@ -.\python_embeded\python.exe -s ComfyUI\main.py --windows-standalone-build --disable-smart-memory +.\python_embeded\python.exe -s ComfyUI\main.py --windows-standalone-build --enable-manager --disable-smart-memory pause diff --git a/.ci/windows_nightly_base_files/run_nvidia_gpu_fast.bat b/.ci/windows_nightly_base_files/run_nvidia_gpu_fast.bat index ca6d6868af4e..67aaee88f340 100644 --- a/.ci/windows_nightly_base_files/run_nvidia_gpu_fast.bat +++ b/.ci/windows_nightly_base_files/run_nvidia_gpu_fast.bat @@ -1,2 +1,2 @@ -.\python_embeded\python.exe -s ComfyUI\main.py --windows-standalone-build --fast +.\python_embeded\python.exe -s ComfyUI\main.py --windows-standalone-build --enable-manager --fast pause diff --git a/.ci/windows_nvidia_base_files/advanced/run_nvidia_gpu_disable_api_nodes.bat b/.ci/windows_nvidia_base_files/advanced/run_nvidia_gpu_disable_api_nodes.bat index ed00583b62f2..f6dcd3eb6614 100644 --- a/.ci/windows_nvidia_base_files/advanced/run_nvidia_gpu_disable_api_nodes.bat +++ b/.ci/windows_nvidia_base_files/advanced/run_nvidia_gpu_disable_api_nodes.bat @@ -1,3 +1,3 @@ -..\python_embeded\python.exe -s ..\ComfyUI\main.py --windows-standalone-build --disable-api-nodes +..\python_embeded\python.exe -s ..\ComfyUI\main.py --windows-standalone-build --enable-manager --disable-api-nodes echo If you see this and ComfyUI did not start try updating your Nvidia Drivers to the latest. pause diff --git a/.ci/windows_nvidia_base_files/run_cpu.bat b/.ci/windows_nvidia_base_files/run_cpu.bat index c3ba4172161a..366317779fc3 100755 --- a/.ci/windows_nvidia_base_files/run_cpu.bat +++ b/.ci/windows_nvidia_base_files/run_cpu.bat @@ -1,2 +1,2 @@ -.\python_embeded\python.exe -s ComfyUI\main.py --cpu --windows-standalone-build +.\python_embeded\python.exe -s ComfyUI\main.py --cpu --windows-standalone-build --enable-manager pause diff --git a/.ci/windows_nvidia_base_files/run_nvidia_gpu.bat b/.ci/windows_nvidia_base_files/run_nvidia_gpu.bat index 4898a424f4fc..02f86eea05a8 100755 --- a/.ci/windows_nvidia_base_files/run_nvidia_gpu.bat +++ b/.ci/windows_nvidia_base_files/run_nvidia_gpu.bat @@ -1,3 +1,3 @@ -.\python_embeded\python.exe -s ComfyUI\main.py --windows-standalone-build +.\python_embeded\python.exe -s ComfyUI\main.py --windows-standalone-build --enable-manager echo If you see this and ComfyUI did not start try updating your Nvidia Drivers to the latest. pause diff --git a/.ci/windows_nvidia_base_files/run_nvidia_gpu_fast_fp16_accumulation.bat b/.ci/windows_nvidia_base_files/run_nvidia_gpu_fast_fp16_accumulation.bat index 32611e4affd8..69692e82f93a 100644 --- a/.ci/windows_nvidia_base_files/run_nvidia_gpu_fast_fp16_accumulation.bat +++ b/.ci/windows_nvidia_base_files/run_nvidia_gpu_fast_fp16_accumulation.bat @@ -1,3 +1,3 @@ -.\python_embeded\python.exe -s ComfyUI\main.py --windows-standalone-build --fast fp16_accumulation +.\python_embeded\python.exe -s ComfyUI\main.py --windows-standalone-build --enable-manager --fast fp16_accumulation echo If you see this and ComfyUI did not start try updating your Nvidia Drivers to the latest. pause