| Python | License | Deploy | Quality |
|---|---|---|---|
Train, tag, and generate — a full LoRA & checkpoint training suite with ComfyUI built in.
A web interface built on Kohya SS. Prepare datasets, auto-tag, train across many model types (SDXL, Flux, SD3, Lumina, Anima…), then generate and test results in a bundled ComfyUI workspace.
- GPU: NVIDIA with CUDA 12.1+
- Disk: 50 GB+ free space
| GPU | Status |
|---|---|
| NVIDIA (CUDA 12.1+) | Fully supported |
| AMD (ROCm) | Community supported — see AMD ROCm docs |
| NVIDIA via ZLUDA | Community supported — see ZLUDA |
| CPU-only | Not recommended for training; tagging/captioning will work |
While baseline VRAM requirements can be high, the community has figured out plenty of workarounds to train on constrained hardware.
- Python: 3.10, 3.11, or 3.12
- Node.js: 20.19+ (22.x recommended)
- Git
Full platform requirements are in documentation/installation/INSTALLATION.md.
Windows Users: Install to a path you own (e.g.
C:\Users\YourName\Projects\). Restricted system directories (C:\,Program Files, OneDrive folders) will cause permission errors.
Windows:
git clone https://github.com/UselessToys/Ecosystem_WebUI.git
cd Ecosystem_WebUI
install.batLinux:
git clone https://github.com/UselessToys/Ecosystem_WebUI.git
cd Ecosystem_WebUI
./install.shBoth scripts will prompt about creating a virtual environment. Pass --venv or --no-venv to skip the prompt; --auto for fully unattended install.
ComfyUI (image generation) installs by default — including on cloud. To skip it, pass --no-comfyui (e.g. install.bat --no-comfyui, ./install.sh --no-comfyui, or python installer.py --no-comfyui on a remote instance).
Cloud: Use the VastAI or RunPod deploy buttons. Both auto-configure on launch.
# Default: frontend on 3000, backend on 8000
start_services_local.bat # Windows
./start_services_local.sh # Linux
# Custom ports
start_services_local.bat --port 4000 --backend-port 9000
./start_services_local.sh --port 4000 --backend-port 9000
# Quick restart without reinstall
restart.bat # Windows
./restart.sh # Linux
# Restart with Reinstall + Restart supervisory process (Remote only)
bash fetch-restart.sh
./fetch-restart.sh
URLs:
- Frontend: http://localhost:3000
- Backend API: http://localhost:8000
- API docs: http://localhost:8000/docs
git pull
install.bat # Windows
./install.sh # LinuxIf reinstalling doesn't fix the problem:
# Preview what will be removed (dry run)
python clean_slate.py --dry-run
# Remove build artifacts, venvs, node_modules, caches (preserves models/datasets/outputs)
python clean_slate.py
# Also remove models, VAEs, datasets, and outputs
python clean_slate.py --nuclearDataset preparation:
- Drag-and-drop upload (individual files, zip archives, URLs)
- WD14, BLIP, and GIT auto-tagging
- Tag editor with bulk add / remove / replace, frequency viewer, and image gallery
Training:
- Supported models: SDXL, SD1.5, Flux, SD3/SD3.5, Lumina, Anima, HunyuanImage
- LoRA types: Standard, LoCon, LoHa, LoKr, DoRA
- 40+ community presets (AdamW8bit, CAME, Prodigy, AdaFactor, Compass, Lion8bit, and more)
- Live training monitor: step count, loss, learning rate, ETA
- Preset system with form persistence
Models:
- Civitai browser: search, filter, and download models directly into your local folders
- Arc En Ciel browser: browse and download from multiple model sources with unified search
- HuggingFace downloads for training base models
- LoRA Manager for batch downloading from Civitai and HuggingFace via Python or Aria2
Image generation (ComfyUI):
- Bundled ComfyUI workspace, installed by default (local and cloud) — generate images to test your trained models without leaving the app
- LoRA Manager for browsing and applying your LoRAs
Utilities:
- LoRA merge, resize, and metadata editing
- 24+ checkpoint merge modes via Chattiori (WS, DARE, cosine blending, ReBasin, and more)
- LoRA-to-checkpoint baking (multi-LoRA bake across all architectures)
- HuggingFace upload after training
Tests validate the API and service layer without requiring a GPU, PyTorch, or a training run. The ML stack is mocked at the subprocess boundary.
# Install dev dependencies
pip install -r requirements_dev.txt
# Run all tests (~5 seconds, no GPU needed)
pytest tests/test_api_plumbing.py -v
# Skip tests that require real hardware
pytest tests/ -m "not slow"| Area | Coverage |
|---|---|
| Path validation | Drive-letter casing; out-of-bounds paths rejected |
| Training endpoint | Validation failures return success=False; malformed payloads get 422 |
| Subprocess launch | -u flag and PYTHONUNBUFFERED=1 present for log streaming |
| Config paths | TOML config dir anchored to project root |
| Job failure logging | Full traceback written to app.log on crash |
| Log buffer | Subprocess stdout lines reach the buffer the UI polls |
New tests go in tests/. Tests requiring a real GPU: mark with @pytest.mark.slow.
- Installation Guide — full platform setup, manual installation, troubleshooting
- Beta-Planning — Bug Tracking and Beta Planning.
- Integration Strategy — Workflow Planning with Comfyui in mind.
- Attribution - Full Credits and Licenses.
- General Guides — usage documentation
- Training: General
- Training: SDXL
- Training: Flux
- Training: SD3
- Training: Anima
- LyCORIS Algorithms
- Contributing · Security
- GitHub Issues — bug reports and feature requests
When reporting a bug, include error messages, logs (logs/app_YYYYMMDD.log), and the output of:
diagnose.bat # Windows
./diagnose.sh # LinuxLicense: MIT — see LICENSE