The marketing sentence vs the architectural sentence
Marketing copy will tell you MLX is "Apple's machine learning framework, optimized for Apple Silicon, with NumPy-like APIs and lazy evaluation." That's a true sentence. It's also a useless one — every framework's marketing reads like that. Let me give you the architectural sentence instead.
MLX is an array library that treats unified memory as the default world, and treats separate-GPU-memory architectures as the special case. That's the actual differentiator. Every other choice — the lazy graph, the function transforms, the close kinship with NumPy — is downstream of that one decision.
The boring facts (so we can move on)
MLX shipped publicly in December 2023. As of this lesson's verification stamp (2026-05-03), the current versions are:
mlx0.31.x — the core array library, MIT-licensedmlx-lm0.31.x — the language-model serving stack on top- Plus:
mlx-vlm,mlx-audio, themlx-communityHugging Face org, themlx-examplesreference repo
It's an Apple research project — open source, but driven by Apple's ML research team. The framework has Python, Swift, C++, and C bindings. We'll use Python throughout this quest, because that's where every other AI tool you'll meet expects to live.
The one thing that makes it not "just another array library"
NumPy taught you arrays. PyTorch taught you arrays-with-gradients. JAX taught you arrays-with-function-transforms. MLX teaches you arrays where the GPU and the CPU are reading the same bytes at the same moment. No device='cuda:0'. No tensor.to(device). No "did I forget to move this to GPU?" debugging.
That sounds like a small detail. It is not. The next lesson is dedicated to it, because everything else MLX does is shaped by it. For now, just hold the shape: the array lives in memory both processors can see, and that fact is the framework's design center, not a feature buried somewhere in the docs.
What this quest is actually for
Eight tracks. Fifty-one lessons. We'll go from "what's installed" through "I can fine-tune a Llama on my Mac and serve it through an OpenAI-compatible endpoint" — with every code block re-run on current MLX so you don't inherit the polite hallucinations LLMs generate when asked to write MLX code. (That last problem gets a whole lesson — see compare.lesson5.)
Verifying the version on your machine
Before any lesson asks you to type import mlx.core as mx, the version check below tells you whether you're holding the same MLX I verified this quest against. If you're significantly behind, run pip install -U mlx mlx-lm in your env first — MLX is fast-moving on purpose, and you want the latest.