MLX distributed
Apple's own machine-learning framework can spread one model across several Macs with its launcher, and is what EXO builds on; you set it up from the command line.
- Mac: Yes
- NVIDIA PC: Partly
- AMD PC: No
- Linux, processor only: Partly
- Raspberry Pi and boards: No
- Windows: No
- Android: No
- iPhone, iPad: No
At a glance
- Best for
- Mac owners comfortable with a terminal who want the most direct, lowest-overhead way to run one model on several Macs, especially Mac Studios on Thunderbolt 5.
- Runs on
- Built for Apple silicon. Linux builds exist for NVIDIA cards (with NCCL between machines) and for processors only; Macs and Linux machines aren't mixed.
- How it splits a model
- Tensor or pipeline, per model: about two dozen model families support tensor split and about fifteen pipeline.
- Connections
- A TCP ring over Ethernet or Thunderbolt, or JACCL: RDMA over Thunderbolt 5 (macOS 26.2+), which Apple calls an order of magnitude lower in latency and needed for tensor split.
- How devices join
- Manual: a host file and passwordless ssh between the Macs (mlx.distributed_config can write it).
- Models
- MLX models from Hugging Face.
- API
- OpenAI compatible (mlx_lm.server), plus chat and generate commands.
- Rules
- Same Python and paths on every Mac. With tensor split each Mac needs every weight file; pipeline mode downloads only its own share.
Get started
macOS
pip install mlx mlx-lmLinux
pip install mlx[cuda13] mlx-lmThen:
mlx.distributed_config --hosts mac1,mac2 --over thunderbolt --backend jaccl --auto-setup --output hosts.json
mlx.launch --backend jaccl --hostfile hosts.json -- python -m mlx_lm chat --model mlx-community/<model>
Published speeds
Limits to know
- No app or discovery: host files and ssh.
- Its server is for personal use, not production.
- Community reports describe an early RDMA driver with occasional hangs.
Estimates come from published hardware specs and our open formulas, not from running the model on your machine. Real speed varies with runtime, drivers and settings. Numbers marked “Measured” come from a linked benchmark.