End-to-end pipeline: scrape from Booru → curate → tag → reg set → train → image testing, all driven from a single browser panel. Optimized for Anima (Cosmos DiT, anime-tuned) training.

runtime/anima_train.py) is decoupled from the Studio backend and can be invoked via standalone CLI or spawned by Studio as a subprocessruntime/training/README.md and ADR 0003)8-step pipeline + tool pages:
Common panels:
These are not installed by Studio and must be ready beforehand:
python from PATH)npm on PATH)git clone https://github.com/WalkingMeatAxolotl/AnimaLoraStudio
cd AnimaLoraStudio
# Windows
studio.bat
# Linux / macOS
./studio.sh
On first run, the launcher automatically: creates venv/ → installs the matching CUDA torch (cu118 through cu130) based on detected GPU driver → installs requirements.txt → installs onnxruntime based on GPU detection → builds the frontend → starts the backend → opens the browser to http://127.0.0.1:8765/studio/.
If GPU detection falls back to CPU torch, you can reinstall the CUDA build from Settings → System → PyTorch with one click, or specify it explicitly via
studio.bat --torch cu128(orstudio.sh --torch cu128).
Alternative launch (equivalent, useful when calling python directly):
python -m studio # Build frontend if missing, then start backend
python -m studio dev # Watch mode: vite 5173 + uvicorn 8765 --reload
python -m studio build # Build frontend only
python -m studio test # pytest + vitest
After launch, go to Settings → Models and click to download all required weights and tokenizers.
The default source is the official huggingface.co. Users with slow connections can go to Settings → Training → HuggingFace → endpoint and switch to "Custom URL" to paste a self-hosted mirror, or switch to Settings → Training → Download source → ModelScope (direct connection to ModelScope, requires pip install modelscope). CLI users can override via python tools/download_models.py --endpoint URL or --modelscope.
Downloaded content (defaults to ./models/):
| Item | Source | Path | Size |
|---|---|---|---|
| Anima base model (latest = 1.0) | circlestone-labs/Anima | models/diffusion_models/ | ~4 GB |
| Anima VAE | Same | models/vae/ | ~250 MB |
| Qwen3-0.6B-Base text encoder | Qwen/Qwen3-0.6B-Base | models/text_encoders/ | ~1.2 GB |
| T5 tokenizer (3 files only, no weights) | google/t5-v1_1-xxl | models/t5_tokenizer/ | <1 MB |
Or via CLI (shares the same code as the UI):
python tools/download_models.py # Download everything (official HF)
python tools/download_models.py --endpoint URL # Use self-hosted mirror
python tools/download_models.py --modelscope # Use ModelScope
python tools/download_models.py --variant preview3-base
python tools/download_models.py --skip-main --skip-vae
python tools/download_models.py --output /data/anima
WD14 tagger models are not in this list — they are auto-downloaded from HF to models/wd14/ on first use of the tagging step.
Open http://127.0.0.1:8765/studio/:
After training, the sidebar Test page provides single-image generation / XY matrices / inference daemon for LoRA evaluation. Prompts can be pulled directly from the training set, eliminating round trips to ComfyUI.
The LoRA weights produced are already in lora_unet_* format and can be dropped directly into ComfyUI without any conversion.
AnimaLoraStudio/
├── runtime/ # Anima runtime core (standalone process; launched by Studio as a subprocess or run via CLI)
│ ├── anima_train.py # Training entry
│ ├── training/ # Training stack subpackage: context / phases / loop / sample_runner
│ │ ├── adapters/ # plugin: lokr / loha / lora
│ │ ├── optimizers/ # plugin: adamw / prodigy / prodigy_plus_schedulefree
│ │ ├── schedulers/ # plugin: cosine / cosine_with_restart / none
│ │ ├── inference_samplers/ # plugin: er_sde, etc.
│ │ └── phases/ # bootstrap / models / dataset / optimizer / resume / finalize
│ ├── anima_generate.py # Image generation: single image / XY matrix
│ ├── anima_daemon.py # Inference daemon: keeps the base model and LoRA loaded in GPU
│ ├── anima_reg_ai.py # AI prior generation: no LoRA, base model produces reg set
│ └── train_monitor.py # Training state writer
├── studio/ # AnimaStudio Web workbench (FastAPI + React)
│ ├── server.py # Daemon entry
│ ├── services/ # Business logic (uploads / tagging / reg set / inference_core /
│ │ # torch_setup / xformers_setup / flash_attention_setup, etc.)
│ ├── workers/ # Background subprocesses (download / tag / reg_build)
│ └── web/ # React + Vite frontend
├── tools/ # User CLI / launcher-time setup helpers
│ ├── download_models.py # One-click download of base model / VAE / Qwen3 / T5 tokenizer
│ ├── install_flash_attn.py # One-click flash_attn wheel install
│ ├── select_torch_index.py # GPU-aware torch CUDA index selection (auto-called at launch)
│ ├── check_requirements_changed.py # venv stale detection (auto-called at launch)
│ └── validate_local_models.py # Validate local Qwen / T5 for offline loading
├── docs/ # Three sections: user-guide / architecture / adr (see docs/README.md)
├── utils/ # Shared utilities for anima_train (model loader / optimizer / lycoris_adapter / ...)
└── models/ # Model code + bundled tokenizer files + downloaded weights (mixed)
├── anima_modeling*.py # tracked: PyTorch implementation of Anima Cosmos transformer
├── cosmos_predict2_modeling.py
├── wan/vae2_1.py # tracked: Wan2.1 VAE implementation
├── text_encoders/ # tracked: Qwen tokenizer files + user-downloaded model.safetensors
├── t5_tokenizer/ # tracked: T5 tokenizer files (no weights)
├── diffusion_models/ # User-downloaded Anima base model (gitignored)
├── vae/ # User-downloaded VAE weights (gitignored)
├── wd14/ # WD14 ONNX models (auto-downloaded from HF, gitignored)
└── taeflux/ # TAEFlux intermediate preview weights (gitignored)
Runtime data (gitignored):
studio_data/ — SQLite + user presets + task logs + per-task monitor state + samplesmodels/diffusion_models/, models/vae/, models/wd14/ — large weight filesstudio_data/projects/{id}-{slug}/versions/{label}/output/ — trained LoRA artifactsThe CLIs under tools/ share the same services/ code as the Studio UI, convenient for headless environments:
| Script | Purpose |
|---|---|
tools/download_models.py | One-click download of base model / VAE / Qwen3 / T5 tokenizer. Multiple variants supported, with --no-mirror / --endpoint URL flags |
tools/install_flash_attn.py | Auto-select and install the flash_attn wheel matching your torch ABI |
tools/select_torch_index.py | Detect GPU and recommend the matching PyTorch CUDA index URL (cu130 / cu128 / ...) |
tools/validate_local_models.py | Validate that local Qwen / T5 can be loaded offline |
The runtime scripts under runtime/ (anima_train / anima_generate / anima_daemon / anima_reg_ai) can also be run standalone via CLI — see each script's top-level docstring.
Documentation entry: docs/README.md. Three sections:
User-facing (docs/user-guide/)
Developer-facing
Collaboration conventions
Historical decisions (docs/adr/)
Version history
Current version is 0.9.0. See CHANGELOG.md for the full history. The Settings → System → version card inside Studio allows one-click upgrade to the latest version.
The repository is released under GPL-3.0 as a whole (includes / derives from ComfyUI's GPL-3.0 code).
Some Apache-2.0 third-party implementations (NVIDIA Cosmos / Wan2.1, etc.) are also included; please preserve their original file headers. See:
LICENSE (GPL-3.0)LICENSE-APACHE (Apache-2.0 text, applies to in-repo Apache-2.0 components)THIRD_PARTY_NOTICES.mdModel weights (Anima / Qwen / VAE) have their own terms (including Non-Commercial restrictions); refer to the corresponding model card / HF repo for the applicable license.