You generate hundreds of images a day. Finding them again, and sharing them professionally, is harder than it should be.
If you already use SmartGallery v1 as an advanced file manager, v2 takes you further: structured collections, team roles, a dedicated client portal, and tools to present your work to an audience. Everything you know still works. It runs 100% on your machine, needs no cloud, and works with ComfyUI outputs, video files, photography archives, or any media folder you point it at.
The main interface: your full workspace for organizing, tagging, and searching every generation.
Browse and cull on your phone
No paid subscriptions, no cloud uploads, no vendor lock-in. Pick your scenario.
"I run ComfyUI all day. My output folder has 40,000 files. I can never find anything."
"I deliver AI visuals to clients. Sharing via Google Drive or Dropbox feels unprofessional."
"I want a proper way to organize my AI generations, holiday photos and videos. And maybe share some of it with family or friends."
A high-level walkthrough of the concepts behind SmartGallery DAM: what it is, why it exists, and how the two interfaces fit together.
No setup instructions in this video, just the vision. Full installation guides, screenshots and the complete wiki are all further down this page.
If you've been using SmartGallery to browse your ComfyUI outputs, you already know the core experience. Everything you rely on in v1.x is still there: the fast grid, workflow extraction, node summary, Auto-Watch, keyboard shortcuts, Compare Mode, mobile browsing. Not a line of that was removed.
What v2 adds on top is a complete professional layer: a team-ready main interface (what you already use), plus a brand-new Exhibition portal you can share with clients, collaborators, friends, or family. Think of it as your gallery finally having a front door you can hand out a key to, without handing out your entire workflow archive.
The version number jumped from 1.x to 2.x because this is a new paradigm, not just a feature drop. The architecture, ACL system, and multi-user logic required a ground-up rethink. But your existing setup, your existing folders, your existing data are all forward-compatible.
The sidebar you know from v1.x had one tab: the folder tree. In v2 it has three. The familiar Folders tab is still there. Next to it you now have a Status tab that lets you browse all files in a given review state (all Approved images, all Rejected, all flagged for Review) across every folder at once. And a Collections tab where you navigate your virtual collections, both private ones for your own organization and Exhibition-ready ones that will appear in Exhibition for your clients.
SmartGallery runs as a standalone process independent of ComfyUI. Since it's not a custom node, it remains fully functional even if your ComfyUI environment breaks after an update (and it will). SmartGallery keeps running, keeps indexing, keeps organizing. No crashes, no data loss, no problems.
It is ComfyUI-aware but not ComfyUI-dependent. It reads workflows, extracts prompts, understands models and LoRAs. But it does not need ComfyUI to be installed, running, or even present on the same machine. Install SmartGallery on a laptop, point it at your ComfyUI output folder over the network or a NAS, and browse your full library from any browser, including your phone.
Point it at any folder on your system: a photography archive, a design project, a video collection, a family album. Tagging, Collections, ratings, comments, search, Compare Mode, Exhibition sharing and file operations all work on everything. SmartGallery outlives every tool it connects to. Mount any external drive or network path via the Symlink tool and it appears in your sidebar like any other folder.
Working solo? No clients? Exhibition Mode is still yours to use. Run it as a private family photo portal, a portfolio to show friends, or a clean showcase of your generative art, without the technical clutter of the main interface.
Mark a Collection as "Exhibition Ready", spin up Exhibition on port 8190, share the link. Your parents can browse holiday photos. Your friend can rate your latest AI series. You get their feedback structured and searchable. All without sending a single ZIP file.
Built by a digital artist, for digital artists. Works with ComfyUI, or with any media library.
Don't wait for the batch to finish. SmartGallery's Auto-Watch mode makes new files appear the instant ComfyUI saves them. Press Del to trash bad seeds immediately, F to favorite the keepers, M to move them. All while generation is still running. Your scroll position is never disturbed.
Every image becomes a collaboration hub. Staff and clients post 1-to-5 star ratings and real-time comments on specific assets. Search your entire gallery by keywords inside the feedback. Sort by "Highest Rated". Each message carries its own visibility: Public (everyone), Internal (staff only), or a Direct Message to a specific user, all within the same session.
Link external hard drives, NAS volumes, or any network path directly from the UI via Symlinks. They appear in your sidebar alongside your ComfyUI folders. Organize, tag, and search across everything from a single interface, without moving a single file.
Unlike ComfyUI itself, SmartGallery is meticulously crafted for mobile. Review generations, tag favorites, and reply to client comments perfectly from your smartphone, even when you're away from your desk.
Share your art, keep your secrets. Exhibition Mode automatically strips all EXIF data and ComfyUI workflows before clients ever see the image. Use Shift+W in the main interface for a manual clean export anytime.
Send your clients a secure, professional Exhibition link instead. They log in, browse only the collections you've marked as Exhibition Ready, leave star ratings and comments. You get structured feedback in real-time. No Google Drive, no Discord threads, no chaos.
Lazy-loading, SQLite WAL caching, and parallel background workers. Handles tens of thousands of images without a stutter. First scan indexes everything; subsequent runs are instant.
Select any two generations and get an interactive A/B slider with synchronized zoom/pan, plus a table showing only the nodes that changed: Seed, CFG, LoRA weights, anything.
Auto-transcodes ProRes, MKV, AVI, MOV on-the-fly via FFmpeg. Press E to generate an 11-frame storyboard for instant video review without scrubbing.
v2 ships two purpose-built interfaces that can run simultaneously on different ports. The main interface is what you already know from v1.x. Exhibition is what's new.
For: Digital Artists, Prompt Engineers, Internal Teams
For: Clients, Art Directors, Friends, Family, General Public
Choose your platform. No heavy database servers required. SmartGallery self-initializes everything.
git clone https://github.com/biagiomaf/smart-comfyui-gallery
cd smart-comfyui-gallery
python -m venv venv
venv\Scripts\activate
pip install -r requirements.txt
Option B: Download the ZIP from Releases, extract, and run the pip commands above.
Create run_smartgallery.bat in the folder and edit the paths:
@echo off
cd /d %~dp0
call venv\Scripts\activate.bat
:: --- CONFIGURATION: replace with your real paths ---
set "BASE_OUTPUT_PATH=C:/Path/To/ComfyUI/output"
set "BASE_INPUT_PATH=C:/Path/To/ComfyUI/input"
set "BASE_SMARTGALLERY_PATH=C:/Path/To/ComfyUI/output"
set "FFPROBE_MANUAL_PATH=C:/Path/To/ffmpeg/bin/ffprobe.exe"
set SERVER_PORT=8189
:: --- OPTIONAL LAUNCH PARAMETERS ---
:: Add any of the following to the python command below as needed:
:: --admin-pass yourpassword set the admin password (username will be: admin)
:: --force-login require login even on local network
:: --exhibition start in Exhibition Mode instead of Main Interface
:: --port 8190 use a different port (e.g. for a second Exhibition instance)
:: --enable-guest-login allow anonymous access in Exhibition
:: --- START ---
python smartgallery.py
pause
Always use / in paths, even on Windows. e.g. C:/ComfyUI/output not C:\ComfyUI\output
cd smart-comfyui-gallery
git pull
venv\Scripts\activate
pip install -r requirements.txt
git clone https://github.com/biagiomaf/smart-comfyui-gallery
cd smart-comfyui-gallery
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
#!/bin/bash
source venv/bin/activate
# Fix for "Too many open files" on macOS
ulimit -n 4096
# --- CONFIGURATION: replace with your real paths ---
export BASE_OUTPUT_PATH="$HOME/ComfyUI/output"
export BASE_INPUT_PATH="$HOME/ComfyUI/input"
export BASE_SMARTGALLERY_PATH="$HOME/ComfyUI/output"
export FFPROBE_MANUAL_PATH="/opt/homebrew/bin/ffprobe"
export SERVER_PORT=8189
# --- OPTIONAL LAUNCH PARAMETERS ---
# Add any of the following to the python command below as needed:
# --admin-pass yourpassword set the admin password (username will be: admin)
# --force-login require login even on local network
# --exhibition start in Exhibition Mode instead of Main Interface
# --port 8190 use a different port (e.g. for a second Exhibition instance)
# --enable-guest-login allow anonymous access in Exhibition
# --- START ---
python smartgallery.py
Make it executable: chmod +x run_smartgallery.sh then run: ./run_smartgallery.sh
Install FFmpeg via Homebrew: brew install ffmpeg
cd smart-comfyui-gallery && git pull
source venv/bin/activate && pip install -r requirements.txt
git clone https://github.com/biagiomaf/smart-comfyui-gallery
cd smart-comfyui-gallery
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
#!/bin/bash
source venv/bin/activate
# --- CONFIGURATION: replace with your real paths ---
export BASE_OUTPUT_PATH="$HOME/ComfyUI/output"
export BASE_INPUT_PATH="$HOME/ComfyUI/input"
export BASE_SMARTGALLERY_PATH="$HOME/ComfyUI/output"
export FFPROBE_MANUAL_PATH="/usr/bin/ffprobe"
export SERVER_PORT=8189
# --- OPTIONAL LAUNCH PARAMETERS ---
# Add any of the following to the python command below as needed:
# --admin-pass yourpassword set the admin password (username will be: admin)
# --force-login require login even on local network
# --exhibition start in Exhibition Mode instead of Main Interface
# --port 8190 use a different port (e.g. for a second Exhibition instance)
# --enable-guest-login allow anonymous access in Exhibition
# --- START ---
python smartgallery.py
chmod +x run_smartgallery.sh then ./run_smartgallery.sh
cd smart-comfyui-gallery && git pull
source venv/bin/activate && pip install -r requirements.txt
Pre-built image available on DockerHub and Unraid Community Apps.
docker run \
--name smartgallery \
-v /your/host/output:/mnt/output \
-v /your/host/input:/mnt/input \
-v /your/host/SmartGallery:/mnt/SmartGallery \
-e BASE_OUTPUT_PATH=/mnt/output \
-e BASE_INPUT_PATH=/mnt/input \
-e BASE_SMARTGALLERY_PATH=/mnt/SmartGallery \
-p 8189:8189 \
-e WANTED_UID=`id -u` \
-e WANTED_GID=`id -g` \
# --- OPTIONAL LAUNCH PARAMETERS via CLI_ARGS ---
# Uncomment and edit the line below to enable additional features:
# -e CLI_ARGS="--admin-pass yourpassword --force-login"
#
# Available parameters (combine as needed in CLI_ARGS):
# --admin-pass yourpassword set the admin password (username will be: admin)
# --force-login require login even on local network
# --exhibition start in Exhibition Mode (use a different -p port, e.g. 8190:8189)
# --enable-guest-login allow anonymous access in Exhibition
mmartial/smart-comfyui-gallery
# Pull latest image
docker pull mmartial/smart-comfyui-gallery
# Stop and remove the old container
docker stop smartgallery && docker rm smartgallery
# Re-run with the same docker run command above
All parameters are optional. Launched with no flags, the main interface runs on port 8189 and treats you as system admin automatically when accessed from the local network.
| Flag | Required | Description |
|---|---|---|
--port <number> |
Optional | Override the default port (8189). Use a different port to run the main interface and Exhibition at the same time. |
--admin-pass <pwd> |
Optional* | Set or reset the Admin password. Required whenever you need user management: creating accounts, assigning roles, managing access. Without it, user management is unavailable. Must be at least 8 characters. Once set, log in with username admin (lowercase, fixed) and this password. |
--force-login |
Optional* | Enforces authentication on the main interface. Must always be combined with --admin-pass. Use when accessing the main interface from outside the local network or from a shared server. |
* --admin-pass and --force-login are individually optional but must be used together when either is specified.
--admin-pass and --force-login together, without exception. This applies in every scenario where the main interface is reachable from the internet: checking your gallery from your phone while you are out, a remote STAFF member working from home, a geographically distributed team. Without these two flags the interface is open to anyone who finds the URL. With them, every access requires a valid login.
| Flag | Required | Description |
|---|---|---|
--exhibition |
✓ Yes | Start in Exhibition Mode. Disables physical folder browsing; only Exhibition Ready collections are visible. |
--admin-pass <pwd> |
✓ Yes | Set or reset the Admin password. Required to enable user management and protect the instance. Must be at least 8 characters. Once set, log in with username admin (lowercase, fixed) and this password. |
--port <number> |
✓ Yes | Override the default port (8189). A different port is required to run Exhibition alongside the main interface simultaneously. |
--enable-guest-login |
Optional | Shows a "Login as Guest" button on the auth screen. No account needed to browse Exhibition. |
SmartGallery has two interfaces: the Main Interface (your personal workspace) and Exhibition (the sharing portal). They are completely independent. Run one or both, whenever you need them. Neither requires the other to be active.
If you used SmartGallery v1 as an advanced file manager and have no need to share your work, nothing changes. Launch it exactly as before, with no extra parameters:
python smartgallery.py
What is new in v2 that you can start using immediately, without any additional setup:
Exhibition is a separate, read-only portal you share with clients, collaborators, or anyone you want to show your work to. Here is how to set it up from scratch.
Step 1: Launch the Main Interface with authentication. Add --admin-pass and --force-login to your existing launch script or run:
python smartgallery.py --port 8189 --admin-pass yourpassword --force-login
Log in at http://localhost:8189 with username admin (lowercase) and the password you set above.
Step 2: Create Collections and mark them as Exhibition Ready. In the left sidebar, open the Collections tab and click +. Give each collection a name (e.g. "Interiors", "Exteriors", "Project X") and toggle it as Exhibition Ready if you want it visible in Exhibition. You can change this setting at any time. Add files to the collections you want to expose.
Step 3: Create user accounts. Click the user management icon at the bottom of the sidebar. Create an account for each person who will access Exhibition. For clients and external viewers, assign the role CUSTOMER or USER. Share their credentials and the Exhibition URL with them directly.
Step 4: Launch Exhibition. Open a second terminal or script and run:
python smartgallery.py --exhibition --port 8190 --admin-pass yourpassword
Share http://youraddress:8190 with your users. They will see only the Exhibition Ready collections, with no prompts, no workflow data, and no folder structure. They can leave star ratings and comments on individual images. You can read and reply to their feedback from the Main Interface at any time.
You do not need to run both instances at the same time permanently. Launch Exhibition only when you have something to share, and shut it down when the review session is over. The two instances are independent: the parameters shown above are the only additions to your existing launch script. All other paths and settings you already have configured remain unchanged.
The team lead runs the Main Interface with --force-login and --admin-pass so the workspace is password-protected. Each team member gets a STAFF account and logs into the same Main Interface remotely to review files, apply status tags, and leave internal comments on specific images.
When work is ready for a client, a CUSTOMER account is created, the relevant Collections are marked as Exhibition Ready, and Exhibition is launched on a separate port. The client gets a clean view with no access to the production workspace.
Admin, MANAGER, and STAFF can also log into Exhibition to see exactly what the client sees. All feedback runs through the same database, with no file transfers, no email threads, and no ZIP files.
The two instances can run at the same time from two separate terminals or scripts, or independently whenever needed. The parameters below are all you need to add to your existing launch command:
Python: two terminals or scripts# Terminal 1: Main interface
python smartgallery.py --port 8189 --admin-pass yourpassword --force-login
# Terminal 2: Exhibition (launch only when needed)
python smartgallery.py --exhibition --port 8190 --admin-pass yourpassword
Docker: same image, launched twice
# Main interface container (port 8189 on host)
docker run --name smartgallery-main \
-v /your/host/output:/mnt/output \
-v /your/host/input:/mnt/input \
-v /your/host/SmartGallery:/mnt/SmartGallery \
-e BASE_OUTPUT_PATH=/mnt/output \
-e BASE_INPUT_PATH=/mnt/input \
-e BASE_SMARTGALLERY_PATH=/mnt/SmartGallery \
-e WANTED_UID=`id -u` \
-e WANTED_GID=`id -g` \
-e CLI_ARGS="--admin-pass yourpassword --force-login" \
-p 8189:8189 \
mmartial/smart-comfyui-gallery
# Exhibition container (port 8190 on host)
docker run --name smartgallery-exhibition \
-v /your/host/output:/mnt/output \
-v /your/host/input:/mnt/input \
-v /your/host/SmartGallery:/mnt/SmartGallery \
-e BASE_OUTPUT_PATH=/mnt/output \
-e BASE_INPUT_PATH=/mnt/input \
-e BASE_SMARTGALLERY_PATH=/mnt/SmartGallery \
-e WANTED_UID=`id -u` \
-e WANTED_GID=`id -g` \
-e CLI_ARGS="--exhibition --admin-pass yourpassword" \
-p 8190:8189 \
mmartial/smart-comfyui-gallery
HOST:CONTAINER. Both containers run internally on port 8189, but are reachable at :8189 and :8190 respectively on your machine. They share the same data volumes, so files, tags, and collections are visible in both.
A reverse proxy lets you serve SmartGallery over a clean URL or on port 80/443. Configure one block per instance: main interface on 8189, Exhibition on 8190.
# main interface (port 8189)
location /studio/ {
proxy_pass http://127.0.0.1:8189/galleryout/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# Exhibition (port 8190)
location /gallery/ {
proxy_pass http://127.0.0.1:8190/galleryout/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
Requires mod_proxy and mod_proxy_http enabled.
# main interface (port 8189)
<Location "/studio/">
ProxyPreserveHost On
ProxyPass http://127.0.0.1:8189/galleryout/
ProxyPassReverse http://127.0.0.1:8189/galleryout/
</Location>
# Exhibition (port 8190)
<Location "/gallery/">
ProxyPreserveHost On
ProxyPass http://127.0.0.1:8190/galleryout/
ProxyPassReverse http://127.0.0.1:8190/galleryout/
</Location>
If you don't have a server or a domain name but want to share your Exhibition with someone outside your home network, the simplest approach is a tunnel service. These tools create a temporary public URL that forwards to your local machine: no router configuration, no static IP, no hosting fees.
Works on Windows, macOS and Linux. Free tier is enough for personal use. Creates a public https:// URL that forwards to your local Exhibition port.
# macOS (Homebrew)
brew install ngrok
# Windows: download the .exe from ngrok.com/download
# Linux
curl -sSL https://ngrok-agent.s3.amazonaws.com/ngrok.asc | sudo tee /etc/apt/trusted.gpg.d/ngrok.asc
echo "deb https://ngrok-agent.s3.amazonaws.com buster main" | sudo tee /etc/apt/sources.list.d/ngrok.list
sudo apt update && sudo apt install ngrok
Step 2: Start your Exhibition instance, then open the tunnel
ngrok http 8190
ngrok will print a URL like https://a1b2c3d4.ngrok.io. Share that link with your client. It stays active as long as you keep ngrok running. On the free tier the URL changes every time you restart ngrok.
If ngrok doesn't suit you, these tools work the same way:
npx localtunnel --port 8190): no account needed, truly instant, but less stable for long sessions.💡 Tip: You can tunnel either or both ports. Exhibition (8190) is for clients and guests. Main interface (8189) is password-protected and perfectly usable remotely, handy for culling from your phone or working with a distributed team. Tunnel what you need.
-p 8190:8189, then point ngrok or Cloudflare Tunnel at port 8190 on your host machine.
FFmpeg is required for video workflow extraction and transcoding. Common ffprobe paths:
| Platform | Default path |
|---|---|
| Windows | C:/ffmpeg/bin/ffprobe.exe |
| Linux | /usr/bin/ffprobe |
| macOS (Homebrew) | /opt/homebrew/bin/ffprobe |
Download: ffmpeg.org
mmartial/smart-comfyui-gallery) already includes FFmpeg and ffprobe. Video transcoding and storyboard generation work out of the box with no additional configuration.
Every feature, every shortcut, every configuration option. For the latest additions and changelogs, always refer to the GitHub repository.
If you are coming from v1.x, you will notice that the left sidebar has grown. What used to be just a folder tree is now split into three tabs, each giving you a different way to navigate your entire library:
The three-tab sidebar: Folders, Collections, and Status.
SmartGallery is designed to be used while ComfyUI is generating. You never have to wait for a batch to finish to start curating.
Auto-Watch: enable the toggle and set an interval. A pulsing red dot confirms it's active.
The culling loop: As images appear, hover and press Del to trash bad seeds instantly, or F to favorite the keepers. Apply status tags with 1–5. Move selects to a folder with M. Everything happens live, in parallel with generation.
SmartGallery acts as a full file manager for single files or massive batches.
DELETE_TO environment variable to redirect deletes to a Trash folder instead.
Focus OFF: hover cards and metadata visible.
Focus ON: clean grid with fuchsia selection borders.
Select any image with the ✓ checkmark (or press X / Space in Focus Mode) to activate the floating batch bar at the bottom of the screen.
Batch selection bar: context menu open with all available batch actions.
.zip file.Open the full-screen Lightbox with V or Enter. When Focus Mode is OFF, clicking an image directly also works. Inside the Lightbox you can pan and zoom freely.
The Lightbox: Node Summary (left), full resolution image (center), Ratings & Comments panel (right).
The Lightbox toolbar with all action buttons.
.json workflow; C to copy it to clipboard for direct paste into ComfyUI.Group files from different physical folders into unified albums, without duplicating a single byte on disk. The physical files stay where they are.
Collections sidebar tab and Manage Collections modal.
Color-coded visual traffic lights for your entire team. Essential for review pipelines: anyone with main interface access sees the status at a glance.
The Status tab: all five pipeline states.
Vertical color bars indicate status on thumbnails.
Hover over any image (or select multiple), then press:
SmartGallery is not restricted to ComfyUI. Mount any folder from your system or network.
SmartGallery creates a safe Symlink/Junction. The folder appears in your sidebar with a 🔗 icon. All DAM features (Tags, Collections, Search) work on these files without moving them.
Click the 🔍 Filters button in the top toolbar to open the advanced search panel.
The Filters panel: search scope, multi-keyword fields, and sort options.
, (comma) for AND — e.g., red, car must contain both; (semicolon) for OR — e.g., cat; dog contains either! (exclamation) for NOT — e.g., flux, !lora finds flux but excludes lora" " for Exact Match — e.g., "man" prevents matching woman (works also with NOT, e.g., !"bad anatomy")cyberpunk, neon).sdxl_base.safetensors).make it brighter, approved). Your entire feedback history is instantly searchable.SmartGallery reads the embedded JSON workflow from generated images and videos, then presents it as a clean, readable dashboard.
Node Summary dashboard: generation parameters at a glance.
Raw Node List: complete scrollable list of every node in the workflow graph.
.json workflow file.Find out exactly what changed between any two generations.
Compare Mode: A/B visual slider and Parameter Differences table.
When you need to share an image outside of Exhibition Mode without risking your workflow data.
How to use: Select an image and press Shift+W, or click the 🛡️ icon in the Lightbox. SmartGallery reconstructs the image pixel-by-pixel, stripping all EXIF data and embedded ComfyUI workflows, then downloads a pristine, safe copy to your computer.
SmartGallery uses FFmpeg to handle heavy or unsupported video formats.
Review long video files instantly without scrubbing.
Video Storyboard: 11 evenly-spaced frames extracted from the video.
How to use: Open a video in the Lightbox and press E (or click the filmstrip icon). The system extracts 11 evenly-spaced frames and presents them in a grid. Click any frame to view it full resolution with timestamp data.
Exhibition Mode transforms SmartGallery into a secure, read-only client portal. Physical folder browsing is disabled, workflows are hidden, and only Exhibition Ready collections are visible.
Use cases: Client approval portals, family photo sharing, art portfolio showcases, team review sessions: anything where you want a clean presentation without exposing your tools.
# Main interface
python smartgallery.py --port 8189 --admin-pass yourpassword --force-login
# Exhibition
python smartgallery.py --exhibition --port 8190 --admin-pass yourpassword --enable-guest-login
For Docker, use -p 8189:8189 for the main interface and -p 8190:8189 for Exhibition. Both containers share the same data volumes. See the Installation section for the full Docker dual-instance setup.
--enable-guest-login to allow anonymous browsing without an account.
What your client sees: a clean, secure gallery. No prompts, no workflows, no clutter.
Ratings and comments are not just for clients. Any logged-in user can rate and comment on images, whether they access the gallery through the main interface or through Exhibition. A solo artist can rate their own work and leave notes to themselves. A team member can flag issues. A client can approve. All from the same system, with role-appropriate visibility.
The Ratings & Comments panel showing global rating and personal vote.
Visibility is chosen individually for each message, directly inside the comment panel. When writing a comment on any image (press G or click the 💬 icon in the Lightbox), a Target / Visibility dropdown appears above the text input, letting the author decide exactly who can read that message before posting.
Public announcements, internal team notes, and private client replies can all coexist inside the same gallery instance at the same time.
Comments thread showing visibility dropdown and badges.
Staff members can see all messages regardless of their visibility level. When writing, they can choose from three options:
Clients and guests cannot send direct messages to other users. When they write a comment, they choose between:
The ratings and comments panel: structured feedback on every asset, with role-aware visibility.
There is exactly one system admin, hardwired into SmartGallery. It is not a user profile you create: it is the built-in administrator whose password is set via the --admin-pass launch parameter. All passwords in SmartGallery, including the admin password, must be at least 8 characters long. This admin account is shared across both the main interface and Exhibition, since both instances connect to the same user management panel.
admin, lowercase, and cannot be changed. The only thing you set is the password via --admin-pass. When logging in, use exactly: username admin, password whatever you passed to --admin-pass.If you launch the main interface on a local network without setting --admin-pass, SmartGallery detects this and lets you act as system admin automatically, with no login required. If SmartGallery detects that incoming requests are coming from outside the local network, it will ask you to relaunch with --admin-pass yourpassword --force-login to enforce authentication.
All user accounts beyond the system admin are assigned one of the following roles. The role determines which interface they can access and what they can do.
| Role | Main Interface | Exhibition | Workflows visible | Downloads | User management |
|---|---|---|---|---|---|
| Admin (system) | ✓ | ✓ | ✓ Full | Original + Workflow | ✓ Both interfaces |
| MANAGER | ✓ | ✓ | ✓ Full | Original + Workflow | ✓ Both interfaces |
| STAFF | ✓ | ✓ | ✓ Full | Original + Workflow | ✗ No |
| FRIEND | ✗ | ✓ | ✓ In file metadata | Original (with embedded metadata) | ✗ No |
| USER | ✗ | ✓ | ✗ Hidden | Metadata-stripped only | ✗ No |
| CUSTOMER / GUEST | ✗ | ✓ | ✗ Hidden | Metadata-stripped only | ✗ No |
The user management panel is shared between the main interface and Exhibition. Both instances connect to the same user database. It is accessible to Admin and MANAGER from either interface. STAFF has no access to user management.
User Management panel: role permissions table and user creation form.
--exhibition or --admin-pass + --force-login. In default single-user mode on a local network with no flags set, authentication is not required and you operate as system admin.
SmartGallery is designed for a fully keyboard-driven workflow. Shortcuts are split between the Main Interface and the Exhibition Portal.
These work anywhere in the application as long as you are not typing in a text field.
| Shortcut | Action |
|---|---|
| ? | Open Shortcuts Help panel |
| Q | Toggle Focus Mode (hides UI, enables keyboard-only grid navigation) |
| T | Scroll to Top and open Search / Filters panel |
| P | Toggle Video Autoplay on / off |
| L | Refresh view and sync with disk |
| K | Open Rescan Folder modal |
| Ctrl+A | Select all files in current view |
| Esc | Close any modal / overlay / menu, or deselect all |
| Home / End | Scroll instantly to top / bottom |
| PgUp / PgDn | Scroll page by page |
Hover over an item, or navigate to it with arrow keys while Focus Mode is active.
| Shortcut | Action |
|---|---|
| V or Enter | Open Lightbox (full screen view) |
| X or Space | Select / Deselect item |
| N | View Node Summary (ComfyUI generation data) |
| F | Toggle Favorite ⭐ |
| A | Add to / Remove from Virtual Collection |
| W | Download Workflow JSON |
| Shift+W | Clean Export: download file with all metadata stripped |
| C | Copy Workflow JSON to Clipboard |
| S | Download original media file |
| R | Rename file |
| E | Generate Video Storyboard (videos only) |
| G | Open Details Panel: rate the image, post or read comments, view collections it belongs to |
| Shift+R | Batch Rate: Opens the batch rating modal for selected files in the grid |
| Del | Quick delete (sends to trash) |
| Shortcut | Action |
|---|---|
| Click | Focus Mode off: opens Lightbox. Focus Mode on: selects item. |
| Ctrl+Click | Add single item to selection |
| Shift+Click | Select a range between two files |
| A | Add / Remove selection to / from a Collection |
| Y | Open Status Tagging modal |
| M | Move selected files to another folder |
| U | Remove selection from current Virtual Collection |
| Shift+R | Batch Rate: Opens the batch rating modal for selected files in the grid |
| Z | Download selection as a .zip archive |
| Del | Delete entire selection |
| Esc | Deselect all |
Works on a single hovered item or a batch selection.
| Shortcut | Action |
|---|---|
| 1 | Set Approved (Green) |
| 2 | Set Review (Yellow) |
| 3 | Set To Edit (Blue) |
| 4 | Set Rejected (Red) |
| 5 | Set Select (Purple) |
| 0 | Reset / Clear Status |
| Shortcut | Action |
|---|---|
| ← / → | Navigate previous / next media |
| + / - | Zoom in / out |
| 0 | Reset zoom and pan to fit screen |
| Mouse Drag | Pan zoomed image |
| T | Rotate media 90° |
| H | Hide / Show UI (clean view) |
| / | Open interactive Quick Menu |
| O | Open full-resolution file in new tab |
| N | View Node Summary |
| F | Toggle Favorite |
| A | Add to / Remove from Collection |
| Y | Set Status Tag |
| G | Open Ratings and Comments Panel |
| W | Download Workflow JSON |
| Shift+W | Clean Export (no metadata) |
| C | Copy Workflow JSON |
| R | Rename file |
| E | Generate Video Storyboard |
| M | Move file |
| S | Download media |
| Del | Delete file |
| Esc or V | Close Lightbox |
| Context | Shortcut | Action |
|---|---|---|
| Compare Mode | + / - | Synchronized zoom in / out |
| Compare Mode | 0 | Reset zoom |
| Compare Mode | I | Toggle Parameter Differences panel |
| Storyboard | ← / → | Navigate frames when a frame is zoomed in |
| Both | Esc | Close current mode |
These shortcuts are active in the client-facing Exhibition interface (exhibition.html). Simplified for a smooth viewing experience.
| Grid Navigation | |
|---|---|
| Shortcut | Action |
| ← ↑ → ↓ | Move keyboard focus across the grid |
| Enter or V | Open selected item in Theater (Lightbox) |
| Home / End | Jump to first / last item |
| PgUp / PgDn | Scroll page rapidly |
| ? | Open Shortcuts Help panel |
| Quick Rating (Grid and Theater) | |
|---|---|
| Shortcut | Action |
| 1 to 5 | Rate current item from 1 to 5 stars |
| 0 | Clear / Remove your rating |
| Theater (Lightbox) Viewer | |
|---|---|
| Shortcut | Action |
| ← / → | Navigate previous / next media |
| / | Open Quick Action Menu |
| H | Toggle Toolbar (clean view) |
| G | Toggle Ratings and Comments Panel |
| T | Rotate media 90° |
| + / - | Zoom in / out |
| 0 | Reset zoom and rotation |
| Mouse Drag | Pan zoomed image |
| S | Download media |
| O | Open full-resolution file in new tab |
| Esc | Close Theater |
This wiki is updated with each release. For the most current features, flags, and changelogs, always check the official repository.
View on GitHub