Repository Analysis

Comfy-Org/ComfyUI-Manager

ComfyUI-Manager is an extension designed to enhance the usability of ComfyUI. It offers management functions to install, remove, disable, and enable various custom nodes of ComfyUI. Furthermore, this extension provides a hub feature and convenience functions to access a wide range of information within ComfyUI.

3.5 Likely human-written View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of Comfy-Org/ComfyUI-Manager, a Python project with 15,383 GitHub stars. SynthScan v2.0 examined 107,514 lines of code across 94 source files, recording 353 pattern matches distributed across 15 syntactic categories. The overall adjusted score of 3.5 places this repository in the Likely human-written band.

The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).

3.5
Adjusted Score
3.5
Raw Score
100%
Time Factor
2026-07-14
Last Push
15.4K
Stars
Python
Language
107.5K
Lines of Code
94
Files
353
Pattern Hits
2026-07-14
Scan Date
0.02
HC Hit Rate

What These Metrics Mean

Adjusted Score
Primary synthetic code indicator. Raw score normalised per 1,000 lines of code and multiplied by the temporal discount factor. This is the definitive comparative metric — use it to rank repositories by AI authorship density.
Raw Score
The unmodified sum of all severity-weighted, context-multiplied pattern match scores before temporal discounting. Reflects the absolute signal strength independent of when the repository was last active.
Time Factor
The temporal discount multiplier (0–100%) applied to the raw score. Repositories last updated before ChatGPT's launch (Nov 2022) receive a 5% factor. Full signal is only assigned to repositories active in the post-adoption era (Jan 2024+).
Pattern Hits
Total count of individual pattern matches across all files and categories. A high hit count with a low score may indicate a very large codebase with isolated AI snippets; a low count with a high score indicates dense, concentrated AI signatures.
HC Hit Rate
High+Critical pattern hits per file, averaged across the repository. This orthogonal signal catches repositories where a few files are densely packed with high-severity AI tells — a strong indicator even when the normalised score appears moderate due to codebase size.
Lines of Code / Files
Total lines and files analysed. The scanner examines 94 file extensions. These denominators are used to normalise the score, enabling fair comparison between repositories of vastly different sizes.

Score History

This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.

Severity Breakdown

Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.

CRITICAL 0HIGH 2MEDIUM 45LOW 306

Directory Score Breakdown

This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.

Pattern Findings

The scanner identified 353 distinct pattern matches across 15 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.

Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.

Excessive Try-Catch Wrapping113 hits · 123 pts
SeverityFileLineSnippetContext
LOWjson-checker.py176 except Exception as e:CODE
LOWscanner.py459 except Exception:STRING
LOWscanner.py1252 except Exception as e:STRING
LOWscanner.py1259 except Exception as e:STRING
LOWscanner.py1360 except Exception as e:STRING
LOWscanner.py1555 except Exception as e:STRING
LOWscanner.py1572 except Exception as e:STRING
MEDIUMcm-cli.py179 print("Error: folder_paths module is not available")CODE
LOWcm-cli.py343 except Exception as e:CODE
LOWcm-cli.py609 except Exception as e:CODE
LOWcm-cli.py1134 except Exception:CODE
MEDIUMcm-cli.py64def check_comfyui_hash():CODE
MEDIUMprestartup_script.py292def fileno(self):CODE
MEDIUMprestartup_script.py457def ensure_dependencies():CODE
MEDIUMprestartup_script.py849def check_windows_event_loop_policy():CODE
LOWprestartup_script.py114 except Exception:CODE
LOWprestartup_script.py352 except Exception:CODE
LOWprestartup_script.py369 except Exception:CODE
LOWprestartup_script.py453except Exception as e:CODE
LOWprestartup_script.py522 except Exception:CODE
LOWprestartup_script.py624 except Exception as e:CODE
LOWprestartup_script.py749 except Exception as e:CODE
LOWprestartup_script.py795 except Exception as e:CODE
LOWprestartup_script.py862 except Exception as e:CODE
LOWprestartup_script.py864 except Exception:CODE
LOWgit_helper.py123 except Exception as e:CODE
LOWgit_helper.py239 except Exception as e:CODE
MEDIUMgit_helper.py255 print(f"Error checking out the ComfyUI: {str(e)}")CODE
LOWgit_helper.py324 except Exception:CODE
LOWgit_helper.py428 except Exception as e:CODE
LOWgit_helper.py527except Exception as e:CODE
MEDIUMgit_helper.py85def gitcheck(path, do_fetch=False):CODE
MEDIUMgit_helper.py390def apply_snapshot(path):CODE
LOWscripts/colab-dependencies.py17 except Exception as e:CODE
MEDIUMglob/manager_core.py2409 print(f"An error occurred during the execution of the uninstall.py script. Only the '{dir_path}'CODE
MEDIUMglob/manager_core.py2414 print(f"An error occurred during the execution of the disable.py script. Only the '{dir_path}' wCODE
MEDIUMglob/manager_core.py74def get_custom_nodes_paths():CODE
MEDIUMglob/manager_core.py1719def read_config():CODE
MEDIUMglob/manager_core.py1865def try_rmtree(title, fullpath):CODE
MEDIUMglob/manager_core.py2154def is_valid_url(url):CODE
MEDIUMglob/manager_core.py2534def update_to_stable_comfyui(repo_path):CODE
MEDIUMglob/manager_core.py2692def get_installed_pip_packages():CODE
LOWglob/manager_core.py2420 except Exception as e:CODE
LOWglob/manager_core.py2688 except Exception:CODE
LOWglob/manager_core.py2697 except Exception as e:CODE
LOWglob/manager_core.py3416 except Exception:CODE
LOWglob/manager_core.py3421 except Exception:CODE
LOWglob/manager_core.py3430 except Exception:CODE
LOWglob/manager_core.py245except Exception:CODE
LOWglob/manager_core.py676 except Exception:CODE
LOWglob/manager_core.py1380 except Exception as e:CODE
LOWglob/manager_core.py1415 except Exception as e:CODE
LOWglob/manager_core.py1422 except Exception:CODE
LOWglob/manager_core.py1756 except Exception:CODE
LOWglob/manager_core.py1868 except Exception as e:CODE
LOWglob/manager_core.py1936 except Exception:CODE
LOWglob/manager_core.py2109 except Exception as e:CODE
LOWglob/manager_core.py2240 except Exception as e:CODE
LOWglob/manager_core.py2322 except Exception as e:CODE
LOWglob/manager_core.py2349 except Exception as e:CODE
53 more matches not shown…
Deep Nesting97 hits · 72 pts
SeverityFileLineSnippetContext
LOWjson-checker.py64CODE
LOWjson-checker.py154CODE
LOWscanner.py44CODE
LOWscanner.py126CODE
LOWscanner.py278CODE
LOWscanner.py332CODE
LOWscanner.py469CODE
LOWscanner.py518CODE
LOWscanner.py552CODE
LOWscanner.py668CODE
LOWscanner.py705CODE
LOWscanner.py736CODE
LOWscanner.py819CODE
LOWscanner.py929CODE
LOWscanner.py942CODE
LOWscanner.py972CODE
LOWscanner.py989CODE
LOWscanner.py1026CODE
LOWscanner.py1206CODE
LOWscanner.py1223CODE
LOWscanner.py1264CODE
LOWscanner.py1445CODE
LOWscanner.py1311CODE
LOWcm-cli.py187CODE
LOWcm-cli.py418CODE
LOWcm-cli.py1191CODE
LOWcm-cli.py1246CODE
LOWcm-cli.py138CODE
LOWprestartup_script.py535CODE
LOWprestartup_script.py631CODE
LOWprestartup_script.py717CODE
LOWprestartup_script.py724CODE
LOWprestartup_script.py305CODE
LOWprestartup_script.py411CODE
LOWprestartup_script.py590CODE
LOWgit_helper.py23CODE
LOWgit_helper.py147CODE
LOWgit_helper.py258CODE
LOWgit_helper.py343CODE
LOWgit_helper.py390CODE
LOWgit_helper.py436CODE
LOWtests/test_install_flags_gates.py81CODE
LOWtests/test_csrf_content_type_helper.py31CODE
LOWtests/test_install_flag_predicate.py108CODE
LOWtests/e2e/test_e2e_install_flags.py620CODE
LOWscripts/colab-dependencies.py5CODE
LOWglob/manager_core.py274CODE
LOWglob/manager_core.py300CODE
LOWglob/manager_core.py351CODE
LOWglob/manager_core.py1592CODE
LOWglob/manager_core.py1630CODE
LOWglob/manager_core.py1818CODE
LOWglob/manager_core.py1873CODE
LOWglob/manager_core.py1977CODE
LOWglob/manager_core.py2020CODE
LOWglob/manager_core.py2175CODE
LOWglob/manager_core.py2285CODE
LOWglob/manager_core.py2385CODE
LOWglob/manager_core.py2428CODE
LOWglob/manager_core.py2492CODE
37 more matches not shown…
Hyper-Verbose Identifiers80 hits · 72 pts
SeverityFileLineSnippetContext
LOWscanner.py518def _extract_display_name_mappings(code_text: str) -> Set[str]:STRING
LOWscanner.py668def _fallback_classname_resolver(code_text: str, file_path: Optional[Path]) -> Set[str]:STRING
LOWscanner.py705def _fallback_item_assignment(code_text: str) -> Set[str]:STRING
LOWscanner.py736def _fallback_dict_comprehension(code_text: str, file_path: Optional[Path] = None) -> Set[str]:STRING
LOWscanner.py819def _fallback_import_class_names(code_text: str, file_path: Optional[Path] = None) -> Set[str]:STRING
LOWscanner.py904def _fallback_empty_dict_detector(code_text: str, file_path: Optional[Path], verbose: bool = False) -> None:STRING
LOWscanner.py972def extract_node_id_from_schema(class_node):STRING
LOWscanner.py1238def clone_or_pull_git_repository(git_url):STRING
LOWcm-cli.py169 def get_restore_snapshot_path():CODE
LOWcm-cli.py561def get_all_installed_node_specs():CODE
LOWprestartup_script.py56def register_message_collapse(f):CODE
LOWprestartup_script.py61def is_import_failed_extension(name):CODE
LOWprestartup_script.py215def extract_origin_module_from_strings(file_paths):CODE
LOWprestartup_script.py631def execute_lazy_install_script(repo_path, executable):CODE
LOWprestartup_script.py849def check_windows_event_loop_policy():CODE
LOWgit_helper.py258def checkout_custom_node_hash(git_custom_node_infos):CODE
LOWgit_helper.py343def invalidate_custom_node_file(file_custom_node_infos):CODE
LOWjs/comfyui-gui-builder.js134export function buildGuiFrameCustomHeader(dialogId, customHeader, content, owner) {CODE
LOWjs/comfyui-manager.js481function showVersionSelectorDialog(versions, current, onSelect) {CODE
LOWjs/comfyui-share-common.js41export function getPotentialOutputsAndOutputNodes(nodes) {CODE
LOWjs/comfyui-share-common.js348 function createShareButtonsWithDescriptions() {CODE
LOWtests/test_install_flags_gates.py311 def test_load_bearing_public_canary(self):CODE
LOWtests/test_install_flags_gates.py326 def test_unknown_pip_block_unconditional(self):CODE
LOWtests/test_install_flags_gates.py339 def test_entry_gate_strong_denies_despite_flags(self):CODE
LOWtests/test_install_flags_gates.py349 def test_cnr_latest_arm_never_consults_flags(self):CODE
LOWtests/test_install_flags_gates.py387 def test_flag_constants_content(self):CODE
LOWtests/test_install_flags_gates.py431 def test_handlers_bind_predicate(self):CODE
LOWtests/test_install_flags_gates.py449 def test_replace_no_high_literal_at_sa_sb(self):CODE
LOWtests/test_csrf_content_type_helper.py84 def test_form_urlencoded_rejected(self):CODE
LOWtests/test_csrf_content_type_helper.py88 def test_multipart_form_data_rejected(self):CODE
LOWtests/test_csrf_content_type_helper.py98 def test_no_content_type_allowed(self):CODE
LOWtests/test_csrf_content_type_helper.py115 def test_application_json_allowed(self):CODE
LOWtests/test_install_flags_structural.py59 def test_surface_messages_name_their_flag(self):CODE
LOWtests/test_install_flags_structural.py75 def test_generic_fallback_and_frozen_callers_unchanged(self):CODE
LOWtests/test_install_flags_structural.py99 def test_no_new_install_route_surface(self):CODE
LOWtests/test_install_flags_structural.py124 def test_no_autoseed_in_migration(self):CODE
LOWtests/test_install_flag_predicate.py68 def test_invalid_address_reads_false(self):CODE
LOWtests/test_install_flag_predicate.py94 def test_falsy_flag_values_deny(self):CODE
LOWtests/test_install_flag_predicate.py100 def test_signature_has_no_security_level(self):CODE
LOWtests/test_install_flag_predicate.py108 def test_body_free_of_config_machinery(self):CODE
LOWtests/test_install_flag_predicate.py133 def test_cross_flag_isolation_by_construction(self):CODE
LOWtests/test_install_flag_predicate.py145 def test_purity_deterministic(self):CODE
LOWscripts/colab-dependencies.py5def get_enabled_subdirectories_with_files(base_directory):CODE
LOWglob/manager_core.py767 def add_to_cnr_inactive_nodes(self, node_id, ver, fullpath):CODE
LOWglob/manager_core.py775 def get_from_cnr_active_nodes(self, node_id):CODE
LOWglob/manager_core.py782 def get_from_cnr_inactive_nodes(self, node_id, ver=None):CODE
LOWglob/manager_core.py2692def get_installed_pip_packages():CODE
LOWglob/manager_core.py62def get_default_custom_nodes_path():CODE
LOWglob/manager_core.py127def extract_base_custom_nodes_dir(x:str):CODE
LOWglob/manager_core.py501 def resolve_unspecified_version(self, node_name, guess_mode=None):CODE
LOWglob/manager_core.py1023 def cnr_switch_version_instant(self, node_id, version_spec=None, instant_execution=True, no_deps=False, return_postiCODE
LOWglob/manager_core.py1560def identify_node_pack_from_path(fullpath):CODE
LOWglob/manager_core.py1666 def get_current_preview_method(self):CODE
LOWglob/manager_core.py2020def git_repo_update_check_with(path, do_fetch=False, do_update=False, no_deps=False):CODE
LOWglob/manager_core.py2168def extract_url_and_commit_id(s):CODE
LOWglob/manager_core.py2647def lookup_installed_custom_nodes_legacy(repo_name):CODE
LOWglob/manager_core.py2671def check_state_of_git_node_pack_single(item, do_fetch=False, do_update_check=True, do_update=False):CODE
LOWglob/manager_core.py2789async def save_snapshot_with_postfix(postfix, path=None, custom_nodes_only = False):CODE
LOWglob/manager_core.py2816async def extract_nodes_from_workflow(filepath, mode='local', channel_url='default'):CODE
LOWglob/manager_server.py88def is_dedicated_install_allowed(flag_value: bool, listen_address: str) -> bool:CODE
20 more matches not shown…
Decorative Section Separators14 hits · 42 pts
SeverityFileLineSnippetContext
MEDIUMtests/e2e/test_e2e_install_flags.py67# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/e2e/test_e2e_install_flags.py69# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/e2e/test_e2e_install_flags.py83# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/e2e/test_e2e_install_flags.py85# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/e2e/test_e2e_install_flags.py136# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/e2e/test_e2e_install_flags.py139# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/e2e/test_e2e_install_flags.py156# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/e2e/test_e2e_install_flags.py158# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/e2e/test_e2e_install_flags.py279# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/e2e/test_e2e_install_flags.py281# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/e2e/test_e2e_install_flags.py360# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/e2e/test_e2e_install_flags.py362# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/e2e/test_e2e_install_flags.py495# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/e2e/test_e2e_install_flags.py497# ---------------------------------------------------------------------------COMMENT
AI Slop Vocabulary8 hits · 17 pts
SeverityFileLineSnippetContext
MEDIUMalter-list.json154 "id":"https://github.com/spinagon/ComfyUI-seamless-tiling",CODE
MEDIUMgithub-stats.json1017 "https://github.com/Aksaz/comfyui-seamless-clone": {CODE
MEDIUMgithub-stats.json9352 "https://github.com/WASasquatch/face-upscaling-and-seamless-embedding": {CODE
MEDIUMgithub-stats.json23112 "https://github.com/spinagon/ComfyUI-seamless-tiling": {CODE
MEDIUMglob/manager_core.py3208 # robust filter out comfyui-manager while restoring snapshotCOMMENT
MEDIUMglob/node_package.py67 node_id = info['id'] # robust module guessingCODE
MEDIUMnode_db/legacy/custom-node-list.json2675 "description": "Welcome to the Image Upscaler & Restorer project! This tool utilizes the [a/GFPGAN](https://CODE
MEDIUMnode_db/dev/custom-node-list.json2493 "description": "The ComfyUI-fal-Connector is a tool designed to provide an integration between ComfyUI and fCODE
Redundant / Tautological Comments13 hits · 13 pts
SeverityFileLineSnippetContext
LOWjson-checker.py118 # Check if it's a GitHub URL (likely a git repo)COMMENT
LOWscanner.py378 # Read file with proper encodingSTRING
LOWscanner.py589 # Check if we have cached result with matching mtime and scanner versionSTRING
LOWscanner.py797 # Check if key is cls.__name__ patternSTRING
LOWscanner.py849 # Check if these names appear in list assignments that feed into NODE_CLASS_MAPPINGSSTRING
LOWscanner.py981 # Check if it's Schema() callSTRING
LOWscanner.py1013 # Check if inherits from ComfyNodeSTRING
LOWprestartup_script.py807# Check if script_list_path existsCOMMENT
LOWgit_helper.py185 # Check if the path is a git repositoryCOMMENT
LOWglob/manager_core.py2037 # Check if the path is a git repositoryCOMMENT
LOWglob/manager_core.py2247 # Check if the path is a git repositoryCOMMENT
LOWglob/manager_core.py2939 # Check if there's only one directory inside the target directoryCOMMENT
LOWglob/share_3rdparty.py169 # Check if the user has provided Matrix credentials in a file called 'matrix_accesstoken'COMMENT
Over-Commented Block9 hits · 9 pts
SeverityFileLineSnippetContext
LOWscanner.py621 # This catches the specific Scanner 2.0.10 bug pattern:COMMENT
LOWjs/popover-helper.js301COMMENT
LOWtests/e2e/scripts/stop_comfyui.sh1#!/usr/bin/env bashCOMMENT
LOWtests/e2e/scripts/start_comfyui.sh1#!/usr/bin/env bashCOMMENT
LOWtests/e2e/scripts/start_comfyui.sh21# non-zero exit -> fail fast with log tail.COMMENT
LOWtests/e2e/scripts/setup_e2e_env.sh1#!/usr/bin/env bashCOMMENT
LOWtests/e2e/scripts/stage_flags.sh1#!/usr/bin/env bashCOMMENT
LOWglob/cm_global.py1import tracebackCOMMENT
LOWglob/cm_global.py21# def api_hello(msg):COMMENT
Unused Imports8 hits · 6 pts
SeverityFileLineSnippetContext
LOW__init__.py12CODE
LOW__init__.py13CODE
LOWprestartup_script.py459CODE
LOWprestartup_script.py460CODE
LOWprestartup_script.py461CODE
LOWprestartup_script.py462CODE
LOWtests/e2e/test_e2e_install_flags.py53CODE
LOWglob/node_package.py1CODE
Docstring Block Structure1 hit · 5 pts
SeverityFileLineSnippetContext
HIGHscanner.py1160 Read URLs from list file for scan-only mode Args: list_file (str): Path to URL list file (one URL per STRING
Synthetic Comment Markers1 hit · 5 pts
SeverityFileLineSnippetContext
HIGHnode_db/dev/custom-node-list.json7350 "description": "A suite of custom ComfyUI nodes built to evaluate and diagnose the technical qualities of imCODE
Structural Annotation Overuse3 hits · 4 pts
SeverityFileLineSnippetContext
LOWdocs/en/v3.38-userdata-security-migration.md50### Step 1: Configuration MigrationCOMMENT
LOWdocs/en/v3.38-userdata-security-migration.md56### Step 2: Security Level CheckCOMMENT
LOWdocs/en/v3.38-userdata-security-migration.md70### Step 3: Legacy BackupCOMMENT
Example Usage Blocks3 hits · 4 pts
SeverityFileLineSnippetContext
LOWglob/cm_global.py6# Usage:COMMENT
LOWglob/cm_global.py17# Usage:COMMENT
LOWglob/cm_global.py62# Usage:COMMENT
Slop Phrases1 hit · 2 pts
SeverityFileLineSnippetContext
MEDIUMnode_db/tutorial/custom-node-list.json61 "description": "Welcome to ecjojo_example_nodes! This example is specifically designed for beginners who wanCODE
Modern Structural Boilerplate1 hit · 1 pts
SeverityFileLineSnippetContext
LOW__init__.py22__all__ = ['NODE_CLASS_MAPPINGS']CODE
AI Structural Patterns1 hit · 0 pts
SeverityFileLineSnippetContext
LOWglob/manager_core.py1085CODE