Overview
oMLX is an inference server for Apple Silicon Macs built on MLX. It serves text LLMs, vision-language models, OCR models, embedding models and rerankers from a directory of downloaded models, and any OpenAI-compatible client can talk to it at http://localhost:8000/v1. The distinguishing feature is its KV cache: oMLX persists cached context across a hot in-memory tier and a cold SSD tier, so past context stays reusable across requests even when the conversation changes mid-flight — the case that makes local models practical for repeated coding-agent turns.
It is managed like a Mac app rather than a daemon you babysit. The macOS build installs a menu-bar app with a welcome flow (model directory, server start, first download), in-app auto-update, and a lightweight omlx CLI shim so terminal commands and Apple Shortcuts can drive the app-managed server. A web admin dashboard at /admin gives real-time monitoring, model management, a chat UI, a benchmark tool and per-model settings, localised into eight languages with all CDN dependencies vendored so it works offline.
The project is Apache-2.0 and installs from a DMG, from Homebrew, or from source. It requires macOS 15.0 or newer, Python 3.11–3.13 and an Apple Silicon chip. Some model families (GLM-5.2, MiniMax M3, Qwen3.5) have native custom Metal kernels that a plain pip install does not build; the README is explicit that the affected families silently fall back to much slower generic paths, so use the official DMG (which ships the kernels precompiled) or build with the Metal toolchain from full Xcode.
What it does
- Continuous batching plus a two-tier KV cache — hot in memory, cold on SSD — so prior context stays reusable across requests
- OpenAI-compatible endpoint at http://localhost:8000/v1 for any existing client, plus a built-in chat UI at /admin/chat
- Serves text LLMs, vision-language models, OCR models, embeddings and rerankers, auto-discovered from subdirectories of a model folder
- macOS menu-bar app with in-app auto-update, a welcome wizard and an omlx CLI shim for terminal commands and Apple Shortcuts
- Admin dashboard for real-time monitoring, model management, benchmarking and per-model settings, vendored for offline use
- Native Metal custom kernels for specific model families, plus optional MCP support and experimental multi-Mac inference in source builds
Getting started
Install the Mac app for the simplest path (it ships the precompiled Metal kernels), or use Homebrew if you want the server as a background service. Requires macOS 15.0+, Apple Silicon and Python 3.11–3.13.
Install with Homebrew
Tap the repository and install, then run the server as a managed background service that auto-restarts on crash.
brew tap jundot/omlx https://github.com/jundot/omlx
brew install jundot/omlx/omlx
omlx startOr install from source
A plain editable install does NOT build the native custom kernels; set OMLX_WITH_CUSTOM_KERNEL=1 (needs the Metal toolchain from full Xcode) if you serve GLM-5.2, MiniMax M3 or Qwen3.5.
git clone https://github.com/jundot/omlx.git
cd omlx
OMLX_WITH_CUSTOM_KERNEL=1 pip install -e .Serve a model directory
Point the server at a folder of downloaded models; it discovers LLMs, VLMs, embedding models and rerankers from the subdirectories automatically.
omlx serve --model-dir ~/modelsCheck that the native kernels are active
If this reports the kernels are missing, the affected model families fall back to a much slower generic path instead of failing loudly.
python -c "from omlx.custom_kernels import native_kernel_status; print(native_kernel_status())"Point a client at it
Any OpenAI-compatible client works against the local endpoint; the admin dashboard and chat UI live at /admin.
curl http://localhost:8000/v1/modelsCommands and code are distilled from the project's own documentation — always check the official repo for the latest.
When to use it
- Run a coding agent against a local model on a Mac, where cross-request KV caching is what makes repeated long-context turns bearable
- Serve LLMs, VLMs, embeddings and rerankers for a local app from one OpenAI-compatible endpoint instead of several runtimes
- Keep a couple of everyday models pinned in memory and let heavier ones swap in on demand, controlled from the menu bar
- Benchmark and compare local models on your own hardware from the admin dashboard before committing to one
How oMLX compares
oMLX alongside other open-source local runtimes tools AI/TLDR tracks, ranked by GitHub stars.
| Tool | Stars | What it does |
|---|---|---|
| Ollama | ★ 180k | A developer-friendly tool that downloads and runs local LLMs from the terminal with a built-in OpenAI-compatible API. |
| llama.cpp | ★ 127k | A C/C++ inference engine that runs LLMs in the GGUF format on CPUs, Apple Silicon, and GPUs with low memory use. |
| GPT4All | ★ 77.4k | GPT4All is a free desktop app and Python client that runs large language models locally on your own computer, with no API calls or GPU required. |
| LocalAI | ★ 49k | A self-hosted server that exposes an OpenAI-compatible API for running text, vision, voice, and image models on local hardware. |
| Jan | ★ 44.4k | An open-source desktop app that runs LLMs fully offline as a ChatGPT-style assistant on your own computer. |
| AirLLM | ★ 33.8k | A Python inference library that keeps only one transformer layer on the GPU at a time, so a 70B model runs on a single 4GB card and a 671B MoE model on about 12GB, without quantization. |
| llamafile | ★ 25.9k | A Mozilla project that packages a model and its runtime into one executable file you can copy and run on any OS. |
| oMLX | ★ 21.5k | LLM inference for your Mac, with continuous batching and tiered KV caching from the menu bar |