File size: 4,822 Bytes
115f0db
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
805b0fd
 
 
 
 
115f0db
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
---
license: apache-2.0
tags:
- mlx
- mlx-creator
- apple-silicon
- text-to-image
- text-to-audio
- text-to-video
---

# MLX Creator — Models

Local generative-media studio for **Apple Silicon** — images, music, and video, fully
on-device via [MLX](https://github.com/ml-explore/mlx). No PyTorch at runtime, no cloud.

- **App / source:** https://github.com/rynky2436/MLX-Creator
- **These repos** (`MLXCreator/*`) host MLX-format weights the app downloads on first run.

---

## How to add or convert a model so it works in the app

The app loads models from its local `models/` folder. Each model lives in **its own
subfolder** with a small `mlxstudio.json` manifest that tells the app what it is and
which engine loads it. Drop a compatible folder in, and it appears in the right tab.

### 1. Is it already MLX format?

The app's **inference is torch-free** — it loads pre-converted MLX weights. The easy path:

- **Yes (drop-in):** weights already converted to MLX (e.g. from `mlx-community`, or any
  `MLXCreator/*` repo here). Just add the manifest (step 3) — no conversion needed.
- **No (convert first):** the model only ships PyTorch/diffusers `safetensors`. Convert it
  to MLX **once, offline**, then drop in the result. Conversion may use torch on another
  machine/run; the app itself never needs it. Use the upstream MLX tool for that family:
  - Flux: [`mlx-examples/flux`](https://github.com/ml-explore/mlx-examples/tree/main/flux)
  - SD3 / SD3.5: [`DiffusionKit`](https://github.com/argmaxinc/DiffusionKit)
  - Qwen-Image: [`mflux`](https://github.com/filipstrand/mflux)
  - Language/planner models: `mlx_lm.convert`

### 2. Does the app already have an engine for that architecture?

A manifest only **routes** a model to an engine that already exists. So a model works if it
is **(a) MLX format** and **(b) one of the supported families** below:

| Modality | Engine (`engine`) | Architectures it loads | Drop-in source |
|---|---|---|---|
| `image` | `flux`  | FLUX.1 schnell / dev | `mlx-community` Flux, `MLXCreator/MLXCreator-Flux-Schnell` |
| `image` | `sd35`  | SD3 / SD3.5 (needs `SD3-encoders` companion) | `MLXCreator/MLXCreator-SD3.5-Large` |
| `image` | `qwen`  | Qwen-Image (quantized MLX) | `MLXCreator/MLXCreator-QwenImage-4bit / -8bit` |
| `audio` | `ace_step` | ACE-Step 1.5 (needs an `acestep-*-lm` planner companion) | `MLXCreator/MLXCreator-ACEStep-1.5` |
| `video` | `wan`   | Wan 2.2 TI2V (needs `umt5-xxl-tokenizer` companion) | `MLXCreator/MLXCreator-Wan2.2-TI2V-5B` |

A **brand-new architecture** (not in this list) needs a small new engine in the app — see
[CONTRIBUTING in the repo](https://github.com/rynky2436/MLX-Creator). A new *variant* of a
supported family just needs MLX weights + a manifest.

### 3. Write the manifest

Put `mlxstudio.json` in the model's folder:

```json
{
  "modality": "image",
  "engine": "flux",
  "arch": "schnell",
  "role": "model",
  "display": "FLUX.1 schnell"
}
```

| Field | Required | Values |
|---|---|---|
| `modality` | yes | `image` · `audio` · `video` |
| `engine`   | yes | `flux` · `sd35` · `qwen` · `ace_step` · `wan` |
| `arch`     | flux only | `schnell` · `dev` |
| `role`     | yes | `model` (selectable) · `companion` (shared encoder/tokenizer/planner, hidden) |
| `display`  | optional | label shown in the UI (defaults to the folder name) |

The app also **auto-detects** common layouts and writes this file for you, but adding it
explicitly is the reliable way to register an unusual folder.

### 4. Install it — two ways

- **In-app (recommended):** open the **Models** tab, search Hugging Face, and install. The
  browser filters for MLX-compatible repos and writes the manifest automatically.
- **Manual:** copy the folder into the app's `models/` directory (see the path in the
  **Settings** tab). It shows up on next launch / refresh.

### 5. Publishing your own MLX model so the in-app browser finds it

When you upload converted weights to Hugging Face, tag them so MLX Creator's browser
surfaces them:

- `library_name: mlx` (or include `mlx` in `tags`)
- a `pipeline_tag` that matches the modality (`text-to-image`, `text-to-audio`, `text-to-video`)
- keep the upstream **license** and attribution in the model card

---

## Companions

Some engines share a heavy encoder/tokenizer/planner across models. These are marked
`"role": "companion"` and are **not** shown as selectable models — they're loaded behind the
scenes. Examples here: `SD3-encoders` (CLIP/T5 for `sd35`), `umt5-xxl-tokenizer` (for `wan`),
`acestep-5Hz-lm-0.6B` / `-4B` (the ACE-Step "thinking" planners).

---

*Each model repo here keeps its original source + license in its card. Apache-2.0 for the
Flux / ACE-Step / Wan / Qwen / umt5 weights; the SD3 / SD3.5 weights are under the Stability
AI Community License.*