モデル / データセット
jundot/omlx avatar
jundot/omlx

oMLXのSSD KVキャッシュが変えるMac上のLLM運用

Apple Silicon 用の継続バッチ処理と SSD キャッシュを備えた LLM 推論サーバーは、macOS メニュー バーから管理されます。

スター 21,764フォーク 1,882PythonApache-2.0

ひと目でわかる

これは何?
jundot/omlxはApple Silicon上でLLM、VLM、OCR、埋め込み、再ランキングモデルを提供する推論サーバーだ。メモリとSSDの2層KVキャッシュ、連続バッチ、macOSアプリの運用条件を読む。
誰に向いている?
oMLXはApple SiliconのMacでローカル推論を続け、モデルのKVキャッシュをメモリとSSDに分けて使いたい利用者に合う。macOS 15.0以上、Python 3.11から3.13、モデル配置、ポート8000を確認し、GLM-5.2などでネイティブカーネルが有効か`native_kernel_status()`で確認するべきだ。
商用利用できる?
できます。Apache-2.0 は寛容なライセンスで、著作権表示とライセンス表示を残せば、使用・改変・販売が可能です。
今もメンテナンスされている?
されています。直近 1 日以内に新しいコミットがあります。
何の言語で書かれている?
主に Python です(GitHub の言語統計による)。

回答はプロジェクトの GitHub データ(最終同期:2026年9月15日)と当サイトの分析に基づくもので、法的助言ではありません。

オープンソース詳細解説

メニューバーから操作するMac優先の推論サーバー、oMLXのSSD KVキャッシュが変えるMac上のLLM運用

oMLXはPython製のプロジェクトで、Apache-2.0ライセンスの下でApple Silicon上にLLM推論サーバーを構築する。READMEでは、macOSのメニューバーから管理するサーバーとして位置づけられており、ElectronラッパーではなくネイティブのSwiftUIアプリを使う。同じエンジンはCLIからも操作でき、omlx start、omlx stop、omlx restartでバックグラウンドサーバーを制御し、omlx serveでフォアグラウンドサーバーを端末に接続して実行する。READMEによると、サーバーはhttp://localhost:8000/v1でOpenAI互換クライアントを受け付け、http://localhost:8000/admin/chatにチャットUIを公開する。

oMLXの中心は、頻繁に使うホットKVブロックをメモリへ置き、コールドブロックをsafetensors形式でSSDへ書く2層構成にある。READMEは会話途中でコンテキストが変わっても過去のコンテキストを再利用でき、再起動後にプレフィックスを復元すると説明する。キャッシュ容量、SSDの耐久性、モデルごとの設定値はマシンと負荷で変わるため、説明をそのまま性能保証に読み替えない。

DMG、Homebrew、ソースの三つの入口がある。Homebrewなら`omlx start`、`omlx stop`、`omlx restart`でサービスを扱い、クライアントは`http://localhost:8000/v1`、管理画面は`/admin/chat`へ接続する。GLM-5.2、MiniMax M3、Qwen3.5のカスタムカーネルを使う場合、通常のeditable installではビルドされず、full Xcodeが必要になる。(この節ではoMLXのSSD KVキャッシュが変えるMac上のLLM運用の第1項目として扱う。)

oMLXのSSD KVキャッシュが変えるMac上のLLM運用の第1節では、READMEに記載された固有の入口と制約をこの節の確認対象として扱う。

インストール経路とカスタムカーネルの注意点、oMLXのSSD KVキャッシュが変えるMac上のLLM運用

READMEは3つのインストール方法を説明している。macOSアプリはReleasesページからDMGをダウンロードし、アプリ内自動更新があり、~/.omlx/bin/omlxにCLIシムをインストールする。Homebrewユーザーはjundot/omlxをtapしてからomlxをインストールでき、omlx startを実行するとbrew servicesに委任される。ソースからは、pip install -e .でコアを、pip install -e ".[mcp]"でMCP対応を入れる。要件はmacOS 15.0以降、Python 3.11-3.13、Apple Silicon。通常のpip installではGLM-5.2、MiniMax M3、Qwen3.5向けのネイティブカスタムカーネルはビルドされず、ない場合はそれらのモデル群がはるかに遅い汎用パスにフォールバックする。READMEには測定値が一つあり、GLM-5.2の融合DSAプリフィルはカーネルで約30倍速く、M3 Ultraで845対約29 tok/sだった。カーネルのビルドにはMetalツールチェーンが必要で、Command Line Toolsだけでは不足するため完全なXcodeが要る。公式DMGにはプリコンパイル済みのカーネルが同梱される。

DMG、Homebrew、ソースの三つの入口がある。Homebrewなら`omlx start`、`omlx stop`、`omlx restart`でサービスを扱い、クライアントは`http://localhost:8000/v1`、管理画面は`/admin/chat`へ接続する。GLM-5.2、MiniMax M3、Qwen3.5のカスタムカーネルを使う場合、通常のeditable installではビルドされず、full Xcodeが必要になる。

oMLXの中心は、頻繁に使うホットKVブロックをメモリへ置き、コールドブロックをsafetensors形式でSSDへ書く2層構成にある。READMEは会話途中でコンテキストが変わっても過去のコンテキストを再利用でき、再起動後にプレフィックスを復元すると説明する。キャッシュ容量、SSDの耐久性、モデルごとの設定値はマシンと負荷で変わるため、説明をそのまま性能保証に読み替えない。(この節ではoMLXのSSD KVキャッシュが変えるMac上のLLM運用の第2項目として扱う。)

oMLXのSSD KVキャッシュが変えるMac上のLLM運用の第2節では、READMEに記載された固有の入口と制約をこの節の確認対象として扱う。

サーバーのライフサイクルと設定、oMLXのSSD KVキャッシュが変えるMac上のLLM運用

クイックスタートは短い。アプリを起動し、ウェルカム画面でモデルディレクトリを選び、サーバーを起動して、最初のモデルをダウンロードする。CLIではomlx serve --model-dir ~/modelsに相当する。設定は~/.omlx/settings.jsonに永続化でき、CLIフラグが優先される。READMEはHomebrewサービス向けにOMLX_MODEL_DIR、OMLX_PORTなどの環境変数に言及している。ログは2か所に書かれる。サービスログは$(brew --prefix)/var/log/omlx.log、構造化サーバーログは~/.omlx/logs/server.log。READMEは認証の実行方法を説明しておらず、--api-keyフラグと管理パネルのlocalhost検証スキップオプションに言及するだけである。

DMG、Homebrew、ソースの三つの入口がある。Homebrewなら`omlx start`、`omlx stop`、`omlx restart`でサービスを扱い、クライアントは`http://localhost:8000/v1`、管理画面は`/admin/chat`へ接続する。GLM-5.2、MiniMax M3、Qwen3.5のカスタムカーネルを使う場合、通常のeditable installではビルドされず、full Xcodeが必要になる。(この節ではoMLXのSSD KVキャッシュが変えるMac上のLLM運用の第3項目として扱う。)

oMLXのSSD KVキャッシュが変えるMac上のLLM運用の第3節では、READMEに記載された固有の入口と制約をこの節の確認対象として扱う。

連続バッチ処理と2層KVキャッシュ、oMLXのSSD KVキャッシュが変えるMac上のLLM運用

キャッシュ設計はREADMEで最も特徴的な部分だ。oMLXはvLLMに触発されたブロックベースのページングKVキャッシュ管理を使い、プレフィックス共有とコピーオンライトを備える。ブロックはまずメモリ内のホット層に置かれ、ホットキャッシュが満杯になるとsafetensors形式でSSDのコールド層に書き出される。後のリクエストでプレフィックスが一致すれば、ブロックは再計算ではなくディスクから復元され、READMEによると再起動後も機能する。サーバーはmlx-lmのBatchGeneratorを通じて連続バッチ処理も実行し、最大同時リクエスト数はCLIまたは管理パネルから設定できる。これらの記述はすべてREADMEによるもので、キャッシュ層の独立したレイテンシやスループットの測定値はREADMEにはない。

oMLXの中心は、頻繁に使うホットKVブロックをメモリへ置き、コールドブロックをsafetensors形式でSSDへ書く2層構成にある。READMEは会話途中でコンテキストが変わっても過去のコンテキストを再利用でき、再起動後にプレフィックスを復元すると説明する。キャッシュ容量、SSDの耐久性、モデルごとの設定値はマシンと負荷で変わるため、説明をそのまま性能保証に読み替えない。(この節ではoMLXのSSD KVキャッシュが変えるMac上のLLM運用の第4項目として扱う。)

oMLXのSSD KVキャッシュが変えるMac上のLLM運用の第4節では、READMEに記載された固有の入口と制約をこの節の確認対象として扱う。

モデル管理、モデルごとの設定、管理ダッシュボード、oMLXのSSD KVキャッシュが変えるMac上のLLM運用

サーバーはモデルディレクトリ配下のサブディレクトリからモデルを自動検出し、テキストLLM、VLM、OCRモデル、埋め込みモデル、リランカーをサポートする。MLX形式のモデルを想定し、mlx-community/model-nameのような2階層のフォルダ構成も受け付ける。複数モデル対応はLRU退避、手動ロード/アンロードのバッジ、ピン留め、モデルごとのTTL、そしてデフォルトでシステムRAMから8GBを引いた値になるプロセスメモリ制限を使う。モデルごとの設定にはサンプリングパラメータ、チャットテンプレートのkwargs、TTL、エイリアス、モデルタイプの上書きが含まれ、変更は再起動なしで適用される。プロファイルはモデルごとの設定の名前付きバンドルで、/v1/modelsで<model>:<profile>エントリとして公開できる。管理ダッシュボードは/adminのWeb UIで、リアルタイム監視、チャット、ベンチマーク、HuggingFaceからのモデルダウンロード、8言語のUIを備える。CDN依存はすべてベンダリングされており、完全オフラインで動作する。

DMG、Homebrew、ソースの三つの入口がある。Homebrewなら`omlx start`、`omlx stop`、`omlx restart`でサービスを扱い、クライアントは`http://localhost:8000/v1`、管理画面は`/admin/chat`へ接続する。GLM-5.2、MiniMax M3、Qwen3.5のカスタムカーネルを使う場合、通常のeditable installではビルドされず、full Xcodeが必要になる。(この節ではoMLXのSSD KVキャッシュが変えるMac上のLLM運用の第5項目として扱う。)

oMLXのSSD KVキャッシュが変えるMac上のLLM運用の第5節では、READMEに記載された固有の入口と制約をこの節の確認対象として扱う。

API互換性、ツール呼び出し、統合、oMLXのSSD KVキャッシュが変えるMac上のLLM運用

READMEはOpenAI互換のエンドポイントとして、チャット補完、補完、埋め込み、リランク、モデル一覧を列挙し、加えて/v1/messagesのAnthropic Messagesエンドポイントを挙げている。ストリーミング使用量統計とAnthropicのアダプティブシンキングにも言及している。ツール呼び出しはmlx-lmの内蔵パーサーに依存し、READMEはLlama、Qwen、DeepSeek、Qwen3.5、Gemma、GLM、MiniMax、Mistral、Kimi K2、Longcatなどのモデル群とその出力形式を列挙し、リストにないモデルでもチャットテンプレートがtoolsを受け入れ、認識可能なXMLを出力すれば動作する可能性があるとしている。OpenClaw、OpenCode、Codex、Hermes Agent、Copilot、Piの統合は管理パネルからワンクリックで設定できる。READMEはプラグインAPIを説明しておらず、新しい統合の書き方も示していない。

oMLXの中心は、頻繁に使うホットKVブロックをメモリへ置き、コールドブロックをsafetensors形式でSSDへ書く2層構成にある。READMEは会話途中でコンテキストが変わっても過去のコンテキストを再利用でき、再起動後にプレフィックスを復元すると説明する。キャッシュ容量、SSDの耐久性、モデルごとの設定値はマシンと負荷で変わるため、説明をそのまま性能保証に読み替えない。(この節ではoMLXのSSD KVキャッシュが変えるMac上のLLM運用の第6項目として扱う。)

oMLXのSSD KVキャッシュが変えるMac上のLLM運用の第6節では、READMEに記載された固有の入口と制約をこの節の確認対象として扱う。

編集部の結論

oMLXはApple SiliconのMacでローカル推論を続け、モデルのKVキャッシュをメモリとSSDに分けて使いたい利用者に合う。macOS 15.0以上、Python 3.11から3.13、モデル配置、ポート8000を確認し、GLM-5.2などでネイティブカーネルが有効か`native_kernel_status()`で確認するべきだ。Linuxやx86サーバーを前提にするなら選択肢から外れる。

公式情報源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
コミュニティノート

コミュニティノート