Enable ComfyUI-Manager by default in the Windows portable build - #16258
Draft
alexisrolland wants to merge 3 commits into
Draft
Enable ComfyUI-Manager by default in the Windows portable build#16258alexisrolland wants to merge 3 commits into
alexisrolland wants to merge 3 commits into
Conversation
added 3 commits
September 11, 2026 05:25
The portable launchers did not pass --enable-manager and the portable bundle never installed manager_requirements.txt, so users had to pip install the package and edit a .bat file by hand. Adding the flag alone is not enough and is actively worse: the frontend gates the manager UI on the raw sys.argv, while core advertises extension.manager.supports_v4 unconditionally and only the manager package publishes supports_csrf_post. With the flag but no package the frontend resolves to INCOMPATIBLE and tells the user to upgrade a manager they never installed. Install the pinned package into the embedded python at package time, keep it in sync from both update paths, pass the flag from the standard launchers, and cover it in the release smoke test.
…lows The nightly and windows_release_package builds copy the nvidia base files, so they picked up --enable-manager without ever installing the package - the exact half-configured state this change exists to prevent. Install it there too, add it to the nightly's generated dependency updater, and pass --enable-manager in both smoke tests so the gap cannot reopen. Also mirror the requirement into the manual dependency workflow, which must stay in lockstep with windows_release_dependencies, and give the advanced disable-api-nodes launcher the flag: --disable-api-nodes restricts Comfy's own API nodes and has nothing to do with the manager, so that variant would otherwise ship the package unusable.
--quick-test-for-ci --enable-manager exits 0 even when the package is missing: main.py logs a warning, clears args.enable_manager and carries on. Grep the startup log for the manager's [START] line so a build that silently lost the package fails instead of shipping a dead button.
mohammedijas80755-cell
approved these changes
Sep 11, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
PR Created by the Glary-Bot Agent
Proposal + implementation for the second half of a #dev-core-engine thread: Portable users must install a pip package and hand-edit a
.batfile before the custom node manager appears. Desktop already enables it (DEFAULT_LAUNCH_ARGS = '--enable-manager'), Portable does not.Companion PR (UI rename) in
Comfy-Org/ComfyUI_frontend.Adding the flag alone would have shipped a broken UI
Worth stating up front, because it is the non-obvious part and it drove the shape of this PR.
The portable bundle never installed
manager_requirements.txt—stable-release.ymlonly installedgrep comfy requirements.txt. So--enable-manageron its own is not merely a no-op:main.pyhitshandle_comfyui_manager_unavailable(), logs a warning, and setsargs.enable_manager = False.sys.argv, not the parsed args, so it still sees--enable-manager.extension.manager.supports_v4: trueunconditionally (it is hardcoded in_CORE_FEATURE_FLAGS), whilesupports_csrf_postis published only by the manager package at runtime.useManagerState.tstherefore resolvesserverSupportsV4 === true && supportsCsrfPost !== true→INCOMPATIBLE→ it hides the button and toasts "Please upgrade ComfyUI-Manager to version 4.2.1 or higher" — about a package the user never installed.Verified locally against a real backend:
So the package install and the flag have to land together. That is why this is one PR rather than a one-line
.batchange.Changes
Bundle the pinned package (
manager_requirements.txtstays the single source of the version) in all three workflows that build a portable:stable-release.yml(nvidia / amd / intel, viarelease-stable-all.yml)windows_release_package.ymlwindows_release_nightly_pytorch.ymlThe latter two copy the nvidia base files, so they picked up the flag from the launchers and would have shipped exactly the broken state described above.
Keep it in sync on update, so a bumped pin is not ignored:
.ci/update_windows/update.py— the existing single-file requirements sync becomes a loop overrequirements.txt+manager_requirements.txt. This is the pathupdate_comfyui.batuses.update_comfyui_and_python_dependencies.batinwindows_release_dependencies.yml,windows_release_dependencies_manual.ymland the nightly.Pass the flag from all 8
.ci/windows_*_base_files/**/*.batlaunchers that invokemain.py. CRLF preserved.Make CI able to catch a regression.
--quick-test-for-ci --enable-managerexits 0 even with the package missing, so the smoke tests now alsogrep -q "\[START\] ComfyUI-Manager"on the startup log. Verified both directions against real captured logs: passes when the manager loaded, fails when it was absent.comfy/cli_args.pyis untouched — the flag default staysFalse; only the shipped launchers opt in.Verification
ruff check .→ clean (repo-wide, as CI runs it); all five edited workflow YAMLs parse--quick-test-for-ci --cpu --enable-managerwith the package installed → exit 0,[START] ComfyUI-Manager, and the registry fetch degrades gracefully to a warning when offline (so the new CI assertion will not flake on registry downtime)update.py's new loop exercised against the real source block across five scenarios: fresh portable (installs both), no-op re-run, manager pin bumped (installs manager only), core requirements changed (installs core only), and downgrade to a ComfyUI withoutmanager_requirements.txt(skips cleanly)Decisions for the team — please weigh in before this leaves draft
1. Default network posture. This is the real question, and it is a product/security call, not a code one. ComfyUI-Manager contacts the custom-node registry at startup, not only when the dialog is opened (
network_mode: public, observed fetchingcustom-node-list.jsonduring startup tasks). Core's own guidance forbids adding outbound requests to ComfyUI; this does not add any to core, but it does change what a stock Portable does out of the box. If that is not acceptable, say so and I will close this.2. Download size.
comfyui_manager==4.2.2pulls GitPython, PyGithub, cryptography, PyNaCl, chardet, toml anduv. Measured uncompressed: ~78 MB (48 MB of that is theuvbinary, ~15 MB cryptography, 5 MB the manager itself).transformers/huggingface-hubare already core deps. That is material for an archive whose build step deletes torch.libfiles with the comment "I need the space". Someone should approve the budget, and the.7zdelta should be measured on a real build.3. Existing installs get the dependency but not the flag.
update.pywill install the manager package on the nextupdate_comfyui.bat, but it never rewritesrun_*.bat(those live outside the checkout). So existing users pay the download and still launch with the manager off until they download a fresh archive. I left it that way deliberately — rewriting user-editable launchers on update seems worse — but flagging it since it means "on by default" is true for new downloads only.4.
advanced/run_nvidia_gpu_disable_api_nodes.batgot the flag too.--disable-api-nodesrestricts Comfy's own API nodes and has nothing to do with the manager, so excluding it would ship the package unusable with no explanation. If that launcher is meant to be the reduced-network variant, tell me and I will drop the flag there.5. Cache key not bumped.
update_comfyui_and_python_dependencies.batis stored in an immutableactions/cacheentry keyed on${{ runner.os }}-build-cu<cu>-<python_minor>, so existing keys will keep serving the old script. This does not affect the shipped portable (the manager is installed at package time, uncached) — only that one helper script. I did not bump the keys unilaterally because it forces a full torch wheel rebuild for every cuda variant; that is release-engineering's call.6. Version skew ownership. The frontend hides the UI and nags when the Manager backend is older than 4.2.1, so the pin in
manager_requirements.txtnow needs a named owner who bumps it with Manager releases.