This release is a pre-release and may not be stable for production use.
mlx-minimax-music3 is an independent project for local MiniMax Music 3
inference with MLX. The runtime accepts lyrics and a structured music
caption, generates the model's autoregressive music representation, synthesizes
the acoustic latents, and returns stereo waveform audio without using PyTorch or
CUDA at runtime.
[!IMPORTANT] Version
0.0.1a0is an alpha. Dense tensor mapping and waveform execution are validated locally, but end-to-end music quality parity, quantized quality, long-form generation, and the reference 32 kHz output profile remain in progress.
Project goals
- Pure MLX inference on Apple silicon.
- End-to-end waveform generation, not token-only output.
- Local checkpoint loading with explicit weight mapping.
- Phase-scoped model residency for predictable unified-memory use.
- Small, testable model components with numerical correctness checks.
- No model weights or generated media in the source distribution.
Installation
The package will be installable from PyPI after the first pre-release is published:
uv add "mlx-minimax-music3==0.0.1a0"
Model weights remain a separate, explicit local download.
Dependency policy
The runtime dependency is only mlx. A small local tokenizer reads the
checkpoint's exact Qwen2 BPE vocabulary; its output is continuously checked
against Hugging Face tokenizers during development. Dependencies are added only
when a working implementation proves they are necessary.
PyTorch, Diffusers, Transformers, Accelerate, Torchaudio, Librosa, and
huggingface_hub are intentionally excluded from the runtime. MLX reads
Safetensors directly, checkpoint paths are local-first, and standard-library WAV
output is preferred.
Current status
| Area | Status |
|---|---|
| Repository and package metadata | Ready |
| PyPI trusted-publishing workflow | Ready |
| Architecture and porting contract | Ready |
| Official checkpoint inventory and conversion | Ready |
| Prompt and checkpoint-native tokenizer | Validated |
| Global language model and RVQ depth decoder | Validated |
| Flow-matching acoustic model | Validated |
| Waveform decoder | Validated |
| Dense end-to-end music quality | In validation |
| Selective-q8 execution | Experimental; multi-seed listening validation in progress |
| Long-form quality and 32 kHz output parity | In progress |
Python API
The pipeline keeps only the checkpoint manifest and tokenizer between requests. Model weights are loaded, evaluated, measured, and released one stage at a time.
from mlx_minimax_music3 import GenerationRequest, Music3Pipeline
pipeline = Music3Pipeline("weights/mlx-dense/MiniMax-Music3")
result = pipeline.generate(
GenerationRequest(
caption="Warm acoustic folk, intimate vocal, gentle fingerpicked guitar.",
lyrics="[verse]\nMorning light across the room\nA quiet road will lead me home",
audio_duration=10.0,
seed=0,
),
output="outputs/song.wav",
)
print(result.metadata.checkpoint_profile)
print(result.metadata.memory_reports)
The current output profile is native 44.1 kHz stereo PCM16 WAV. The API refuses
to overwrite an existing file unless overwrite=True is explicit.
Lyrics must contain more than structure tags alone. For a vocal-free request,
use instrumental_lyrics() to add the explicit content expected by the model:
from mlx_minimax_music3 import instrumental_lyrics
lyrics = instrumental_lyrics("intro", "outro")
Intended runtime
lyrics + structured caption
|
v
Qwen3 global language model + local RVQ depth decoder
|
v
continuous hidden-state conditioning
|
v
flow-matching diffusion transformer
|
v
Flow-VAE / DAC-style waveform decoder
|
v
native 44.1 kHz stereo WAV
The implementation is deliberately staged so the autoregressive models can be released before acoustic synthesis begins. See the architecture document for the design.
Development
git clone https://github.com/appautomaton/mlx-minimax-music3.git
cd mlx-minimax-music3
uv sync --locked
uv run ruff check .
uv run pytest -q
uv run python dev/check_public_tree.py
uv build --no-sources
Convert the componentized official checkpoint to the dense baseline. The second command creates an experimental selective-q8 profile for memory and quality research; it is not a quality-validated release profile:
uv run python -m dev.convert_checkpoint \
weights/bf16/MiniMax-Music3 \
weights/mlx-dense/MiniMax-Music3
uv run python -m dev.verify_dense_checkpoint \
weights/bf16/MiniMax-Music3 \
weights/mlx-dense/MiniMax-Music3 \
--verify-digests
uv run python -m dev.quantize_checkpoint \
weights/mlx-dense/MiniMax-Music3 \
weights/mlx-8bit/MiniMax-Music3
Upstream implementations live in the ignored .references/ directory. Existing
local checkouts may be reused through Git worktrees instead of downloading a
second copy. Their URLs, revisions, roles, and licenses are documented in
the reference guide.
First pre-release
The first package version is 0.0.1a0. After a GitHub pre-release is created from
tag v0.0.1a0, .github/workflows/workflow.yml will build the distributions and
publish them through PyPI trusted publishing.
The release must remain marked as a pre-release. Publishing is intentionally not
performed from a developer machine. The PyPI Trusted Publisher must match owner
appautomaton, repository mlx-minimax-music3, workflow workflow.yml, and
environment pypi. The environment scopes the trusted-publishing identity; this
sole-maintainer project does not require a reviewer approval rule.
Licensing
The source code in this repository is MIT licensed. MiniMax Music 3 model weights are distributed separately under the MiniMax-Music3 Community License. Installing this package does not download or grant additional rights to those weights. See the third-party notices.
This project is not affiliated with or endorsed by MiniMax.
Metadata
Release files for mlx-minimax-music3 0.0.1a0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| mlx_minimax_music3-0.0.1a0.tar.gz | 70.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mlx_minimax_music3-0.0.1a0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 130.9 kB
Release files / mlx_minimax_music3-0.0.1a0.tar.gz
| Download URL | mlx_minimax_music3-0.0.1a0.tar.gz |
|---|---|
| Size | 70.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4eeeed47343014765de7b2d1624770c537465b819222d437e6a520c3312060ae
|
|
BLAKE2b-256 checksum How to use checksums |
657b2cf0060a93e4fa8678c3c6f44181917e52d2c89855523af0e2bab7f35b6c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 14, 2026.
Transparency logRelease files / mlx_minimax_music3-0.0.1a0-py3-none-any.whl
| Download URL | mlx_minimax_music3-0.0.1a0-py3-none-any.whl |
|---|---|
| Size | 60.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2f74e326b9ba5a68e787299e6687de90d8ae26113f42232f3ac6b3e7921f75e4
|
|
BLAKE2b-256 checksum How to use checksums |
15e2f5bb17615aa98ff50c6bebd3e10363761f72dc7dc38862e5f19b64a36437
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 14, 2026.
Transparency log