Manually validate mflux CLIs by exercising the changed paths and reviewing output images/artifacts.
Some regressions (especially in CLIs and image IO) are easiest to catch by running the commands and visually inspecting outputs. This skill provides a lightweight, change-driven manual test checklist.
src/mflux/models/**/cli/.uv tool install --force --editable --reinstall .
mflux-save for the affected model(s) and verify:--model /full/path/to/saved-model and confirm it runs and produces a sane image.--stepwise-image-output-dir and confirm:--low-ram and confirm:--make-conf and confirm that the CLI writes the .metadata.json sidecar and that it looks consistent.mflux does not install diffusers; use a sibling clone (commonly ../diffusers on Desktop).
When: validating a new MLX port before merge, or when golden tests / visuals look wrong.
Match settings: same prompt, width, height, seed, steps, guidance. For fair speed comparisons, match precision (mflux bf16 vs diffusers bf16, not -q 8 vs bf16).
diffusers setup tips (read the reference pipeline first):
model_index.json / from_pretrained kwargs with mflux get_download_patterns() — disable or pass None for components mflux does not loadlocal_files_only=True / HF_HUB_OFFLINE=1 to use cache and surface missing files earlyRun both:
# mflux
uv run mflux-generate-<model> --prompt "..." --width 640 --height 368 --seed 7 --steps 8 --guidance 1.0 --output /tmp/mflux.png
# diffusers (from diffusers repo)
cd ../diffusers && HF_HUB_OFFLINE=1 uv run python -c "..." # inline script; see mflux-debugging
If visuals differ: do not assume the port is broken. Run the latent injection workflow in mflux-debugging to separate (a) transformer/VAE quality from (b) RNG/scheduler differences.
Save comparison PNGs to explicit paths; report /usr/bin/time -p totals. Do not commit comparison artifacts.
uv tool executable behaves differently from uv run python -m ..., prefer the local module run to isolate environment/tooling issues.