Will Miao 138024aefe fix(preview): revert to FileResponse as default for all platforms (#975)
The previous commit (a19ddc14) restored Linux sendfile but kept the
manual streaming path for Windows via sys.platform guard. A Windows
user reports performance is still worse than v1.0.5.

Switch back to web.FileResponse for all files on all platforms as the
default. The IOCP crash is an edge case (fast scrolling through many
video previews) that affects few users, while the Python chunked I/O
performance penalty affects everyone.

_stream_file() is kept as an unused fallback for a future compat
setting toggle.
2026-06-13 21:43:44 +08:00
2026-03-29 08:28:00 +08:00
2026-03-27 19:26:13 +08:00
2025-04-30 16:04:41 +08:00

ComfyUI LoRA Manager

Revolutionize your workflow with the ultimate LoRA companion for ComfyUI!

Discord Release Release Date

A comprehensive toolset that streamlines organizing, downloading, and applying LoRA models in ComfyUI. With powerful features like recipe management, checkpoint organization, and one-click workflow integration, working with models becomes faster, smoother, and significantly easier. Access the interface at: http://localhost:8188/loras

Interface Preview

📺 Tutorial: One-Click LoRA Integration

Watch this quick tutorial to learn how to use the new one-click LoRA integration feature:

One-Click LoRA Integration Tutorial

🌐 Browser Extension

Enhance your Civitai browsing experience with our companion browser extension! See which models you already have, download new ones with a single click, and manage your downloads efficiently.

LM Civitai Extension Preview

📚 Learn More: Complete Tutorial


🤝 Supporter Recognition

I'm incredibly grateful to everyone who has supported the development of this project. Seeing so many people value my work is the best motivation I could ask for. Your trust and support have played a vital role in shaping this tool into what it is today, and I want to personally recognize those who have helped make it possible.

🌟 Special Thanks

dispenser, EbonEagle, DanielMagPizza, Scott R

💖 Supporters (809)

Click to view all awesome supporters

Brennok, Insomnia Art Designs, 2018cfh, megakirbs, Arlecchino Shion, Rob Williams, W+K+White, wackop, Phil, Carl G., Charles Blakemore, stone9k, itismyelement, $MetaSamsara, Gingko Biloba, Kiba, onesecondinosaur, Christian Byrne, DM, Sen314, Estragon, Rosenthal, ClockDaemon, Francisco Tatis, Tobi_Swagg, Andrew Wilson, Greybush, Ricky Carter, JongWon Han, VantAI, runte3221, Illrigger, Tom Corrigan, FreelancerZ, Echo, Robert Stacey, Edgar Tejeda, Fraser Cross, Liam MacDougal, Polymorphic Indeterminate, Sterilized, JORGE+LUIZ+HUSSNI+MESSIAS, Marc Whiffen, Skalabananen, Birdy, Mozzel, Reno Lam, JSST, sig, J\B/ 8r0wns0n, Snaggwort, Takkan, Matt+J, Baekdoosixt, Jonathan Ross, KD, Omnidex, Nazono_hito, daniel dove, Tyler Trebuchon, Release Cabrakan, JW Sin, Alex, SG, carozzz, James Dooley, zenbound, Buzzard, jmack, Adam Shaw, Mark Corneglio, SarcasticHashtag, Anthony Rizzo, iamresist, RedrockVP, Wolffen, James Todd, Wicked Choices by ASLPro3D, Steven Pfeiffer, レプサイ, Timmy, Johnny, Tak, Lisster, Michael Wong, Big Red, whudunit, dl0901dm, JackieWang, fnkylove, Yushio, Vik71it, Bishoujoker, Lilleman, PM, Todd Keck, Briton Heilbrun, wildnut, Aleksander Wujczyk, AM Kuro, BadassArabianMofo, Pascal Dahle, quarz, Greg, lmsupporter, andrew.tappan, zounic, wfpearl, Jack B Nimble, Melville Parrish, Lustre, JaxMax, contrite831, bh, Marlon Daniels, Starkselle, Aaron Bleuer, LacesOut!, greebles, Some Guy Named Barry, M Postkasse, Gooohokrbe, OldBones, Jacob Hoehler, FinalyFree, Matt Wenzel, Weasyl, Lex Song, Cory Paza, Gonzalo Andre Allendes Lopez, Zach Gonser, Jimmy Ledbetter, Luc Job, Philip Hempel, corde, Nick Walker, dan, aai, Tori, otaku fra, jean jahren, MiraiKuriyamaSy, Ran C, ViperC, Penfore, Sangheili460, MagnaInsomnia, Karl P., Akira_HentAI, Gordon Cole, Adam Taylor, AbstractAss, Weird_With_A_Beard, N/A, The Spawn, graysock, Pozadine1, Qarob, AIGooner, Luc, Greenmoustache, Jackthemind, fancypants, Eldithor, Joboshy, Digital, takyamtom, Bohemian Corporal, Dan, Jwk0205, Bro Xie, yer fey, batblue, carey6409, Olive, 太郎 ゲーム, Roslynd, jinxedx, Cosmosis, AELOX, Dankin, Nicfit23, FloPro4Sho, Cristian Vazquez, wamekukyouzin, drum matthieu, Dogmaster, Frank Nitty, Magic Noob, Christopher Michel, Serge Bekenkamp, DougPeterson, LeoZero, Antonio Pontes, ApathyJones, Julian V, Steven Owens, nahinahi9, Kevin John Duck, Dustin Chen, Blackfish95, Mouthlessman, Paul Kroll, Bas Imagineer, yuxz69, esthe, decoy, ProtonPrince, DiffDuck, elu3199, Hasturkun, Jon Sandman, Ubivis, CloudValley, thesoftwaredruid, wundershark, mr_dinosaur, Tyrswood, Ray Wing, Ranzitho, Gus, MJG, linnfrey, IamAyam, skaterb949, Josef Lanzl, Nerezza, confiscated Zyra, Error_Rule34_Not_found, aezin, jcay015, Gerald Welly, Erik Lopez, Mateo Curić, Tee Gee, Geolog, tarek helmi, Neco28, Eris3D, Max Marklund, David Ortega, Pronredn, a _, Jeff, Bruce, lh qwe, James Coleman, conner, Kevin Christopher, Chad Idk, dd, Princess Bright Eyes, Dušan Ryban, Felipe dos Santos, sjon kreutz, John Statham, Douglas Gaspar, Metryman55, AlexDuKaNa, George, dw, 地獄の禄, David LaVallee, ae, Tr4shP4nda, Gamalonia, WRL_SPR, capn, Joseph, Mirko Katzula, dan, Piccio08, kumakichi, cppbel, Moon Knight, 몽타주, Kland, Hailshem, kudari, Naomi Hale Danchi, epicgamer0020690, Richard, 奚明 刘, Andrew, Brian M, Robert Wegemund, sanborondon, 준희 김, Taylor Funk, Thought2Form, Kevin Picco, Sadlip, Tomohiro Baba, m, Noora, Pierce McBride, Joshua Gray, Mattssn, Mikko Hemilä, Jamie Ogletree, Michael Taylor, Martial, Emil Andersson, Ouro Boros, Atilla Berke Pekduyar, Steam Steam, CryptoTraderJK, Decx , Yuji Kaneko, Davaitamin, Rops Alot, tedcor, Sam, Fotek Design, Ace Ventura, LarsesFPC, MadSpin, inbijiburu, Nick “Loadstone” D, momokai, starbugx, dc7431, ken, Crocket, Joshua Porrata, keemun, SuBu, RedPIXel, Wind, Nexus, Ramneek“Guy”Ashok, squid_actually, Nat_20, Edward Weeks, kyoumei, RadStorm04, JohnDoe42054, BillyHill, emyth, chriphost, KitKatM, socrasteeze, OrganicArtifact, MudkipMedkitz, deanbrian, Alex Wortman, Cody, emadsultan, Vir, gzmzmvp, Littlehuggy, Gregory Kozhemiak, Draven T, mrjuan, Brian Buie, Eric Whitney, Joey Callahan, Aquatic Coffee, Ivan Tadic, Mike Simone, John J Linehan, ethanfel, Elliot E, Morgandel, Theerat Jiramate, Focuschannel, Noah, Jacob McDaniel, X, Sloan Steddy, Temikus, Artokun, hexxish, Derek Baker, Anthony Faxlandez, battu, Michael Anthony Scott, Nathan, NICHOLAS BAXLEY, Pat Hen, Xeeosat, Ed Wang, Jordan Shaw, g unit, Srdb, 四糸凜音, Nihongasuki, JC, Prompt Pirate, uwutismxd, FrxzenSnxw, zenobeus, ryoma, Stryker, ResidentDeviant, Ginnie, Raku, smart.edge5178, InformedViewz, CHKeeho80, Bubbafett, leaf, Menard, Skyfire83, Adam Rinehart, Pitpe11, TheD1rtyD03, moonpetal, SomeDude, g9p0o, Pkrsky, TheHolySheep, raf8osz, Monte Won, SpringBootisTrash, carsten, ikok, DarkRoast, letzte, Nasty+Hobbit, Sora+Yori, lrdchs2, Duk3+Rand0m, Nathen+Choi, T, cocona, ElitaSSJ4, David Schenck, Wolfe7D1, blikkies, Chris, elleshar666, Shock Shockor, ACTUALLY_the_Real_Willem_Dafoe, Goldwaters, Kauffy, Zude, Kyler, Edward Kennedy, Justin Blaylock, aRtFuL_DodGeR, Nick Kage, Vane Holzer, psytrax, Cyrus Fett, Xenon Xue, notedfakes, Billy Gladky, Michael Scott, Probis, Wes Sims, ItsGeneralButtNaked, Donor4115, Distortik, Filippo Ferrari, Youguang, Saya, andrewzpong, BossGame, lrdchs, Tree Tagger, Inversity, AIVORY3D, Kevinj, Mitchell Robson, Whitepinetrader, POPPIN, nanana, ChaChanoKo, ghoulars, null, Beau, redcarrot, powerbot99, Fthehappy, g, J, Alan+Cano, FeralOpticsAI, Pavlaki, Doug+Rintoul, Noor, Yorunai, quantenmecha, Jason+Nash, BillyBoy84, Buecyb99, Welkor, John Martin, Ink Temptation, JBsuede, moranqianlong, Kalli Core, Time Valentine, Christian Schäfer, りん あめ, Михал Михалыч, Matt, Frogmilk, SPJ, Kyron Mahan, Bryan Rutkowski, TBitz33, Anonym dkjglfleeoeldldldlkf, Ezokewn, SendingRavens, JackJohnnyJim, TenaciousD, Dmitry Ryzhov, Khánh Đặng, Edward Ten Eyck, Michael Docherty, Jimmy Borup, Paul Hartsuyker, elitassj, Solixer, Pete Pain, Jacob Winter, Ryan Presley Ng, jinksta187, RHopkirk, Andrew Wilkinson, Manu Thetug, Karlanx, Lyavph, Maxim, David, Meilo, operationancut, shinonomeiro, Snille, MaartenAlbers, khanh duy, xybrightsummer, jreedatchison, PhilW, Marcus thronico, Janik, Cruel, MRBlack, Kiyoe, humptynutz, michael.isaza, Kalnei, Scott, Muratoraccio, D, 2turbo, Somebody, Balut+Omelette, Dmitry+Viznesenskiy, tanjin90, sternenkrieger, eriick, Patrick+Bryan, Pascalou, lighthawke, Lev+Lanevskiy, low9, Winged, YassineKhaled, Y, MatteKey, Flob, ShiroSenpai, Inkognito, G, Tan+Huynh, D, Dark_Pest, Alex, Jacky+Ho, Karru, generic404, abattoirblues, zounik, 4IXplr0r3r, hayden, ahoystan, Bob Barker, edk, Tú Nguyễn Lý Hoàng, shira1011, Ben D, G, Ronan Delevacq, ja s, Doug Mason, Jeremy Townsend, Dave Abraham, Joaquin Hierrezuelo, Locrospiel, Sean voets, Owen Gwosdz, Jarrid Lee, Poophead27 Blyat, Kor, Joseph Hanson, John Rednoulf, Spire, Boba Smith, Devil Lude, David Murcko, MR.Bear, Jack Dole, somethingtosay8, ivistorm, max blo, Sauv, Steven, CptNeo, Maso, Ted Cart, Sage Himeros, Eric Ketchum, Kevin Wallace, David Spearing, ChicRic, Tigon, BastardSama, mercur, Tania Nayelli Fernandez, Draconach, Yavizu3d, Yves Poezevara, Teriak47, Just me, Raf Stahelin, Вячеслав Маринин, Dkommander22, Cola Matthew, OniNoKen, Iain Wisely, Zertens, NOHOW, Apo, nekotxt, choowkee, Clusters, ibrahim, Highlandrise, philcoraz, mztn, ImagineerNL, MrAcrtosSursus, al300680, pixl, Robin, chahknoir, nd, keno94d, James Melzer, Bartleby, Renvertere, Rahuy, Hermann003, D, Foolish, RevyHiep, Captain_Swag, obkircher, gwyar, ResidentDeviant, D, edgecase, Neoxena, mrmhalo, dg, Maarten Harms, Israel, SelfishMedic, adderleighn, EnragedAntelope, Monix, Trolinka, IshouI;;, PredragR, Clauzmak, Nerick, JoL, Gold_miner_ego, SundayRage, YoruHime, matter, SRCRCOSS, imer, Akkas+Haque, Kachac, tyrant2811, Kevin, Rune+Osnes, jcx29, cloudghost, Yongkwan+Lee, PoorStudent, lucites, Alex+Zaw, Mobius2020, ExLightSaber, YaboiRay, Drizzly, Sildoren, Darvidous, Seon+Song, Nebuleux, Join+Chun, GDS+DEV, 4rt+r3d, you+halo9, Somebody, Somebody, Crescent~San, AiGirlTS, datasl4ve, Somebody, koopa990, The+Forgetful+Dev, Mateusz+Kosela, Bula, KUJYAKU, Coeur+de+cochon, Obsidian.Studios, han b, Zomba Mann, Aquaneo, Nico, Maximilian Krischan, Banana Joe, _ G3n, Donovan Jenkins, Hans Meier, sicarius, Michael Eid, Wolf and Fox Legends, beersandbacon, Neko Desco, Bob barker, Ninja Tom, karim ben brik, Vinarus, Josh Snyder, Michael Zhu, Nemisu, Seraphy, 雨の心 落, AllTimeNoobie, Leslie Andrew Ridings, jumpd, John C, Rim, Room Light, Jairus Knudsen, Xan Dionysus, Patryk Serious, Nathan lee, lylepaul, Middo, Forbidden Atelier, Thomas Sankowski, DrB, AZ Party Oasis, Adictedtohumping, Snorklebort, Towelie, TheFusion, matt, dsffsdfsdfsdfsdfsdf, Jean-françois SEMA, 3zS4QNQ4, Terminuz, Kurt, Matt M., Ivan Imes, J M, Bouya shaka, Faburizu, Jack Lawfield, jimyjomson, Borte, JaeHyun Jang, Chase Kwon, yyuvuvu, Inyoshu, Chad Barnes, Person Y, Nomki, James Ming, vanditking, kripitonga, Rizzi, nimin, OMAR LUCIANO, Somebody, CoffeeMage, Ken+Suzuki, hannibal, Jo+Example, BrentBertram, inusanorthcape, eumelzocker, dxjaymz, L C, Dude, Somebody, CK

⚠ Important Note: To use the CivitAI download feature, you'll need to:

  1. Get your CivitAI API key from your profile settings
  2. Add it to the LoRA Manager settings page
  3. Save the settings

Key Features

  • 🚀 High Performance

    • Fast model loading and browsing
    • Smooth scrolling through large collections
  • 🌐 Rich Model Integration

    • Direct download from CivitAI
    • Preview images and videos
    • Model descriptions and version selection
    • Trigger words at a glance
    • One-click workflow integration with preset values
  • 🔄 Checkpoint Management

    • Scan and organize checkpoint models
    • Filter and search your collection
    • View and edit metadata
    • Clean up and manage disk space
  • 🧩 LoRA Recipes

    • Save and share favorite LoRA combinations
    • Preserve generation parameters for future reference
    • Quick application to workflows
    • Import/export functionality for community sharing
  • 💻 User Friendly

    • One-click access from ComfyUI menu
    • Context menu for quick actions
    • Custom notes and usage tips
    • Multi-folder support
    • Configurable mature blur threshold (PG13 / R / X / XXX, default R+)
      • Example: setting threshold to PG13 blurs PG13, R, X, and XXX previews when blur is enabled
    • Visual progress indicators during initialization

Installation

  1. Open ComfyUI.
  2. Go to Manager > Custom Node Manager.
  3. Search for lora-manager.
  4. Click Install.

Option 2: Portable Standalone Edition (No ComfyUI required)

  1. Download the Portable Package
  2. Copy the provided settings.json.example file to create a new file named settings.json in comfyui-lora-manager folder.
  3. Edit the new settings.json to include your correct model folder paths and CivitAI API key
    • Set "use_portable_settings": true if you want the configuration to remain inside the repository folder instead of your user settings directory.
  4. Run run.bat
    • To change the startup port, edit run.bat and modify the parameter (e.g. --port 9001)

Option 3: Manual Installation

git clone https://github.com/willmiao/ComfyUI-Lora-Manager.git
cd ComfyUI-Lora-Manager
pip install -r requirements.txt

Usage

  1. There are two ways to access the LoRA manager:
  2. From the interface, you can:
    • Browse and organize your LoRA models
    • Download models directly from CivitAI
    • Automatically fetch or manually set preview images
    • View and copy trigger words associated with each LoRA
    • Add personal notes and usage tips
  3. To use LoRAs in your workflow:
    • Add the "Lora Loader (LoraManager)" node to your workflow
    • Select a LoRA in the manager interface
    • Click copy button or use right-click menu "Copy LoRA syntax"
    • Paste into the Lora Loader node's text input
    • The node will automatically apply preset strength and trigger words

Wildcards for TextLM / PromptLM

Text (LoraManager) and Prompt (LoraManager) support /wildcard autocomplete plus runtime wildcard expansion.

  • Wildcard files live in {settings folder}/wildcards/
  • When you type /wildcard and no wildcard files exist yet, the autocomplete dropdown shows the exact folder path and lets you open it
  • Supported formats: .txt, .yaml, .yml, .json

Format rules:

  • wildcards/animals/cat.txt becomes __animals/cat__
  • .txt files use one option per line
  • YAML / JSON files use nested keys that end in string arrays

Examples:

# wildcards/color.txt
red
blue
green

Use it as __color__.

# wildcards/colors.yaml
palette:
  warm:
    - red
    - orange

Use it as __palette/warm__.

Filename Format Patterns for Save Image Node

The Save Image Node supports dynamic filename generation using pattern codes. You can customize how your images are named using the following format patterns:

Available Pattern Codes

  • %seed% - Inserts the generation seed number
  • %width% - Inserts the image width
  • %height% - Inserts the image height
  • %pprompt:N% - Inserts the positive prompt (limited to N characters)
  • %nprompt:N% - Inserts the negative prompt (limited to N characters)
  • %model:N% - Inserts the model/checkpoint name (limited to N characters)
  • %date% - Inserts current date/time as "yyyyMMddhhmmss"
  • %date:FORMAT% - Inserts date using custom format with:
    • yyyy - 4-digit year
    • yy - 2-digit year
    • MM - 2-digit month
    • dd - 2-digit day
    • hh - 2-digit hour
    • mm - 2-digit minute
    • ss - 2-digit second

Examples

  • image_%seed%image_1234567890
  • gen_%width%x%height%gen_512x768
  • %model:10%_%seed%dreamshape_1234567890
  • %date:yyyy-MM-dd%2025-04-28
  • %pprompt:20%_%seed%beautiful landscape_1234567890
  • %model%_%date:yyMMdd%_%seed%dreamshaper_v8_250428_1234567890

You can combine multiple patterns to create detailed, organized filenames for your generated images.

Standalone Mode

You can now run LoRA Manager independently from ComfyUI:

  1. For ComfyUI users:

    • Launch ComfyUI with LoRA Manager at least once to initialize the necessary path information in the settings.json file located in your user settings folder (see paths above).
    • Make sure dependencies are installed: pip install -r requirements.txt
    • From your ComfyUI root directory, run:
      python custom_nodes\comfyui-lora-manager\standalone.py
      
    • Access the interface at: http://localhost:8188/loras
    • You can specify a different host or port with arguments:
      python custom_nodes\comfyui-lora-manager\standalone.py --host 127.0.0.1 --port 9000
      
  2. For non-ComfyUI users:

    • Copy the provided settings.json.example file to create a new file named settings.json. Update the API key, optional language, and folder paths only—the library registry is created automatically when LoRA Manager starts.
    • Edit settings.json to include your correct model folder paths and CivitAI API key (you can leave the defaults until ready to configure them)
    • Enable portable mode by setting "use_portable_settings": true if you prefer LoRA Manager to read and write the settings.json located in the project directory.
    • Install required dependencies: pip install -r requirements.txt
    • Run standalone mode:
      python standalone.py
      
    • Access the interface through your browser at: http://localhost:8188/loras

    Note: Existing installations automatically migrate the legacy settings.json from the plugin folder to the user settings directory the first time you launch this version.

This standalone mode provides a lightweight option for managing your model and recipe collection without needing to run the full ComfyUI environment, making it useful even for users who primarily use other stable diffusion interfaces.

Testing & Coverage

Backend

Install the development dependencies and run pytest with coverage reports:

pip install -r requirements-dev.txt
COVERAGE_FILE=coverage/backend/.coverage pytest \
  --cov=py \
  --cov=standalone \
  --cov-report=term-missing \
  --cov-report=html:coverage/backend/html \
  --cov-report=xml:coverage/backend/coverage.xml \
  --cov-report=json:coverage/backend/coverage.json

HTML, XML, and JSON artifacts are stored under coverage/backend/ so you can inspect hot spots locally or from CI artifacts.

Frontend

Run the Vitest coverage suite to analyze widget hot spots:

npm run test:coverage

Documentation

  • metadata.json Schema Documentation — Complete reference for the .metadata.json sidecar file format, including all fields, types, and examples for LoRA, Checkpoint, and Embedding models.

Contributing

Thank you for your interest in contributing to ComfyUI LoRA Manager! As this project is currently in its early stages and undergoing rapid development and refactoring, we are temporarily not accepting pull requests.

However, your feedback and ideas are extremely valuable to us:

  • Please feel free to open issues for any bugs you encounter
  • Submit feature requests through GitHub issues
  • Share your suggestions for improvements

We appreciate your understanding and look forward to potentially accepting code contributions once the project architecture stabilizes.


Credits

This project has been inspired by and benefited from other excellent ComfyUI extensions:


Support

If you find this project helpful, consider supporting its development:

ko-fi

Patreon

WeChat: Click to view QR code

💬 Community

Join our Discord community for support, discussions, and updates: Discord Server


Star History

Star History Chart

Description
LoRA Manager for ComfyUI - A powerful extension for organizing, previewing, and integrating LoRA models with metadata and workflow support.
Readme GPL-3.0 81 MiB
Languages
Python 49.9%
JavaScript 38%
CSS 5%
HTML 3.1%
Vue 2.3%
Other 1.7%