模型 / 資料集
ddalcu/mlx-serve avatar
ddalcu/mlx-serve

mlx-serve:用 Zig 寫的 Apple Silicon 本地推論伺服器,同時說 OpenAI、Anthropic 與 Ollama 三種 API

Native LLM inference server for Apple Silicon. OpenAI + Anthropic API compatible. No Python. Includes MLX Core macOS app with chat, agent mode, and tool calling.

1,278 個 Star117 個 ForkZigNOASSERTION

秒懂

它是什麼?
這個專案把 MLX 與 GGUF 兩種權重格式收進同一個原生二進位檔,並在 localhost:11234 上開出三套相容端點。它的價值不在模型本身,而在於讓既有客戶端不必改設定就能換引擎。
適合誰用?
如果你已經在用 Claude Code、OpenAI SDK 或任何 Ollama 客戶端,而且機器是 Apple Silicon,mlx-serve 值得先跑一次 brew install mlx-serve,用你原本的客戶端指向 http://localhost:11234 驗證相容性,再決定要不要換掉現有引擎。反過來說,Linux 或 Windows 團隊、需要把推論跑在 NVIDIA 卡上的部署、以及只想用 Python 生態直接呼叫 mlx-lm 做研究的人,這個專案幫不上忙。
可以商用嗎?
請先確認。這個儲存庫使用的授權不在我們自動分類的範圍內,商用前請閱讀儲存庫中的 LICENSE 檔案。
還在維護嗎?
有在維護。儲存庫最近一次提交在 1 天前。
用什麼語言寫的?
主要是 Zig(依據 GitHub 的語言統計)。

以上回答依據專案的 GitHub 資料(最近同步於 2026年9月15日)與我們的分析,不構成法律意見。

開源專案深度解析

它想解決的不是推論速度,而是客戶端相容性

在 Mac 上跑本地模型,麻煩的通常不是下載權重,而是把模型接進你已經在用的工具鏈。Claude Code 說 Anthropic Messages API,OpenAI SDK 說 /v1/chat/completions,Raycast 和 Obsidian 這類外掛說 Ollama 的 /api/chat。過去要讓這些東西全部指向本地,得在幾個不同伺服器之間來回切換,或自己寫一層轉接。

mlx-serve 的定位就是把這層轉接做進伺服器本身。README 的說法是同一個 http://localhost:11234 可以同時服務 Claude Code、OpenAI SDK、Continue、Cursor 與 Open WebUI。它另外實作了 Ollama 的 /api/chat、/api/generate、/api/tags、/api/embed、/api/pull,所以既有的 Ollama 客戶端不必改一行程式碼。

目標讀者相當明確:已經有一台 Apple Silicon Mac、已經有一套以本地模型為後端的工具鏈、並且不想再引入 Python 執行環境的人。至於只是想在終端機裡跟模型聊天的人,這個專案的相容層對你沒有意義,Ollama 的體驗已經足夠。

Zig 伺服器如何同時吃下 MLX 與 GGUF

架構上可以拆成三層。最底層是推論引擎,專案把 mlx 與 llama.cpp 都當成相依項目,由建置腳本固定版本後抓取或編譯。中層是 Zig 寫的 HTTP 伺服器,負責路由與 API 形狀轉換。最上層是 MLX Core,一個 macOS 選單列應用程式,內含聊天介面、agent 模式與模型管理。

關鍵設計在於模型是延遲載入的。README 對 mlx-serve serve 的說明是「serve everything you've pulled」,模型依名稱按需載入,而不是啟動時全部佔住記憶體。這對同時拉了多個模型的機器是必要的,因為統一記憶體一旦被佔滿就沒有退路。

格式支援上,MLX 走原生路徑,GGUF 則由內嵌的 llama.cpp 處理。README 的對照表把 GGUF 標為 embedded,意思是使用者不需要另外安裝 llama.cpp。這與 LM Studio 的做法接近,但與 mlx-lm 不同,後者只吃 MLX 格式。

值得注意的是伺服器同時實作了 OpenAI Responses API 與其 WebSocket 傳輸,README 特別點出 /v1/responses/compact 這個端點。這一層的覆蓋範圍比多數本地伺服器廣,但也意味著需要維護的 API 表面積更大。

安裝路徑有三條,選錯會多花時間

最省事的是 Homebrew 的 cask 路線:

brew tap ddalcu/mlx-serve https://github.com/ddalcu/mlx-serve brew install --cask mlx-core

這會裝上簽章並公證過的 MLX Core 應用程式,伺服器隨附在內。若只要命令列與伺服器,不想要圖形介面,改用 brew install mlx-serve。

第二條是命令列操作,README 把它形容為 Ollama 風格:

mlx-serve run gemma4 mlx-serve pull qwen3.6:27b mlx-serve list mlx-serve serve

run 會下載模型、啟動服務並直接在終端機進入對話;pull 只下載,且支援續傳;serve 則把已經拉下來的模型全部開放,按名稱隨選載入。短名稱、org/repo 形式的 HuggingFace id,以及 name:tag 三種寫法都接受。

第三條是從原始碼建置,前置條件比前兩條硬。需要 macOS 26.2 以上、Xcode 26.2 以上,以及 Metal Toolchain 元件。README 給了檢查方式:若 xcrun -sdk macosx metal --version 失敗,執行 xcodebuild -downloadComponent MetalToolchain 補上。之後:

git clone --recurse-submodules https://github.com/ddalcu/mlx-serve && cd mlx-serve brew bundle install --file=Brewfile ./app/build.sh

Brewfile 負責 cmake 與 webp。Zig、mlx 與 llama.cpp 由腳本固定版本並抓取或編譯。純伺服器建置的路徑另外寫在 docs/building.md。

三條路徑的差別不只是方便程度。cask 版本是別人簽章公證過的二進位檔,原始碼建置則是 ad-hoc signed,在 macOS 的 Gatekeeper 下行為不同,這點在企業環境部署時要先想清楚。

README 的效能對照表該怎麼讀

倉庫裡最顯眼的數字是「Decode speed (geomean vs LM Studio, identical weights)」欄位:mlx-serve 標為 +26%,mlx-lm 標為 +11%,Ollama 標為約 −15%。這些數字來自專案自己的量測,README 說明是在相同 MLX 權重、出貨預設值下比較,並附上註腳指出 Ollama 除了少數 NVFP4 轉換外無法跑 MLX,所以那一欄是 GGUF 對 GGUF 的比較。

這個比較方法本身是合理的,因為它把格式差異講清楚了。但讀者要記得兩件事。第一,這是專案方自行發布的基準,我沒有獨立重跑,也不知道測試機器、提示詞集與批次大小。第二,+26% 是在「出貨預設值」下量到的,如果你關掉推測解碼或改動 KV 快取設定,數字不會一樣。

真正值得注意的技術點是推測解碼的組合。對照表列出 PLD、drafter 與 native MTP 三種機制,並註明 mlx-lm 只有 drafter。多種推測路徑並存意味著不同模型會走到不同分支,實際加速幅度取決於你用的模型是否支援其中某一種。README 沒有說明各模型的對應關係,這一塊需要自己量。

KV 快取量化支援 4 位元與 8 位元,另有一個名為 TurboQuant 的機制。README 沒有解釋 TurboQuant 的實作方式或精度影響,這是文件偏薄的地方。

agent 模式與沙箱外殼是它與其他本地伺服器的分界線

對照表裡有兩列是競爭對手普遍沒有的:內建的 agent loop 加 MCP 客戶端,以及沙箱化的 agent shell。README 說 agent 模式內建 10 個工具,沙箱外殼則跑在隔離的 Linux VM 裡。

這個設計選擇值得直接評價。把工具呼叫迴圈放進伺服器,而不是放在客戶端,好處是任何支援 OpenAI 或 Anthropic 格式的前端都能立刻獲得 agent 能力,不必各自實作。代價是伺服器不再只是無狀態的推論端點,它開始持有工具定義、執行狀態與權限邊界。當你把它指向 localhost 以外的位址時,這些東西就跟著暴露出去。

沙箱用 Linux VM 而非 macOS 的 sandbox 機制,是一個明確的取捨。VM 的隔離邊界比行程層級的 sandbox 乾淨,但啟動成本與記憶體佔用都更高,在統一記憶體的機器上這是實打實的開銷。README 沒有給出 VM 的資源佔用數字。

另外對照表提到一鍵啟動器,涵蓋 Claude Code、OpenCode 與 Pi,以及區域網路模型共享,讓一台 Mac 使用另一台 Mac 上的模型。後者對於有兩台以上 Apple Silicon 機器的團隊是有意義的功能,但 README 沒有說明傳輸是否加密、是否需要驗證。在可信區域網路之外使用前,這一點必須先查清楚。

多模態覆蓋範圍與授權標示的落差

README 宣稱同一個伺服器可以生成圖像、影片、音樂、語音(含聲音複製)與 3D 模型,全部原生走 MLX。對照表中這些項目在 LM Studio、Ollama 與 mlx-lm 底下都是空白。

這個廣度是專案的差異點,但也帶來維護面的問題。每一種模態都對應一組模型格式、取樣參數與輸出後處理,這些都要跟著上游變動。從版本節奏可以看出壓力:v26.8.11 更新了 Qwen 3.8 Flash Next 與 MLX 0.32.2,v26.9.1 加入側邊欄終端機與 1M 上下文,v26.9.2 加入 per-model settings 與 chat providers。三個版本之間相隔不到兩週。

授權方面有一個必須指出的矛盾。README 的徽章標示 License: MIT,對照表最後一列也寫 MIT。但倉庫的授權欄位在 GitHub 上顯示為 NOASSERTION,意思是平台無法從 LICENSE 檔自動判定出標準授權條款。這不代表授權有問題,可能是檔案格式或附加條款導致判定失敗,但在把它用進商業產品之前,應該直接打開 LICENSE 檔確認內容,而不是相信徽章。我不是律師,這只是提醒你去讀原始檔案。

維護成本的另一個來源是相依項目的固定版本。Zig、mlx 與 llama.cpp 都被腳本釘住,好處是建置可重現,壞處是上游修了安全問題或支援了新模型架構時,你得等專案發新版本。自行修改釘選版本則會離開被測試過的路徑。

什麼情況下不該用它

最明確的不適用場景是硬體。這個專案需要 Apple Silicon 與 macOS 26.2 以上,沒有其他平台的路徑。團隊若同時有 Linux 推論伺服器與 Mac 開發機,把 mlx-serve 當成統一後端會失敗,它只能覆蓋 Mac 那一半。

第二個場景是研究用途。mlx-lm 是 Python 生態,可以直接在筆記本裡載入模型、取出中間層張量、改寫取樣邏輯。mlx-serve 的價值恰恰在於沒有 Python,這對部署是優點,對做實驗是缺點。要在推論過程中介入的實驗,這個專案不適合。

第三個場景是只需要單一模型的簡單用途。如果你只是要一個端點跑一個固定的模型,Ollama 的安裝與心智負擔都更低,而 mlx-serve 帶來的多模態、agent loop、沙箱外殼你都不會用到。功能廣度在這種情況下只是攻擊面。

真正需要留意的失敗模式是記憶體。統一記憶體被模型權重、KV 快取、沙箱 VM 與多模態模型共同瓜分,而 mlx-serve 的延遲載入策略意味著記憶體佔用會隨著使用模式變化,不是啟動時就固定下來。README 沒有提供記憶體規劃指引,這在同時拉多個大模型的機器上會是實際痛點。

替代方案方面,LM Studio 是最近的對照點。兩者都支援 MLX 與 GGUF、都有 OpenAI 相容 API、都能在 Mac 上跑。差異在於 LM Studio 是專有軟體、用 Electron 寫的桌面應用,而 mlx-serve 是原生選單列程式加一個獨立的 Zig 伺服器,且後者額外提供 Ollama API 相容層與 Anthropic Messages API。README 也註明近期 LM Studio 版本已加入 Anthropic /v1/messages 與 OpenAI /v1/responses 端點,但覆蓋範圍是部分的,mlx-serve 另外實作了 Responses 的 WebSocket 傳輸。若你的工具鏈同時混用 OpenAI 與 Anthropic 兩種客戶端,這個差異會直接影響能不能少跑一個服務。

編輯結論

如果你已經在用 Claude Code、OpenAI SDK 或任何 Ollama 客戶端,而且機器是 Apple Silicon,mlx-serve 值得先跑一次 brew install mlx-serve,用你原本的客戶端指向 http://localhost:11234 驗證相容性,再決定要不要換掉現有引擎。反過來說,Linux 或 Windows 團隊、需要把推論跑在 NVIDIA 卡上的部署、以及只想用 Python 生態直接呼叫 mlx-lm 做研究的人,這個專案幫不上忙。動手前請先確認三件事:macOS 版本是否達到 26.2 以上,你的模型是否在 MLX 或 GGUF 任一格式下找得到,以及倉庫的 LICENSE 檔實際內容與 README 標示的 MIT 是否一致,因為 GitHub 對這個倉庫的授權判定是 NOASSERTION。

官方來源

  1. ddalcu/mlx-serve on GitHub
  2. Issues
  3. Project website
  4. README
  5. Releases
社群筆記

社群筆記