Local Media Manager
Browse, tag, and feed your whole media library into ComfyUI without ever leaving the canvas
- image
- mask
- paths
- path
- info
If you've ever alt-tabbed to your file explorer to find a reference image, dragged it into ComfyUI, then gone back because the batch you actually wanted lived in a different folder - this node is aimed squarely at you. Local Media Manager is the hub of the ComfyUI_Local_Media_Manager pack (from the "📜Asset Gallery/Local" category), and it replaces most of that tab-switching with a gallery widget that lives right on the canvas. Browse any folder, Ctrl+Click a handful of images, and the node hands them to your graph as a batch - plus a paths output that feeds the pack's three "Select Original…" nodes downstream.
What it actually is
It's a media file manager embedded in a single node. The widget shows a virtualized, thumbnail-cached gallery of everything in the folder you're browsing - images, videos, audio - with a breadcrumb nav bar, path presets, star ratings, tags, multi-select with sequence numbers, and even move / delete (to the OS trash, via send2trash) / rename buttons. The point isn't that it's pretty; it's that a folder with thousands of images scrolls smoothly and remembers where you were when you reload the workflow. For in-canvas browsing, "ultimate local file manager" is honestly not much of an exaggeration.
Under the hood it isn't a dumb list. The node registers HTTP routes on ComfyUI's server (/local_image_gallery/...) that handle thumbnailing, metadata edits, file operations, and mask saves, so the heavy lifting happens server-side, not in the graph. And it has an IS_CHANGED that hashes your selection, the current folder, and the mtimes of every selected file (plus any mask files). Net effect: if you edit or replace a file on disk, the workflow re-runs without you having to touch anything. There's also a subtle correctness detail worth knowing: selection is locked in when you queue a prompt, so a workflow churning through a batch won't suddenly pick up a file you clicked mid-run.
The outputs that matter
The node takes no required inputs - the gallery UI drives it. All the action is on the output side:
image(IMAGE) - all selected images stacked into a batch. Sizes are normalized to the most common size in your selection (smaller ones get upscaled to match), and the alpha channel is dropped if every image is fully opaque, which spares you the "RGB vs RGBA" error some downstream nodes throw.mask(MASK) - the mask from the built-in mask editor. It's saved as{filename}_mask.pngnext to the file or in ComfyUI'sinput/dir, and it auto-fills from the alpha channel when you open a transparent PNG. Wire this into any inpaint mask input.paths(LMM_ALL_PATHS) - a JSON list of the selected items with their paths, types, and embedded metadata. This is the one you feed into Select Original Image / Video / Audio.path(STRING) - a plain text path. Single selection → that file's path; nothing selected → the folder you're currently browsing. Handy for driving a plainLoadImage-style node.info(STRING) - metadata JSON for the selection. Pick a single image that carries an embedded workflow and this dumps the whole workflow JSON, which is a nice way to inspect what made a PNG without dragging it in.
Installing it
Via ComfyUI Manager, search "Local Media Manager" (or the repo name ComfyUI_Local_Media_Manager) and install. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/Firetheft/ComfyUI_Local_Media_Manager
cd ComfyUI_Local_Media_Manager
pip install -r requirements.txt
# restart ComfyUI
The real requirements.txt is small - send2trash, opencv-python-headless, torchaudio. One gotcha: the README's install section still says the folder should be ComfyUI_Local_Image_Gallery - that's the pack's old name; the current repo clones into ComfyUI_Local_Media_Manager, and that's what the code expects. Audio extraction also shells out to the ffmpeg binary, so make sure it's on your PATH (it ships with ComfyUI Desktop; on a manual install you may need to add it).
Common issues
- It only browses media files. You can't use it to manage
.jsonworkflows or.safetensors- community feedback on this pack keeps circling back to "great for images, but it can't list my workflow JSONs." It is a media manager, not a file manager. - Mixed sizes get normalized. Select one 512px and one 1024px image and the small one gets upscaled to match the batch. If that surprises you, keep selections roughly same-sized or use Select Original Image to pull out a specific one at its native resolution.
- Silent re-runs. Because
IS_CHANGEDwatches file mtimes, editing a selected file retriggers the graph. Usually a feature; occasionally a "why did it re-run?" moment.
Inputs (0)
No inputs
Outputs (5)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| mask | MASK | — |
| paths | LMM_ALL_PATHS | — |
| path | STRING | — |
| info | STRING | — |