ai-toolkit-trainer
Train custom LoRAs with ostris AI-Toolkit. Covers WAN 2.2/2.1 (people, styles, video motion) and Z-Image (Turbo & Base, low-VRAM image LoRAs). Use when the…
Train a character/identity LoRA locally on FLUX.1-dev via the comfyui-mcp train_* tools (GPU Docker + ostris ai-toolkit). Use when the user wants to train a LoRA of a person/character from their photos on the local GPU. Covers dataset prep, launch, monitoring, and using the
$ npx -y skills add artokun/comfyui-mcp --skill train-character-lora --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/train-character-loraContext preview
The summary Claude sees to decide when to auto-load this skill.
Train a character/identity LoRA locally on FLUX.1-dev via the comfyui-mcp train_* tools (GPU Docker + ostris ai-toolkit). Use when the user wants to train a LoRA of a person/character from their photos on the local GPU. Covers dataset prep, launch, monitoring, and using the
name: train-character-lora description: Train a character/identity LoRA locally on FLUX.1-dev via the comfyui-mcp train_* tools (GPU Docker + ostris ai-toolkit). Use when the user wants to train a LoRA of a person/character from their photos on the local GPU. Covers dataset prep, launch, monitoring, and using the result in ComfyUI. For WAN/Z-Image training via the ai-toolkit UI see ai-toolkit-trainer. globs: - "**/*.json"
The trainer runs ostris ai-toolkit's `run.py` inside a headless GPU Docker container, driven through the three `train_*` MCP tools. You (the LLM) are the UI. Each takes an `action`: `train_prepare_dataset` owns the datasets, `train_start` owns the jobs, and `train_doctor` owns the trainer itself. You generate the dataset, launch the job, watch progress, and the finished LoRA lands in ComfyUI `models/loras/` and the LoRA catalog without further steps.
quantization, RTX 4090 class).
1. `train_doctor {action:"doctor"}`. Preflight once per session. Checks docker daemon, `--gpus all` GPU passthrough, trainer image, HF_TOKEN. If `image:false`, run `train_doctor {action:"build_image"}` (one-time, several minutes, since it builds CUDA plus torch plus ai-toolkit). If `hfTokenSet:false`, warn the user: the first run downloads FLUX.1-dev (gated HF repo) and needs `HF_TOKEN` in the MCP server env. 2. `train_prepare_dataset {action:"prepare"}`. Stage the images. See "Dataset" below. 3. `train_start {action:"start"}`. Launch. Returns a job id at once; training runs detached. 4. `train_start {action:"status", id}`. Poll progress (`progress.step/totalSteps/loss`, recent `samples`, `log` tail). Poll on a slow cadence (every few minutes). A 2000-step run is roughly an hour on a 4090. Don't block on it. 5. Done. `status:"completed"` means the `.safetensors` was copied to `models/loras/<name>.safetensors` and upserted into the LoRA catalog (`result` has the paths and catalog id). Verify by loading it in a Flux workflow (`LoraLoaderModelOnly`, strength 1.0) with the trigger word in the prompt.
Call `train_prepare_dataset {action:"prepare"}` with `name`, `items: [{path, caption?}, ...]` and a `defaultCaption`.
backgrounds, distances (close-up, half-body, full-body). Variety beats count.
real word. Use it as `defaultCaption` and pass it as `trigger` to `train_start`.
expression); the model learns the constant identity from the images themselves. Start each caption with the trigger word, e.g. `ohwx person sitting in a cafe, laughing, natural light`. Keep them short and factual. When in doubt, the trigger word alone (`defaultCaption`) is a workable baseline.
| Param | Default | When to change | |-------|---------|----------------| | steps | 2000 | 200 for a smoke test; 1500–3000 real runs. More ≠ better (overbake = plasticky). | | lr | 1e-4 | 5e-5 for a tighter/subtler identity. | | rank | 16 | 32 for very detailed characters. | | resolution | [512,768,1024] | [512] if VRAM-constrained. | | quantize | true | Keep true on 24GB. | | saveEvery / sampleEvery | 250 | Lower (100) to watch early progress. |
(ai-toolkit prints no saved-sample lines, so they populate at finalize from the output dir; mid-run you can look directly in the job's `output/<name>/samples/` folder.) Identity should be recognizable by ~1/3 of the run; if samples stay generic past halfway, the run will likely underfit. Cancel (`train_start {action:"cancel", id}`) and check captions and trigger.
run isn't a total loss.
`train_doctor {action:"doctor"}`, follow its hints.
batch stays 1.
job's `output/<name>/` dir. Copy it into `models/loras/` manually and upsert the catalog.
long as the log tail moves, it's fine. The HF cache persists across runs.
This project is no longer maintained. ComfyUI now ships official agent and MCP tooling — Comfy Agent and Comfy MCP — built and supported by the Comfy-Org team with deeper integration than a community project can match.
Repo: artokun/comfyui-mcp
Train custom LoRAs with ostris AI-Toolkit. Covers WAN 2.2/2.1 (people, styles, video motion) and Z-Image (Turbo & Base, low-VRAM image LoRAs). Use when the…
Anime/illustration text-to-image (ANIMA 1.0, ~2B Cosmos DiT). Use for anime, manga, illustrated characters; accepts Danbooru tags + natural language;…
Train a custom anime LoRA on the ANIMA base model with Citron's local Gradio trainer (kohya sd-scripts), <6GB VRAM, character/style LoRAs; covers setup,…
Discover Civitai models with the BUILT-IN download_model action:"search_civitai" and install/generate them locally. Find a checkpoint/LoRA/embedding on…
Diagnose and fix video/image color OBJECTIVELY with the get_image (action:"analyze_color") tool (scopes/stats such as black/white points, contrast, saturation,…
Core ComfyUI knowledge covering workflow format, node types, pipeline patterns, and MCP tool usage