omlx — What is it?

oMLX is a local model inference server for Apple Silicon Macs. On top of MLX inference, it adds continuous batching, a two-tier RAM and SSD KV cache, automatic model loading and eviction, an admin dashboard, and OpenAI- and Anthropic-compatible APIs.

⭐ 16,786 Stars 🍴 1,419 Forks Python Apache-2.0 Author: jundot
Source: github.com/jundot/omlx View on GitHub →

Why it matters

It addresses two common problems for local coding assistants: repeated prefill makes long conversations slow, while keeping several models resident can exhaust unified memory. The official implementation reuses context through prefix sharing and an SSD cold cache, and manages models with LRU, TTL, and a total memory limit.

Source: github.com/jundot/omlx

Core Features

Continuous batching and two-tier KV caching

Concurrent requests are scheduled by mlx-lm BatchGenerator. Matching prefixes can be reused between a hot RAM tier and a cold SSD tier, with cold cache entries stored as safetensors.

Source: github.com/jundot/omlx
Multi-model management

One service can discover LLM, VLM, OCR, embedding, and reranker models, while LRU, pinning, and per-model TTL settings control memory use.

Source: github.com/jundot/omlx
Compatible APIs and administration

The server exposes OpenAI-style APIs, the Anthropic Messages API, and a local admin dashboard. A non-loopback listener requires an API key.

Source: github.com/jundot/omlx
macOS menu bar and CLI

The official DMG includes a native Swift and SwiftUI menu-bar application plus a CLI shim. Homebrew and source installations can also manage the service with omlx start, stop, restart, and serve.

Source: github.com/jundot/omlx

Architecture

A FastAPI layer exposes the OpenAI and Anthropic APIs. EnginePool manages text, vision, vector, and reranking engines. The scheduler uses mlx-lm BatchGenerator. PagedCacheManager, the RAM hot cache, and the SSD cold cache form the cache stack, while ProcessMemoryEnforcer applies the total memory limit and TTL.

Source: github.com/jundot/omlx

Project Knowledge Graph

Knowledge graph: project (center) + core features (inner hexagons) + key dependencies (outer chips) Python >=3.11,<3.14Python >=3.11,… macOS 15.0+ Apple Silicon M1-M5Apple Silicon… Continuous batching and two-tier KV cachingContinuous batching… Multi-model managementMulti-model managem… Compatible APIs and administrationCompatible APIs and… macOS menu bar and CLImacOS menu bar and… omlx Project Core feature Key dependency

Tech Stack

LanguagePython; the macOS application uses Swift and SwiftUIFrameworkMLX, mlx-lm, and FastAPI
Python >=3.11,<3.14macOS 15.0+Apple Silicon M1-M5
The local service listens on localhost:8000 by default; models and settings default to ~/.omlx; SSD KV caching is optional
Source: github.com/jundot/omlx/blob/main/pyproject.toml (1) · github.com/jundot/omlx (2)

Quick Start

The simplest path is the official DMG. CLI users can run brew tap jundot/omlx https://github.com/jundot/omlx and then brew install jundot/omlx/omlx. Put MLX-format models in ~/models, run omlx serve --model-dir ~/models, and verify the local service first at http://localhost:8000/admin/chat.
Source: github.com/jundot/omlx

Use Cases

oMLX suits Apple Silicon users who want a local backend for coding assistants, offline chat, vision and OCR, embeddings, or reranking, with multiple models and memory use managed from one dashboard.

Source: github.com/jundot/omlx

Strengths & Limitations

Strengths

  • Continuous batching, SSD prefix caching, and multi-model memory management in one service
  • Both OpenAI- and Anthropic-compatible endpoints
  • An API key is mandatory for non-loopback listeners

Limitations

  • Supports only Apple Silicon and macOS 15.0 or later
  • Some model families require full Xcode and native custom kernels to reach the fast path described by the project
  • 0.7.0.dev4 is a development preview; stable use should remain on 0.6.4
  • Multi-Mac inference is still marked experimental
Source: github.com/jundot/omlx

Latest Release

The latest stable version is v0.6.4, published on 2026-08-29; the latest prerelease is v0.7.0.dev4, published on 2026-09-18. These release lines must not be conflated.

Source: github.com/jundot/omlx/releases

Verification and evidence

status: docs-only  |  checked_at: 2026-09-23  |  environment: The official README, pyproject.toml, Apache-2.0 LICENSE, GitHub Releases, and repository metadata were reviewed; the project was not installed or run on an Apple Silicon Mac.  |  limitations: No local installation or runtime verification was performed. Model loading, throughput, SSD-cache hits, memory release, custom kernels, API compatibility, remote authentication, and multi-Mac clusters were not tested.  |  observed_output: The official latest API returns stable v0.6.4 dated 2026-08-29. Releases also list prerelease v0.7.0.dev4 dated 2026-09-18. pyproject.toml requires Python >=3.11,<3.14.

Source: github.com/jundot/omlx/releases/tag/v0.6.4 (1) · github.com/jundot/omlx/blob/main/pyproject.toml (2)

Comparison

MLX LM also provides a local HTTP server, whose documentation says it performs only basic security checks and is not recommended for direct production use. oMLX reuses the mlx-lm BatchGenerator and adds a multi-model pool, SSD cold cache, admin UI, menu-bar app, and API-key enforcement for non-local listeners.

Source: github.com/jundot/omlx (1) · github.com/ml-explore/mlx-lm/blob/main/mlx_lm/SERVER.md (2)

Verdict

If you have an Apple Silicon Mac and want to run several local models, reuse long conversation prefixes, and expose one backend to coding tools, oMLX is worth a small localhost trial. Before production or LAN use, test model compatibility, cache size, and authentication. For one simple model service, the smaller MLX LM server may be enough.

Source: Official releases

Frequently Asked Questions

Can oMLX run on an Intel Mac, Windows, or Linux?

Not through the officially supported path. The current requirements are Apple Silicon, macOS 15.0 or later, and Python 3.11 through 3.13.

Should I install oMLX 0.6.4 or 0.7.0.dev4?

Choose 0.6.4 for a stable environment. GitHub marks 0.7.0.dev4 as a prerelease, and its Release notes advise returning to an earlier development build if a regression appears.

What must I do before exposing oMLX on a LAN?

Configure an API key before changing the listening address. The official documentation says the server refuses to start on a non-loopback address without an API key.

Does the oMLX SSD cache make every request faster?

No. It can reuse a cache entry only when the request prefix matches. Disk speed, cache limits, model changes, and context changes all affect the result. This site has not measured a specific speedup.

Sources and review scope
This review is based on the project's public documentation. Versions, installation commands, and feature boundaries can change upstream; check the cited sources and current release before use. Sources checked on: 2026-09-23 10:52.

Reference materials: README, GitHub API, dependency files