⚠️ Work in Progress — MooshieUI is under active development. Some features are incomplete or may have rough edges. Contributions and feedback are welcome!
A modern, beginner-friendly desktop frontend for ComfyUI. Built with Svelte 5 + Tauri (Rust), MooshieUI hides ComfyUI's node-graph complexity behind a clean, intuitive interface — no workflow editing required.
Features marked with ✅ are implemented. Features marked with 🔧 work but need polish.
| Mode | Status | Description |
|---|---|---|
| Text to Image | ✅ | Generate images from scratch using positive & negative prompts |
| Image to Image | ✅ | Transform existing images with adjustable denoise strength |
| Inpainting | ✅ | Selectively edit parts of images using a built-in canvas editor with mask painting |
Switch between modes with a single click — all settings carry over.
- Positive & Negative Prompts — Multi-line text areas, manually resizable height
- Checkpoint Selector — Searchable dropdown, auto-populated from ComfyUI, with recommended models (auto-download on selection with progress bars and file size display)
- VAE Selector — Optional override (defaults to checkpoint's built-in VAE)
- LoRA Support — Add unlimited LoRAs with independent model/CLIP strength sliders (0–2), per-LoRA enable/disable toggle, searchable dropdown, and active count badge
- Sampler & Scheduler — All ComfyUI samplers and schedulers available
- Steps — 1 to 150 (slider)
- CFG Scale — 0 to 30 with 0.1 precision (number input + slider)
- Seed — Fixed or random (-1 for new seed each generation)
- Batch Size — Generate 1–8 images per prompt
- Denoise Strength — 0 to 1 for img2img and inpainting modes
- Aspect Ratio Presets — 1:1, 4:3, 3:2, 16:9, 21:9, 3:4, 2:3, 9:16
- Custom Aspect Ratio — Enter any width/height, ratio is maintained when adjusting resolution
- Swap Dimensions — One-click width↔height swap
- Resolution Slider — 64px to 2048px, automatically calculates dimensions from your aspect ratio
Built-in upscaling with MultiDiffusion tiled diffusion — the same approach used by SwarmUI. No slow tile-by-tile processing; all tiles are denoised simultaneously each step for seamless, high-quality results.
- Model-based — Uses dedicated upscale models (e.g., Omni-SR). Scale is determined by the model (2x, 4x, etc.)
- Algorithmic (Lanczos) — Fast pixel-space upscaling with adjustable 1–4x scale
When you select a recommended model that isn't installed, MooshieUI automatically downloads it to ComfyUI's models/upscale_models/ directory:
| Model | Scale | Size | Source |
|---|---|---|---|
| Omni 2x (Recommended) | 2x | ~1.6 MB | Acly/Omni-SR |
| Omni 4x (Recommended) | 4x | ~1.6 MB | Acly/Omni-SR |
Any other upscale models you place in models/upscale_models/ will also appear in the dropdown.
- Toggle on/off per generation — recommended for large images and required for Anima (COSMOS) models
- Adjustable tile size (256–2048px)
- Uses cosine-feathered blending for seamless tile boundaries
- Supports both MultiDiffusion and SpotDiffusion algorithms
- Denoise — 0 to 1 (lower = more detail preservation from original)
- Steps — 1 to 50
Hover over any generated image to reveal an Upscale button — instantly upscale the last output without changing your settings.
- Persistent Gallery — All generated images are saved to disk and available across sessions
- Thumbnail Grid — Responsive grid with sorting by date
- Lightbox — Click any image to view full-size; scroll-wheel zoom at cursor, Escape or click-outside to close, double-click to reset zoom
- Image Management — Rename, delete, copy to clipboard, and upscale from the gallery
- Generation Mode Labels — Each image shows whether it was created via txt2img, img2img, or inpainting
- Live Preview — See the image as it's being generated (latent previews streamed via WebSocket)
- Phase Labels — "Generating...", "Upscaling...", or "Preparing..." with step counter
- Progress Bar — Smooth animated bar (indigo for generation, emerald for upscale pass)
- Cancel Button — Interrupt any generation in progress
All settings are automatically saved to disk and restored on next launch:
- Generation mode, prompts, model selections
- Sampler, scheduler, steps, CFG, seed, dimensions
- All upscale settings (enabled, method, model, tiling, etc.)
- Three-panel layout — Image settings (left), preview (center), model & sampler settings (right)
- Resizable panels — Drag dividers between panels to adjust widths
- Resizable prompts — Drag prompt text areas to adjust height
- Auto-connect to ComfyUI on startup
- Status indicator — Green/red dot shows connection state with version number
- WebSocket streaming — Real-time progress, previews, and completion events
- Works with both local and remote ComfyUI instances
- Silent background process — ComfyUI runs without any visible terminal windows (Windows)
- Hash-based identification — Models are recognized by SHA256 hash (CivitAI AutoV2 format), not just filename — renamed files are still detected
- CivitAI integration — Look up any model's metadata (name, version, preview images) via CivitAI's hash database
- Recommended models — SIH-1.5 (~7.5 GB) and Anima Preview 2 (~13 GB) auto-download on selection with real-time progress bars and file size display
MooshieUI
├── src/ # Svelte 5 frontend (UI)
│ ├── App.svelte # Main app shell, gallery, WebSocket listeners
│ ├── lib/
│ │ ├── components/ # UI components
│ │ │ ├── generation/ # Model selector, prompts, dimensions, upscale
│ │ │ ├── canvas/ # Inpainting canvas editor (WIP)
│ │ │ ├── progress/ # Live preview and progress display
│ │ │ ├── setup/ # Setup wizard with streaming installer
│ │ │ └── ui/ # Shared UI components (tooltips, etc.)
│ │ ├── stores/ # Svelte 5 rune-based state ($state, $derived)
│ │ ├── types/ # TypeScript interfaces
│ │ └── utils/ # Tauri API bridge (models, gallery, hashing, CivitAI)
├── src-tauri/ # Rust/Tauri backend
│ └── src/
│ ├── commands/ # Tauri command handlers (API, config, server, WebSocket)
│ ├── comfyui/ # ComfyUI API client, WebSocket, process management
│ ├── setup.rs # One-click installer (uv, Python, ComfyUI, PyTorch)
│ └── templates/ # Workflow builders (txt2img, img2img, inpainting, upscale)
└── comfyui-nodes/ # Custom ComfyUI nodes (install into comfy_extras/)
└── nodes_tiled_diffusion.py
How it works:
- User adjusts settings in the Svelte UI
- On "Generate", settings are sent to the Rust backend via Tauri
invoke() - Rust builds a ComfyUI workflow JSON from templates (no node graph exposed)
- Workflow is submitted to ComfyUI's
/promptAPI - WebSocket streams progress/previews back to the UI in real-time
MooshieUI handles everything automatically on first launch:
- Download a release from Releases (Windows/Linux artifacts)
- Run the app — the setup wizard will:
- Download uv (fast Python package manager)
- Install Python 3.11 (isolated, won't affect your system)
- Download ComfyUI (latest from GitHub)
- Create a virtual environment
- Auto-detect your GPU (NVIDIA CUDA / AMD ROCm / CPU)
- Install PyTorch with the right acceleration backend
- Install all ComfyUI dependencies
- Install MooshieUI's custom nodes
- Start generating — ComfyUI launches automatically
The installer shows real-time terminal output streamed as a matrix-style backdrop behind the setup UI, with per-step progress bars and a checklist so you always know what's happening. No separate terminal windows are opened.
No Python, no pip, no manual configuration required. Everything is self-contained in the app's data directory.
Disk space: ~5–10 GB (Python + PyTorch + ComfyUI). Installation takes 5–15 minutes depending on your internet connection.
macOS prebuilt release artifacts are currently disabled. On macOS, use a source build:
Prerequisites:
- Node.js 18+
- Rust (latest stable)
- Xcode Command Line Tools (
xcode-select --install) - Tauri prerequisites — see Tauri v2 docs
# Clone the repository
git clone https://github.com/Mooshieblob1/MooshieUI.git
cd MooshieUI
# Install dependencies
npm install
# Development mode
npm run tauri dev
# Production build
npm run tauri buildAfter first launch, the setup wizard still installs ComfyUI/Python/PyTorch automatically.
If you want to build from source:
Prerequisites:
- Node.js 18+
- Rust (latest stable)
- Tauri prerequisites — see Tauri v2 docs
# Clone the repository
git clone https://github.com/Mooshieblob1/MooshieUI.git
cd MooshieUI
# Install frontend dependencies
npm install
# Run in development mode (hot-reload)
npm run tauri dev
# Build for production
npm run tauri buildThe app will run the one-click setup wizard on first launch — no manual ComfyUI installation needed.
MooshieUI ships with a custom ComfyUI node (nodes_tiled_diffusion.py) that implements:
Bar-Tal et al., "MultiDiffusion: Fusing Diffusion Paths for Controlled Image Generation", ICML 2023
- Splits the latent into overlapping tiles at each denoising step
- All tiles are denoised in parallel (not one-by-one)
- Results are blended using cosine (Hann window) feathering
- Seamless output with no visible tile boundaries
Ding et al., 2024
- Applies random circular shifts before non-overlapping tiling
- Even faster than MultiDiffusion (no overlap computation)
- Seams are eliminated by randomization across many steps
Both methods:
- Work with all model architectures (SD 1.5, SDXL, Flux, COSMOS/Anima)
- Automatically detect the model's latent downscale ratio
- Support ControlNet (proportional cropping/shifting per tile)
- Handle inpainting conditioning (c_concat)
- Image upload for img2img and inpainting modes
- Inpainting canvas — paint masks directly on images in the UI
- Queue management page — view and cancel queued generations
- Settings page — configure ComfyUI connection, paths, defaults, and extra args
- Gallery upscale button — upscale any image from the gallery grid or lightbox
- Anima Preview 2 support — auto-download split model (diffusion + CLIP + VAE), quality prompt injection, optimized defaults
- SIH-1.5 support — auto-download checkpoint + VAE on selection, with file size display
- CFG++ auto-detect — soft-sets CFG to 1.4 when selecting CFG++ samplers
- Info tooltips — hover (?) icons explain technical settings in plain English
- Collapsible settings sections — with search bar to filter settings
- Live generation preview — latent previews streamed via WebSocket during KSampler
- Phase-aware progress — shows "Generating..." / "Upscaling..." / "Preparing..." with step counters
- 5D latent tiled diffusion — MultiDiffusion/SpotDiffusion compatible with Anima (COSMOS) models
- Lightbox zoom & dismiss — scroll-wheel zoom at cursor, Escape/click-outside to close, pan with left or middle mouse
- Clipboard copy as file — copies gallery images as file references (preserves format & metadata)
- Windows & Linux builds — cross-platform CI releases (Windows .msi/.exe, Linux .deb/.AppImage)
- Hash-based model detection — SHA256/AutoV2 hash identification with CivitAI API integration, models recognized even if renamed
- Installer UX overhaul — streamed terminal backdrop, per-step progress bars, download progress with bytes/total, no separate terminal windows
- Persistent gallery — images saved to disk across sessions with rename, delete, and management
- Gallery boards — organize images into named boards/folders
- Version display — app version shown in sidebar below connection status
- Download progress — real-time progress bars with file size for all model downloads (checkpoints, VAEs, upscale models)
- Drag & drop — drop images and masks directly into img2img/inpainting inputs
- Image metadata (SwarmUI-compatible) — embed generation params as SwarmUI JSON into PNG text chunks, read them in lightbox with resizable side panel, backward-compatible with A1111 format
- Prompt history & favorites — auto-saves generated prompts with quick reload and starring
- Style presets (Fooocus-style) — one-click style modifiers for beginner-friendly prompting
- Shared model directory — point to an external/shared models folder from settings
- Model-specific presets — auto-applies defaults based on detected model architecture
- Model Hub — browse CivitAI models with image previews and metadata directly in the app; download with one click; HuggingFace direct URL support; NSFW content filtering with blurred badges; API key setup with guided instructions; expanded base model filters (NoobAI, Pony, Illustrious, SD 3.5, Flux, etc.)
- ModelSpec support — reads Stability AI ModelSpec metadata from safetensors headers; displays model title, author, architecture, resolution, trigger phrases (click to add to prompt), tags, and usage hints in the model selector
- Native clipboard — copies images via native OS clipboard (Wayland
wl-copyand X11xclipwith automatic detection) - Auto-update — check for and apply MooshieUI updates in-app
- ControlNet support — depth, canny, pose, and other control methods with preset-based and custom modes, image upload/paste/drag-drop, preprocessor installation, strength/start/end controls (SD 1.5, SDXL, Illustrious/NoobAI — not available for Anima/COSMOS models)
- Dark & light mode — toggle between dark and light themes in settings
- Draggable two-column layout — drag sections between left/right columns and reorder them; layout persists across sessions
- Manual ComfyUI start — optional toggle to start ComfyUI manually instead of on app launch
- Movable installation — relocate the ComfyUI data directory to another drive from settings
- Face Fix (FaceDetailer) — built-in lightweight face detection and re-denoising using YOLOv8, bundled as a custom node (no Impact Pack dependency); configurable denoise, steps, guide size, and detector model with auto-download
- Batch queue — queue multiple generations with different settings
- Streaming final outputs — final PNGs stream over WebSocket via
MooshieSaveImage(no output fetch disk round-trip) - 16-bit output mode — selectable 8-bit/16-bit PNG output in generation settings
- Metadata modes —
Text Chunk,Stealth Alpha, andBothwith 16-bit compatibility upgrade toBoth - Metadata reuse actions — lightbox actions for
Reuse Settings,Remix, andReuse Seed - Preview tips carousel — idle preview area shows rotating, auto-cycling tips with manual navigation
- Metadata drag-and-drop import — drag images onto generation sections to import specific settings, or drop on preview to apply all; Ctrl+V paste supported; auto-strips duplicate quality tags
- Face fix auto-setup — auto-downloads detection model and installs ultralytics on first use
- Seed recall — toggling off random seed recalls the last generated seed
- Theme customization — custom accent colors and themes
- Localization — multi-language support
- Video generation — AnimateDiff / COSMOS video workflows
- Training UI — LoRA training from within the app
- Plugin system — extend MooshieUI with custom panels and features
- Cloud rendering — option to offload generation to remote GPUs
- PWA Support — allowing users to host their own instances of MooshieUI to present as a webapp
UI Density, Click-to-Edit Values, Dynamic Release Notes
- Tightened spacing across all generation sections, sticky headers, and controls to reduce scrolling
- Added collapsible left, right, and bottom panels with toggle buttons — panels remember their size
- Narrower sidebar (cleaner layout with smaller nav buttons and icons)
- Sampler settings reworked into compact 2-column grid layout
- Click-to-edit slider values — click any slider readout (Steps, CFG, Batch, Denoise, Scale, Tile Size, etc.) to type an exact value
- Settings page now uses responsive masonry layout (1/2/3 columns)
- Release notes in Settings now fetched live from GitHub Releases instead of hardcoded changelog
- Fixed pip install errors when using uv-created virtual environments (uv pip install fallback)
- Quality prompts badge moved inline with Positive Prompt label
Metadata Import, Face Fix Auto-Setup, Windows Fixes
- Drag-and-drop or Ctrl+V images onto generation sections to import metadata (prompts, sampler, dimensions, model, upscale) — or drop on the preview area to apply all parameters
- Imported prompts automatically strip quality tags already applied by the app to avoid duplication
- Face fix now auto-downloads the detection model and installs ultralytics before generating — no manual setup needed
- Toggling off "Random" seed now recalls the last generated seed instead of resetting to 0
- Fixed drag-and-drop not working on Windows (disabled Tauri native drag handler intercepting HTML5 events)
- Fixed gallery thumbnails not loading on Windows (cross-platform protocol URL fix via
convertFileSrc) - Smooth scroll improved with time-based interpolation for consistent frame rates
Model Integrity & Thumbnail Recovery
- Fixed recommended models (Anima, SIH) incorrectly showing as installed when VAE or text encoder components are missing — all components are now verified
- Selecting a recommended model now downloads only the missing components instead of skipping entirely
- Fixed gallery thumbnails appearing broken/dead after app update or relaunch (added retry logic, fixed query param parsing, removed aggressive caching)
- Added SwarmUI
Models/anddlbackend/comfyui/models/paths to external model directory scanning for broader compatibility - App now stops ComfyUI before restarting during updates, preventing orphan processes
Quality Tag Controls
- Added option to disable automatic quality tag injection (Settings > Performance)
- Confirmation popup warns users about quality impact before disabling
- Removed quality tags from prompt placeholder text (tags are auto-applied, no need to suggest them)
- Added preview tip for users with auto quality tags disabled suggesting to re-enable if results are poor
Model Category Filtering
- Fixed LoRAs, upscale models, VAEs, and other non-checkpoint files appearing in the checkpoint dropdown when using external model directories (SwarmUI, A1111, etc.)
- Added server-side path-prefix filtering to exclude models whose directory path indicates they belong to a different category (e.g. entries starting with
Lora\,upscale_models\,yolov8\are excluded from checkpoints) - Same filtering applied to LoRA list to exclude checkpoint/VAE/upscale entries
Extra Model Paths Fix
- Fixed LoRA files in external model directories (SwarmUI, A1111, etc.) incorrectly appearing as checkpoints
- Removed wildcard
.base scan from all categories in extra_model_paths YAML — each category now only scans its specific subdirectories, preventing cross-contamination - Added
Stable-Diffusion(SwarmUI naming) to checkpoint path detection
Anima Quality Tags + Changelog Fix
- Fixed Anima positive quality tags (
year 2025, newest, masterpiece, ...) now prepended before the user prompt instead of appended after — matches the correct tag ordering for Anima/COSMOS models - Fixed custom node deployment unreachable when ComfyUI is started externally (non-AutoLaunch mode)
- Fixed in-app changelog in About section stuck on v0.2.6–v0.2.9 — now shows all versions through v0.3.3
Custom Node Deployment Hotfix
- Fixed "Node MooshieSaveImage not found" error caused by silent failure during custom node deployment
ensure_mooshie_nodesnow returns a proper error instead of silently continuing when node files can't be written
Updater Hotfix
- Fixed updater 404 issue caused by release tag/version filename mismatches in
latest.json - Release pipeline now generates updater URLs/signature references from actual built artifact names
- Bumped app versioning to
0.3.1across frontend, Tauri config, and Rust crate for consistent release metadata
Streaming Output Pipeline + 16-bit Support
- Added
MooshieSaveImageoutput node to stream final PNG bytes over WebSocket instead of relying on ComfyUI disk output round-trips - Added optional 16-bit PNG output mode (
8-bit/16-bit) exposed in generation settings and passed through workflow params - Added Rust-side
save_to_gallery_bytescommand so streamed images can be persisted directly from in-memory bytes - Added WebSocket binary event handling for Mooshie output payloads, including prompt association and 16-bit timing diagnostics
Metadata Embedding + Compatibility
- Added metadata mode options:
Text Chunk,Stealth Alpha, andBoth - Implemented SwarmUI-compatible stealth alpha embedding/reading with gzip payload support and 8-bit/16-bit handling
- Added automatic compatibility policy for 16-bit PNGs: if
Stealth Alphais selected, effective save mode upgrades toBoth - Added UI feedback for the upgrade so users can see effective metadata behavior while 16-bit is active
Queueing + Gallery Workflow
- Reworked generation progress state to support queued prompts and active-prompt tracking
- Updated generate/cancel controls to support queueing, cancel current, and cancel-all behavior
- Switched output finalization path to use streamed images and persist metadata-rich gallery entries from memory
- Added lightbox metadata actions:
Reuse Settings,Remix(random seed), andReuse Seed
Sampler + Model UX Improvements
- Added model-aware recommendation cards for Anima and SIH in sampler settings
- Updated Anima defaults to practical baseline values: 30 steps, CFG 4, sampler
er_sde, schedulersgm_uniform - Face-fix and upscale steps now track model recommendations (1/3 of primary steps in recommendation paths)
- Added sampler-aware recommended ranges for steps/CFG with one-click fix actions
Preview + Readability Improvements
- Replaced idle preview placeholder with a rotating tips carousel (manual arrows + scroll wheel + auto-cycle)
- Added progress indicator for tip auto-cycle and tuned dwell time for readability
- Added light/dark support in preview idle UI styling
Other UI/Behavior Updates
- Simplified
InfoTipto native title/aria tooltip behavior - Improved dimension-control synchronization to reflect persisted/updated generation dimensions
Face Fix (FaceDetailer)
- Added built-in face detection and re-denoising — detects faces with YOLOv8, crops each to a configurable guide size, re-denoises, and composites back seamlessly with feathered blending
- Lightweight custom
MooshieFaceDetailernode bundled with the app — replaces the heavyweight Impact Pack dependency entirely - Node auto-deploys to ComfyUI's
custom_nodes/on every startup via Rustinclude_str!embedding — no manual installation or restarts needed - Configurable settings: denoise strength, steps, guide size, and detector model selector
- Auto-download YOLOv8 face detection models (yolov8m recommended, yolov8n lightweight) with progress bars
- Compatible with video VAEs (WanVAE/Anima) — handles 5D tensor output gracefully
UI Improvements
- Mode selector (Text to Image / Image to Image / Inpainting) now stays pinned at the top of the panel when scrolling
- Session history paginated to 4 images per page with prev/next controls — auto-jumps to first page on new generations
- Session history images are now clickable to open in the lightbox — action buttons moved to bottom of thumbnail overlay
- Removed horizontal scrollbar from the left panel
- ControlNet section auto-hidden for Anima/COSMOS models (not supported)
- Fix installation move breaking setup and path resolution
| Layer | Technology |
|---|---|
| Frontend | Svelte 5, TypeScript, Tailwind CSS 4 |
| Desktop | Tauri v2 (Rust) |
| State | Svelte 5 runes ($state, $derived) |
| Persistence | @tauri-apps/plugin-store, localStorage |
| Backend API | ComfyUI REST + WebSocket |
| Model API | CivitAI REST API (hash-based model lookup) |
| Styling | Tailwind CSS with neutral/indigo theme |
This project is licensed under the MIT License.

