Installation
You need an Apple Silicon Mac (MLX is Metal-only, so macOS only by design). There are four ways in — pick whichever fits.
Homebrew (recommended)
Section titled “Homebrew (recommended)”A self-contained, signed + notarized binary — no toolchain to install by hand:
brew install joshuarossi/tap/mlx-bunmlx-bunThat’s the whole thing. The bottle already bundles the MLX native runtime, so
the only thing the first run fetches is the model. Upgrade later with
brew upgrade mlx-bun.
Direct download
Section titled “Direct download”No Homebrew, Bun, or git — just download the signed, notarized binary:
curl -fsSL https://mlx-bun.dev/install.sh | shmlx-bunmkdir mlx-bun && cd mlx-buncurl -fsSL https://github.com/joshuarossi/mlx-bun/releases/latest/download/mlx-bun-arm64.tar.gz | tar xz./mlx-bunThe bundle is self-contained (binary + MLX runtime) and notarized, so it runs
even on a browser download — no Gatekeeper prompt. The tarball variant leaves
a self-contained folder; symlink ./mlx-bun into your PATH to keep it.
bunx (no install)
Section titled “bunx (no install)”Already have Bun ≥ 1.3.14? Run it straight from npm, nothing to install:
bunx mlx-bunFirst run fetches the MLX native runtime (~52 MB) and the model into your caches, then serves.
From source
Section titled “From source”For development, or to use the library from a clone. Needs Bun ≥ 1.3.14 — no Python, no native library to install by hand:
# 1. Install Buncurl -fsSL https://bun.sh/install | bashexec $SHELL -l
# 2. Clone, install, link the CLIgit clone https://github.com/joshuarossi/mlx-bun.git && cd mlx-bunbun installbun run link-cli # adds the `mlx-bun` command — or run `bun src/cli.ts <verb>`
# 3. Run itmlx-bunWhat happens on first run
Section titled “What happens on first run”Bare mlx-bun is an alias for mlx-bun serve. With no model named, it does
everything for you:
- pulls the MLX native runtime (~52 MB) into
~/Library/Caches/mlx-bun/(skipped on the Homebrew/direct-download installs — the runtime ships in the bundle); - downloads the sub-GB
MiniCPM5-1Bstarter and serves it, so you’re chatting in well under a minute; - starts downloading
gemma-4-e4b(the stronger 4B model) in the background — it becomes the default on your nextmlx-bun serve, on a 16 GB+ Mac; - opens the chat UI in your browser at
http://localhost:8090/#/chat(pass--no-opento skip).
Next: the Quickstart.