freshcrate
Skin:/
Home > MCP Servers > vmlx

vmlx

vMLX - Home of JANG_Q - Cont Batch, Prefix, Paged, KV Cache Quant, VL - Powers MLX Studio. Image gen/edit, OpenAI/Anth

Why this rank:Strong adoptionRecent releaseHealthy release cadence

Description

vMLX - Home of JANG_Q - Cont Batch, Prefix, Paged, KV Cache Quant, VL - Powers MLX Studio. Image gen/edit, OpenAI/Anth

README

vMLX

Local AI Engine for Apple Silicon

Run LLMs, VLMs, and image generation models entirely on your Mac.
OpenAI + Anthropic + Ollama compatible API. No cloud. No API keys. No data leaving your machine.

PyPI License StarsApple Silicon Python Electron Ko-fi

Quickstart â€ĸ Models â€ĸ Features â€ĸ Image Gen â€ĸ API â€ĸ Desktop App â€ĸ JANG â€ĸ CLI â€ĸ Config â€ĸ Contributing â€ĸ 한ęĩ­ė–´


JANG 2-bit destroys MLX 4-bit on MiniMax M2.5:

Quantization MMLU (200q) Size
JANG_2L (2-bit) 74% 89 GB
MLX 4-bit 26.5% 120 GB
MLX 3-bit 24.5% 93 GB
MLX 2-bit 25% 68 GB

Adaptive mixed-precision keeps critical layers at higher precision. Scores at jangq.ai. Models at JANGQ-AI.

Chat interface Agentic coding chat
Chat with any MLX model -- thinking mode, streaming, and syntax highlighting Agentic chat with full coding capabilities -- tool use and structured output

Quickstart

Install from PyPI

Published on PyPI as vmlx -- install and run in one command:

# Recommended: uv (fast, no venv hassle)
brew install uv
uv tool install vmlx
vmlx serve mlx-community/Qwen3-8B-4bit

# Or: pipx (isolates from system Python)
brew install pipx
pipx install vmlx
vmlx serve mlx-community/Qwen3-8B-4bit

# Or: pip in a virtual environment
python3 -m venv ~/.vmlx-env && source ~/.vmlx-env/bin/activate
pip install vmlx
vmlx serve mlx-community/Qwen3-8B-4bit

Note: On macOS 14+, bare pip install fails with "externally-managed-environment". Use uv, pipx, or a venv.

Your local AI server is now running at http://0.0.0.0:8000 with an OpenAI + Anthropic compatible API. Works with any model from mlx-community -- thousands of models ready to go.

Or download the desktop app

Get MLX Studio -- a native macOS app with chat UI, model management, image generation, and developer tools. No terminal required. Just download the DMG and drag to Applications.

Use with OpenAI SDK

from openai import OpenAI

client = OpenAI(base_url="http://localhost:8000/v1", api_key="not-needed")
response = client.chat.completions.create(
    model="local",
    messages=[{"role": "user", "content": "Hello!"}],
    stream=True,
)
for chunk in response:
    print(chunk.choices[0].delta.content or "", end="", flush=True)

Use with Anthropic SDK

import anthropic

client = anthropic.Anthropic(base_url="http://localhost:8000/v1", api_key="not-needed")
message = client.messages.create(
    model="local",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Hello!"}],
)
print(message.content[0].text)

Use with curl

curl http://localhost:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "local",
    "messages": [{"role": "user", "content": "Hello!"}],
    "stream": true
  }'

Model Support

vMLX runs any MLX model. Point it at a HuggingFace repo or local path and go.

Type Models
Text LLMs Qwen 2/2.5/3/3.5, Llama 3/3.1/3.2/3.3/4, Mistral/Mixtral, Gemma 3, Phi-4, DeepSeek, GLM-4, MiniMax, Nemotron, StepFun, and any mlx-lm model
Vision LLMs Qwen-VL, Qwen3.5-VL, Pixtral, InternVL, LLaVA, Gemma 3n
MoE Models Qwen 3.5 MoE (A3B/A10B), Mixtral, DeepSeek V2/V3, MiniMax M2.5, Llama 4
Hybrid SSM Nemotron-H, Jamba, GatedDeltaNet (Mamba + Attention)
Image Gen Flux Schnell/Dev, Z-Image Turbo (via mflux)
Image Edit Qwen Image Edit (via mflux)
Embeddings Any mlx-lm compatible embedding model
Reranking Cross-encoder reranking models
Audio Kokoro TTS, Whisper STT (via mlx-audio)

Features

Inference Engine

Feature Description
Continuous Batching Handle multiple concurrent requests efficiently
Prefix Cache Reuse KV states for repeated prompts -- makes follow-up messages instant
Paged KV Cache Block-based caching with content-addressable deduplication
KV Cache Quantization Compress cached states to q4/q8 for 2-4x memory savings
Disk Cache (L2) Persist prompt caches to SSD -- survives server restarts
Block Disk Cache Per-block persistent cache paired with paged KV cache
Speculative Decoding Small draft model proposes tokens for 20-90% speedup
Prompt Lookup Decoding No draft model needed — reuses n-gram matches from the prompt/context. Best for structured or repetitive output (code, JSON, schemas). Enable with --enable-pld.
JIT Compilation mx.compile Metal kernel fusion (experimental)
Hybrid SSM Support Mamba/GatedDeltaNet layers handled correctly alongside attention
Distributed Compute Pipeline parallelism across multiple Macs via Thunderbolt 5 / Ethernet / WiFi

Distributed Inference (Multi-Mac)

Run models too large for a single Mac across 2+ machines. Each Mac loads a subset of transformer layers and they communicate hidden states over the network.

# On worker Macs:
pip install vmlx
vmlx-worker --secret mysecret

# On coordinator Mac (runs the server):
vmlx serve JANGQ-AI/Qwen3.5-Coder-Rerank-397B-A27B-JANG_2L --distributed --cluster-secret mysecret
Feature Description
Pipeline Parallelism Split layers across nodes -- hidden state (~8KB/step) flows sequentially
Auto-Discovery Bonjour mDNS, UDP broadcast, HTTP probes, Tailscale, cached peers, manual IP
Capability-Scored Election Most powerful Mac becomes coordinator automatically
Any Network Works TB5 (120 Gbps), 10GbE, 1GbE, WiFi, Tailscale -- PP is not bandwidth-bound
JANG Support Each worker loads its layer range from JANG safetensors (mmap)
Live Node List Desktop app shows discovered nodes, link type, latency, layer assignments
Cluster API /v1/cluster/status, /v1/cluster/nodes, /v1/cluster/scan REST endpoints

5-Layer Cache Architecture

Request -> Tokens
    |
L1: Memory-Aware Prefix Cache (or Paged Cache)
    | miss
L2: Disk Cache (or Block Disk Store)
    | miss
Inference -> float16 KV states
    |
KV Quantization -> q4/q8 for storage
    |
Store back into L1 + L2

Tool Calling

Auto-detected parsers for every major model family:

qwen - llama - mistral - hermes - deepseek - glm47 - minimax - nemotron - granite - functionary - xlam - kimi - step3p5

Reasoning / Thinking Mode

Auto-detected reasoning parsers that extract <think> blocks:

qwen3 (Qwen3, QwQ, MiniMax, StepFun) - deepseek_r1 (DeepSeek R1, Gemma 3, GLM, Phi-4) - openai_gptoss (GLM Flash, GPT-OSS)

Audio

Feature Description
Text-to-Speech Kokoro TTS via mlx-audio -- multiple voices, streaming output
Speech-to-Text Whisper STT via mlx-audio -- transcription and translation

Image Generation & Editing

Generate and edit images locally with Flux models via mflux.

pip install vmlx[image]

# Image generation
vmlx serve schnell                    # or dev, z-image-turbo
vmlx serve ~/.mlxstudio/models/image/flux1-schnell-4bit

# Image editing
vmlx serve qwen-image-edit            # instruction-based editing

Generation API

curl http://localhost:8000/v1/images/generations \
  -H "Content-Type: application/json" \
  -d '{
    "model": "schnell",
    "prompt": "A cat astronaut floating in space with Earth in the background",
    "size": "1024x1024",
    "n": 1
  }'
# Python (OpenAI SDK)
response = client.images.generate(
    model="schnell",
    prompt="A cat astronaut floating in space",
    size="1024x1024",
    n=1,
)

Editing API

# Edit an image with a text prompt (Flux Kontext / Qwen Image Edit)
curl http://localhost:8000/v1/images/edits \
  -H "Content-Type: application/json" \
  -d '{
    "model": "flux-kontext",
    "prompt": "Change the background to a sunset",
    "image": "<base64-encoded-image>",
    "size": "1024x1024",
    "strength": 0.8
  }'
# Python
import base64
with open("source.png", "rb") as f:
    image_b64 = base64.b64encode(f.read()).decode()

response = requests.post("http://localhost:8000/v1/images/edits", json={
    "model": "flux-kontext",
    "prompt": "Make the sky purple",
    "image": image_b64,
    "size": "1024x1024",
    "strength": 0.8,
})

Supported Image Models

Generation Models:

Model Steps Speed Memory
Flux Schnell 4 Fastest ~6-24 GB
Z-Image Turbo 4 Fast ~6-24 GB
Flux Dev 20 Slow ~6-24 GB

Editing Models:

Model Steps Type Memory
Qwen Image Edit 28 Instruction-based editing ~54 GB

API Reference

API Gateway

The desktop app runs an API Gateway on a single port (default 8080) that routes requests to all loaded models by name. Run multiple models simultaneously and access them all through one URL.

# All models accessible through the gateway
curl http://localhost:8080/v1/chat/completions \
  -d '{"model": "Qwen3.5-122B", "messages": [{"role": "user", "content": "Hi"}]}'

# Works with Ollama CLI too
OLLAMA_HOST=http://localhost:8080 ollama run Qwen3.5-122B

The gateway supports OpenAI, Anthropic, and Ollama wire formats. Configure the port in the API tab.

Endpoints

OpenAI / Anthropic

Method Path Description
POST /v1/chat/completions OpenAI Chat Completions API (streaming + non-streaming)
POST /v1/messages Anthropic Messages API
POST /v1/responses OpenAI Responses API
POST /v1/completions Text completions
POST /v1/images/generations Image generation
POST /v1/images/edits Image editing (Qwen Image Edit)
POST /v1/embeddings Text embeddings
POST /v1/rerank Document reranking
POST /v1/audio/transcriptions Speech-to-text (Whisper)
POST /v1/audio/speech Text-to-speech (Kokoro)
GET /v1/models List loaded models
GET /v1/cache/stats Cache statistics
GET /health Server health check

Ollama

Method Path Description
POST /api/chat Chat completion (NDJSON streaming)
POST /api/generate Text generation (NDJSON streaming)
GET /api/tags List loaded models
POST /api/show Model details
POST /api/embeddings Generate embeddings

curl Examples

Chat completion (streaming)

curl http://localhost:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "local",
    "messages": [{"role": "user", "content": "Explain quantum computing in 3 sentences."}],
    "stream": true,
    "temperature": 0.7
  }'

Chat completion with thinking mode

curl http://localhost:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "local",
    "messages": [{"role": "user", "content": "Solve: what is 23 * 47?"}],
    "enable_thinking": true,
    "stream": true
  }'

Tool calling

curl http://localhost:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "local",
    "messages": [{"role": "user", "content": "What is the weather in Tokyo?"}],
    "tools": [{
      "type": "function",
      "function": {
        "name": "get_weather",
        "description": "Get current weather for a location",
        "parameters": {
          "type": "object",
          "properties": {
            "location": {"type": "string", "description": "City name"}
          },
          "required": ["location"]
        }
      }
    }]
  }'

Anthropic Messages API

curl http://localhost:8000/v1/messages \
  -H "Content-Type: application/json" \
  -H "x-api-key: not-needed" \
  -H "anthropic-version: 2023-06-01" \
  -d '{
    "model": "local",
    "max_tokens": 1024,
    "messages": [{"role": "user", "content": "Hello!"}]
  }'

Embeddings

curl http://localhost:8000/v1/embeddings \
  -H "Content-Type: application/json" \
  -d '{
    "model": "local",
    "input": "The quick brown fox jumps over the lazy dog"
  }'

Text-to-speech

curl http://localhost:8000/v1/audio/speech \
  -H "Content-Type: application/json" \
  -d '{
    "model": "kokoro",
    "input": "Hello, welcome to vMLX!",
    "voice": "af_heart"
  }' --output speech.wav

Speech-to-text

curl http://localhost:8000/v1/audio/transcriptions \
  -F file=@audio.wav \
  -F model=whisper

Image generation

curl http://localhost:8000/v1/images/generations \
  -H "Content-Type: application/json" \
  -d '{
    "model": "schnell",
    "prompt": "A mountain landscape at sunset",
    "size": "1024x1024"
  }'

Reranking

curl http://localhost:8000/v1/rerank \
  -H "Content-Type: application/json" \
  -d '{
    "model": "local",
    "query": "What is machine learning?",
    "documents": [
      "ML is a subset of AI",
      "The weather is sunny today",
      "Neural networks learn from data"
    ]
  }'

Cache stats

curl http://localhost:8000/v1/cache/stats

Health check

curl http://localhost:8000/health

Desktop App

vMLX includes a native macOS desktop app (MLX Studio) with 5 modes:

Mode Description
Chat Conversation interface with chat history, thinking mode, tool calling, agentic coding
Server Manage model sessions -- start, stop, configure, monitor
Image Text-to-image generation and image editing with Flux, Kontext, Qwen, and Fill models
Tools Model converter, GGUF-to-MLX, inspector, diagnostics
API Live endpoint reference with copy-pasteable code snippets
Image generation and editing Developer tools
Image generation and editing with Flux models Developer tools -- model conversion and diagnostics
Anthropic API endpoint GGUF to MLX conversion
Anthropic Messages API endpoint -- full compatibility GGUF to MLX conversion -- bring your own models

Download

Get the latest DMG from MLX Studio Releases, or build from source:

git clone https://github.com/jjang-ai/vmlx.git
cd vmlx/panel
npm install && npm run build
npx electron-builder --mac dmg

Menu Bar

vMLX lives in your menu bar showing all running models, GPU memory usage, and quick controls.

Menu Bar


Advanced Quantization

vMLX supports standard MLX quantization (4-bit, 8-bit uniform) out of the box. For users who want to push further, JANG adaptive mixed-precision assigns different bit widths to different layer types -- attention gets more bits, MLP layers get fewer -- achieving better quality at the same model size.

JANG Profiles

Profile Attention Embeddings MLP Avg Bits Use Case
JANG_2M 8-bit 4-bit 2-bit ~2.5 Balanced compression
JANG_2L 8-bit 6-bit 2-bit ~2.7 Quality 2-bit
JANG_3M 8-bit 3-bit 3-bit ~3.2 Recommended
JANG_4M 8-bit 4-bit 4-bit ~4.2 Standard quality
JANG_6M 8-bit 6-bit 6-bit ~6.2 Near lossless

Convert

pip install vmlx[jang]

# Standard MLX quantization
vmlx convert my-model --bits 4

# JANG adaptive quantization
vmlx convert my-model --jang-profile JANG_3M

# Activation-aware calibration (better at 2-3 bit)
vmlx convert my-model --jang-profile JANG_2L --calibration-method activations

# Serve the converted model
vmlx serve ./my-model-JANG_3M --continuous-batching --use-paged-cache

Pre-quantized JANG models are available at JANGQ-AI on HuggingFace.

Smelt Mode (Partial Expert Loading)

For MoE models that don't fit in RAM, Smelt loads only a subset of experts per layer from SSD and keeps the backbone resident. Routing is biased toward the resident experts, so response quality stays coherent while RAM usage drops. Trade-off: throughput scales inversely with expert % loaded, because expert swaps hit SSD on the hot path.

# Load 50% of experts per layer (default when --smelt alone)
vmlx serve ./MyMoE-JANG_4M --smelt --smelt-experts 50

# Aggressive: load 25% — smallest RAM, slowest
vmlx serve ./MyMoE-JANG_4M --smelt --smelt-experts 25

Benchmarks on Nemotron-Cascade-2-30B-A3B-JANG_4M (23 MoE layers × 128 experts, Apple M3 Ultra / 128 GB, dedicated machine, no parallel models):

--smelt-experts Active RAM Decode tok/s RAM saving Coherent
off (baseline) 17,408 MB 89.9 — ✓
50 9,529 MB 66.5 −45% ✓
25 5,590 MB * −68% ✓

* Responses too short (2-5 tokens) for reliable steady-state tok/s measurement at 25 %. Subjectively responsive.

All three configurations produced coherent, non-looping output. No quality degradation observed — routing bias keeps the model on-topic.

Credit: Smelt mode is inspired by Anemll's flash-moe — a pure C / Objective‑C / Metal inference engine that showed huge MoE models (Qwen3.5-397B) can run on modest Apple Silicon hardware by streaming expert weights from SSD with pread() on demand. vMLX Smelt takes a different implementation path: Python/MLX, tied to the JANG quantization format, and loading a fixed subset of experts per layer at startup (backbone resident, routing biased toward the loaded subset) rather than on-demand per-token. It plugs into the full vMLX server with continuous batching, paged cache, and OpenAI-compatible API. Different engine, same core insight — thanks to the flash-moe team for validating the approach.

Smelt is mutually exclusive with VLM mode. vMLX detects smelt and automatically disables --is-mllm (with a warning) because the vision tower is not wired through the partial-expert loader — image input on a smelt-loaded VLM would produce garbage logits. Use a text-only model when running smelt, or disable smelt when running a VLM.

Smelt requires an MoE model in JANG format. Not compatible with dense models (no experts to partial-load) or with non-JANG formats.


CLI Commands

vmlx serve <model>              # Start inference server
vmlx convert <model> --bits 4   # MLX uniform quantization
vmlx convert <model> -j JANG_3M # JANG adaptive quantization
vmlx info <model>               # Model metadata and config
vmlx doctor <model>             # Run diagnostics
vmlx bench <model>              # Performance benchmarks
vmlx-worker --secret <secret>   # Start distributed worker node

Configuration

Server Options

vmlx serve <model> \
  --host 0.0.0.0 \              # Bind address (default: 0.0.0.0)
  --port 8000 \                 # Port (default: 8000)
  --api-key sk-your-key \       # Optional API key authentication
  --continuous-batching \       # Enable concurrent request handling
  --enable-prefix-cache \       # Reuse KV states for repeated prompts
  --use-paged-cache \           # Block-based KV cache with dedup
  --kv-cache-quantization q8 \  # Quantize cache: q4 or q8
  --enable-disk-cache \         # Persist cache to SSD
  --enable-jit \                # JIT Metal kernel compilation
  --tool-call-parser auto \     # Auto-detect tool call format
  --reasoning-parser auto \     # Auto-detect thinking format
  --log-level INFO \            # Logging: DEBUG, INFO, WARNING, ERROR
  --max-model-len 8192 \        # Max context length
  --speculative-model <model> \ # Draft model for speculative decoding
  --enable-pld \                # Prompt Lookup Decoding — no draft model, best for code/JSON/schemas
  --distributed \               # Enable multi-Mac pipeline parallelism
  --cluster-secret <secret> \   # Shared auth secret for workers
  --distributed-mode pipeline \ # pipeline (default) or tensor (coming soon)
  --worker-nodes ip:port,... \  # Manual worker IPs (overrides auto-discovery)
  --cors-origins "*"            # CORS allowed origins

Quantization Options

vmlx convert <model> \
  --bits 4 \                    # Uniform quantization bits: 2, 3, 4, 6, 8
  --group-size 64 \             # Quantization group size (default: 64)
  --output ./output-dir \       # Output directory
  --jang-profile JANG_3M \      # JANG mixed-precision profile
  --calibration-method activations  # Activation-aware calibration

Image Generation & Editing Options

pip install vmlx[image]

# Generation models
vmlx serve schnell \            # or dev, z-image-turbo
  --image-quantize 4 \          # Quantization: 4, 8 (omit for full precision)
  --port 8001

# Editing models
vmlx serve qwen-image-edit \    # Instruction-based editing (full precision only)
  --port 8001

# Local model directory
vmlx serve ~/.mlxstudio/models/image/FLUX.1-schnell-mflux-4bit

Audio Options

TTS and STT require the mlx-audio package:

pip install mlx-audio

# TTS: serve Kokoro model
vmlx serve kokoro --port 8002

# STT: serve Whisper model
vmlx serve whisper --port 8003

Optional Dependencies

pip install vmlx              # Core: text LLMs, VLMs, embeddings, reranking
pip install vmlx[image]       # + Image generation (mflux)
pip install vmlx[jang]        # + JANG quantization tools
pip install vmlx[dev]         # + Development/testing tools
pip install vmlx[image,jang]  # Multiple extras

Architecture

+--------------------------------------------+
|          Desktop App (Electron)             |
|   Chat | Server | Image | Tools | API      |
+--------------------------------------------+
|          Session Manager (TypeScript)       |
|   Process spawn | Health monitor | Tray     |
+--------------------------------------------+
|         vMLX Engine (Python / FastAPI)       |
|  +--------+  +---------+  +-----------+    |
|  |Simple  |  | Batched |  | ImageGen  |    |
|  |Engine  |  | Engine  |  | Engine    |    |
|  +---+----+  +----+----+  +-----+-----+    |
|      |            |              |          |
|  +---+------------+--+    +-----+-----+    |
|  | mlx-lm / mlx-vlm  |    |  mflux    |    |
|  +--------+-----------+    +-----------+    |
|           |                                 |
|  +--------+----------------------------+    |
|  |       MLX Metal GPU Backend          |    |
|  | quantized_matmul | KV cache | SDPA   |    |
|  +--------------------------------------+    |
+--------------------------------------------+
|  L1: Prefix Cache (Memory-Aware / Paged)    |
|  L2: Disk Cache (Persistent / Block Store)  |
|  KV Quant: q4/q8 at storage boundary       |
+--------------------------------------------+

Contributing

Contributions are welcome. Here is how to set up a development environment:

git clone https://github.com/jjang-ai/vmlx.git
cd vmlx

# Python engine
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev,jang,image]"
pytest tests/ -k "not Async"    # 2000+ tests

# Electron desktop app
cd panel && npm install
npm run dev                      # Development mode with hot reload
npx vitest run                   # 1545+ tests

Project Structure

vmlx/
  vmlx_engine/          # Python inference engine (FastAPI server)
  panel/                # Electron desktop app (React + TypeScript)
    src/main/           # Electron main process
    src/renderer/       # React frontend
    src/preload/        # IPC bridge
  tests/                # Python test suite
  assets/               # Screenshots and logos

Guidelines

  • Run the full test suite before submitting PRs
  • Follow existing code style and patterns
  • Include tests for new features
  • Update documentation for user-facing changes

License

Apache License 2.0 -- see LICENSE.


Built by Jinho Jang (eric@jangq.ai)
JANGQ AI â€ĸ PyPI â€ĸ GitHub â€ĸ Downloads


한ęĩ­ė–´ (Korean)

vMLX — Apple Siliconė„ ėœ„í•œ 로ėģŦ AI 뗔맄

Macė—ė„œ LLM, VLM, ė´ë¯¸ė§€ ėƒė„ą 및 íŽ¸ė§‘ ëĒ¨ë¸ė„ ė™„ė „ížˆ 로ėģŦ로 ė‹¤í–‰í•˜ė„¸ėš”. OpenAI + Anthropic 호환 API. 클ëŧėš°ë“œ ė—†ėŒ. API 키 ëļˆí•„ėš”. ë°ė´í„°ę°€ 기기ëĨŧ ë– ë‚˜ė§€ ė•ŠėŠĩ니다.

ëš ëĨ¸ ė‹œėž‘

pip install vmlx
vmlx serve mlx-community/Llama-3.2-3B-Instruct-4bit

ėŖŧėš” 기ëŠĨ

기ëŠĨ 네ëĒ…
í…ėŠ¤íŠ¸ ėƒė„ą MLX 및 JANG í˜•ė‹ė˜ LLM ėļ”률
ëš„ė „-떏떴 ëĒ¨ë¸ ė´ë¯¸ė§€ + í…ėŠ¤íŠ¸ 멀티ëǍë‹Ŧ ėļ”률
ė´ë¯¸ė§€ ėƒė„ą Flux Schnell/Dev, Z-Image Turbo (mflux 기반)
ė´ë¯¸ė§€ íŽ¸ė§‘ Qwen Image Edit (í…ėŠ¤íŠ¸ ė§€ė‹œ 기반 ė´ë¯¸ė§€ íŽ¸ė§‘)
5ë‹¨ęŗ„ ėēė‹ą 프ëĻŦí”Ŋ늤, íŽ˜ė´ė§€ë“œ, KV ė–‘ėží™”, ë””ėŠ¤íŦ, 메ëǍëĻŦ ė¸ė‹ ėēė‹œ
ė—°ė† ë°°ėš­ ë‹¤ė¤‘ ë™ė‹œ ėš”ė˛­ 래ëĻŦ
ė—ė´ė „íŠ¸ 도ęĩŦ 30氜 내ėžĨ 도ęĩŦ (파ėŧ, ė›š ę˛€ėƒ‰, Git, 터미널)
OpenAI API /v1/chat/completions, /v1/images/generations, /v1/images/edits
Anthropic API /v1/messages (ėŠ¤íŠ¸ëĻŦ밍, 도ęĩŦ 호ėļœ, ė‹œėŠ¤í…œ 프ëĄŦ프트)

ė´ë¯¸ė§€ ėƒė„ą

pip install vmlx[image]
vmlx serve schnell          # ëš ëĨ¸ ėƒė„ą (4 ë‹¨ęŗ„)
vmlx serve dev              # ęŗ í’ˆė§ˆ ėƒė„ą (20 ë‹¨ęŗ„)

ė´ë¯¸ė§€ íŽ¸ė§‘

vmlx serve qwen-image-edit  # í…ėŠ¤íŠ¸ ė§€ė‹œ 기반 ė´ë¯¸ė§€ íŽ¸ė§‘
# ė´ë¯¸ė§€ íŽ¸ė§‘ API
curl http://localhost:8000/v1/images/edits \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen-image-edit",
    "prompt": "ë°°ę˛Ŋė„ í•´ė§ˆë…˜ėœŧ로 ëŗ€ę˛Ŋ",
    "image": "<base64 ė¸ėŊ”딊된 ė´ë¯¸ė§€>",
    "size": "1024x1024",
    "strength": 0.8
  }'

ë°ėŠ¤íŦ톱 ė•ą (MLX Studio)

macOS ë„¤ė´í‹°ë¸Œ ë°ėŠ¤íŦ톱 ė•ąėœŧ로 5氀맀 ëĒ¨ë“œëĨŧ 렜ęŗĩ합니다:

ëĒ¨ë“œ 네ëĒ…
ėą„íŒ… 대화 ė¸í„°íŽ˜ė´ėŠ¤, ėą„íŒ… 기록, 도ęĩŦ 호ėļœ, ė—ė´ė „íŠ¸ ėŊ”딊
ė„œë˛„ ëĒ¨ë¸ ė„¸ė…˜ 관ëĻŦ — ė‹œėž‘, ė •ė§€, 네렕, ëĒ¨ë‹ˆí„°ë§
ė´ë¯¸ė§€ í…ėŠ¤íŠ¸-ė´ë¯¸ė§€ ėƒė„ą 및 ė´ë¯¸ė§€ íŽ¸ė§‘ (Flux, Qwen ëĒ¨ë¸)
도ęĩŦ ëĒ¨ë¸ ëŗ€í™˜ę¸°, GGUF-MLX ëŗ€í™˜, ė§„ë‹¨
API ė‹¤ė‹œę°„ ė—”ë“œíŦė¸íŠ¸ ė°¸ėĄ° 및 ėŊ”드 ėŠ¤ë‹ˆíŽĢ

ė´ë¯¸ė§€ ėƒė„ą 및 íŽ¸ė§‘

ė„¤ėš˜

pip install vmlx              # ę¸°ëŗ¸: í…ėŠ¤íŠ¸ LLM, VLM, ėž„ë˛ ë”Š
pip install vmlx[image]       # + ė´ë¯¸ė§€ ėƒė„ą/íŽ¸ė§‘ (mflux)
pip install vmlx[jang]        # + JANG ė–‘ėží™” 도ęĩŦ
pip install vmlx[audio]       # + TTS/STT (mlx-audio)

ëŧė´ė„ ėŠ¤

Apache License 2.0 — LICENSE ė°¸ėĄ°.


ę°œë°œėž: ėžĨė§„í˜¸ (eric@jangq.ai)
JANGQ AI â€ĸ Ko-fi로 í›„ė›í•˜ę¸°

Release History

VersionChangesUrgencyDate
v1.6.81# vMLX 1.6.81 - Let native MTP, DFlash2 and DSpark choose draft work adaptively within their verified limits. Treat bundle and tuning depths as starting points, with measured ordinary-decoding fallback and re-entry. - Add explicit Adaptive LiLiCorr controls for compatible Nemotron Bolt bundles. Preserve the existing off-by-default behavior and saved session choice. - Correct native verification at long-context attention dispatch boundaries and Qwen DFlash2 verification across wider blocks. PresHigh10/21/2026
v1.6.80# vMLX 1.6.80 ## Models and inference - Add MiMo-V2.6 image, video, audio and tool support, bundled DFlash detection, and SSD-backed conversations. Restore ordinary decoding when the drafter is disabled. - Add Nemotron-3.5 Bolt and Super-VL, including native vision support and compatible Super-VL MTP. LiLiCorr remains optional and off by default. - Improve long-document prefix reuse, prefill cancellation, and background cache persistence. Preserve native model sampling and existing speculativeHigh10/18/2026
v1.6.79# vMLX 1.6.79 ## Changes - Preserve model-native and explicit output limits when projected memory estimates are conservative; retain adaptive prefill chunking and memory advisories. - Fix native-EOS reasoning/tool classification, remove duplicate reasoning rails, and refresh attachment capabilities after engine restarts. - Correct DFlash2 cache rollback at EOS, chain SSD snapshots across pending final tokens, and isolate MiniCPM media-cache keys by crop so appending media preserves earlier preHigh10/14/2026
v1.6.78# vMLX 1.6.78 - Add MiniCPM-V-4.7 text, image and video support, with bundled DSpark detection and exact verification by default. Bundles without a drafter use ordinary decoding; explicit opt-out remains available. - Add Naive N0.5 and GLM-5.3 Flash JANGHT execution improvements, GLM DFlash2 integration, and further Qwen speculative-decoding and prefill improvements. Performance depends on the bundle, sampling and workload. - Publish completed responses before background SSD persistence finisheHigh10/13/2026
v1.6.77# vMLX 1.6.77 ## Changes - Batched MLLM: requests with stop strings no longer hang the server (`202d8d0b4`) - Qwen4 PLE warm: pause for in-flight reads, not for every forward (`43ed9a43a`) - Media in tool messages reaches the model with a placeholder (`e5a1aa0d9`) - SimpleEngine plans video frames like the batched engine; image limit is advisory (`7eb644703`) - GLM-5.3 JANGH2: fused expert-tile + Hadamard-32 prefill on by default (`58a26a396`) - Naive N0.5: serve long prompts with the padded fHigh10/8/2026
v1.6.76# vMLX 1.6.76 This release improves image/video conversations and cache correctness while preserving the existing Qwen Adaptive MTP and DFlash2 execution paths. - Qwen DFlash2 sessions support image/video prefill and reusable media context. Mixed image/video history retains its original order. - SSD vision features are isolated by media, model weights and runtime identity, and are removed by the appropriate cache-clear action. - DFlash2 snapshots preserve the original prompt state across subseHigh10/7/2026
v1.6.75# vMLX 1.6.75 This release brings the next Flash Next Adaptive improvements and bundled DFlash2 support for Qwen3.8-27B, with fixes for SSD context reuse, tool continuations and API controls. - Compatible Qwen3.8-27B bundles automatically use their included DFlash2 drafter. Explicit opt-out and manual drafter selection remain available. Compatible Flash Next bundles retain native Adaptive MTP. - Faster batched verification and adaptive draft blocks improve 27B decoding. Flash Next retains fuseHigh10/6/2026
v1.6.74# vMLX 1.6.74 Qwen Flash Next improvements for affine and JANGH bundles, with adaptive native MTP and fused execution paths. User sampling settings are preserved; drafting adapts to measured overhead. Gains depend on hardware, power mode and workload. - SSD prefix and native recurrent-state reuse across tool continuations, with cache writes settled before terminal delivery and accurate cache-capacity notices. - Image/video history and tool continuation checks on the packaged Flash Next affine High10/5/2026
v1.6.73# vMLX 1.6.73 This release improves GLM 5.3 Flash and Naive N0.5 loading, native caching, reasoning controls and streamed responses, and updates the macOS runtime to MLX 0.32.3 with JANG 2.5.49. - Preserve native prose and tool-call boundaries in streamed Chat and Responses output, including code examples. - Normalize supported reasoning-effort values consistently before forwarding them to native model templates; reject malformed nested effort types. - Reuse the longest valid Naive sliding-winHigh10/1/2026
v1.6.71# vMLX 1.6.71 vMLX 1.6.71 fixes the prefill throughput counter. - Prefill tok/s now uses engine-measured model prefill and prompt-state preparation time, rather than uncached tokens divided by time to first token. Queueing, input preprocessing and cache restoration are excluded; TTFT stays separate. - Preserve measured rates through local Chat Completions, Responses and tool continuations. Historical estimates and engines without a timing receipt do not display a fabricated rate. - Retains theHigh9/28/2026
v1.6.68# vMLX 1.6.68 ## Checkpoint highlights - Native JANGH loading with legacy JANGTQ v2 compatibility and exact codebook-fit reuse during startup. - Faster SSD prefix-candidate hashing, corrected native Qwen checkpoint replay, and recovery from invalid longer GLM cache entries using a valid shorter prefix. - Correct sampled MTP acceptance and fail-closed rollback; improved Responses tool/media history and native GLM reasoning-effort handling. - Clearer loading/cache statistics, video metadata presHigh9/27/2026
v1.6.67# vMLX 1.6.67 ## Changes - Publish vMLX 1.6.66 updater manifest (`694da6ca`) - Fix website release versions followed by sentence punctuation (`7bd87674`) - Preserve complete native OpenPangu tool schemas across continuations (`a8db56ad`) - Reject incomplete OpenPangu schemas despite native examples (`cd396259`) - Prepare vMLX 1.6.67 (`23ea3478`) ## Runtime provenance - vMLX source: `c4a95fe4ee156d18456051b75cb482518e513f1f` - JANG runtime: `bb97d559c38227cf6da2dcbc3c64f61e7ffaf436` (`jang 2.High9/25/2026
v1.6.64# vMLX 1.6.64 ## Changes - Preserve schema-declared string arguments in XML tool calls, including the Qwen XML route. JSON-looking text remains a string instead of being decoded into an object or array. (`42fe9daf6`, `2749abdb7`) - Prevent malformed tool arguments from crashing chat tool previews. (`9e92fa929`) - This is a focused correctness release. Existing runtime precision, sampling, MTP and cache defaults are unchanged; experimental cold-start optimizations are not included. ## Runtime High9/19/2026
v1.6.62# vMLX 1.6.62 ## Changes - Publish vMLX 1.6.61 updater manifest (`a7f857ec0`) - fix(cache): refresh native SSD boundary indexes after pool mutations (`746bf5f6e`) - perf(qwen4): add opt-in precise AR sigmoid epilogue (`4b270967d`) - fix(stream): preserve explicit MLLM cancellation terminals (`3f9ed1e43`) - fix(chat): display server-side cancellation notices (`d790ea7c7`) - fix(tools): bound exceptional MCP results in display and continuation (`0a4e54e4f`) - Preserve explicit cancellation acrosHigh9/18/2026
v1.6.61# vMLX 1.6.61 ## Changes - Persistent caching: preserve each native tensor's precision and packed state during SSD storage. Validate explicit quantization metadata, geometry and cache chains before restoring affine-quantized entries; model weight precision is not treated as cache precision. - Hybrid tool and media continuations: retain a later safe checkpoint alongside a learned repair boundary, avoiding unnecessary re-prefill when both are needed. Release completed native snapshots after publHigh9/16/2026
v1.6.60# vMLX 1.6.60 This release improves GLM-5.3 Flash prefill and persistent caching, preserves reasoning during multimodal tool continuations, and corrects Responses finalization. ## Changes - **Qualified GLM prefill improvement.** By default, M5 Max systems running MLX 0.32.2 with one active sequence use the qualified exact reduction, subject to operand and launch-safety checks; explicit opt-outs are preserved. Three matched pairs with a 4,305-token input improved median prefill from 332 to 426High9/16/2026
v1.6.59# vMLX 1.6.59 ## Changes - Preserve image and video attachments when editing saved chat messages, avoid reprocessing media on every keystroke, and stop cleanly if history truncation fails. - Preserve streamed Responses reasoning around tool-call buffering. Error-only terminal events no longer count as generated tokens; context errors distinguish input and output budgets. - Show SSD capacity notices and Clear SSD Cache controls in the active Chat view. Refused writes no longer claim durable stoHigh9/15/2026
v1.6.58# vMLX 1.6.58 This checkpoint improves remote API controls, tool-call continuation, SSD prefix lookup, and prefill lifecycle handling. ## Changes - Remote Chat Completions and Responses sessions send protocol-specific reasoning controls and preserve tool-call IDs even when providers stream the ID separately from the function name and arguments. Remote throughput is labelled as an observed request-window rate, with counts accumulated across tool continuations. - New Qwen Flash-Next desktop sesHigh9/14/2026
v1.6.57# vMLX 1.6.57 - Improved local-folder discovery and launch validation for compatible mflux image generation/editing exports, including quantization metadata, progress, cancellation and output history. - Corrected downloader cancellation, paused/queued states and local-storage error handling. - Corrected output-token settings, live settings refresh, tool-error finalization and gateway usage reporting. - Added Spark-X2.5 integration and corrected mixed-state and Flash-Next media-prefix continuatiHigh9/11/2026
v1.6.45## vMLX 1.6.45 ### Fixed - **Qwen3.8 Flash Next tool calling.** Bundles converter-stamped `tool_parser=hermes` (JSON-only) while the chat template emits Qwen `<function=â€Ļ><parameter=â€Ļ>` XML, so a share of sampled `tool_choice=required` calls failed closed with HTTP 400. The stale hermes stamp is now neutralized at every layer — engine registry, app launcher, and a one-time migration for previously saved sessions — so the family `qwen` parser (which accepts the hermes JSON body and every XML varHigh8/29/2026
v1.6.31## vMLX 1.6.31 Reliability follow-up to 1.6.30, focused on tool-calling, reasoning, and API-dialect consistency. ### Fixes - Families without a native thinking-off mode (LFM2.5, Step-3.7) no longer reject every request when a global thinking-off default is configured; the server default now resolves to Auto and the model's native reasoning rail decides. - Qwen3.6-35B recoverable malformed tool calls are now repaired on the parser route the shipping bundles actually use; `tool_choice: "requiredHigh8/15/2026
v1.6.22## vMLX 1.6.22 ### Performance - **DeepSeek V4 Flash decodes ~11% faster at every context length.** The MLX cache ceiling was a fixed 8 GB, which made MLX free and re-allocate decode graph buffers it could have reused. It now scales with installed memory (16 GB → 4 GB, 64 GB → 11.5 GB, 128 GB → 23 GB, capped at 24 GB). Peak process memory is unchanged, because this bounds reclaimable cache rather than reserving it. ``` ceiling 6835 tok 7715 tok 9915 tok 8 GB 17.6 High8/3/2026
v1.6.14Public signed-runtime checkpoint for multimodal conversation-state isolation, progressive reasoning/content streaming, structured tool continuation, and architecture-aware prefix/paged/block-disk/TurboQuant KV cache behavior. Exact source: e1776a485e8a85f3957b79030e12f4c312eda04b. Full Python: 6203 passed, 96 skipped, 92 deselected. Full panel: 2346 passed, 3 skipped. Both Sequoia and Tahoe artifacts were Developer ID signed, notarized, stapled, Gatekeeper-accepted, installed, and live-tested thHigh7/20/2026
v1.6.3vMLX 1.6.3 Correctness release: concurrent multimodal decode, media streaming, and co-batch determinism. Highlights: - Concurrent Gemma-4 corruption fixed: co-batched requests could corrupt one sequence into digit spam or empty streams. Root cause was scalar rope offsets feeding the batched full-attention path; the engine now supplies per-row offset arrays throughout the Gemma-4 attention/rope compatibility layer. This also resolves the long-standing "corrupted batched media prefill" that forcHigh7/9/2026
v1.5.67vMLX 1.5.67 Highlights: - MiniMax-M3 scoped compatibility release path retained from 1.5.66 with autodetection, reasoning/tool parser wiring, model-owned generation defaults, and native MSA prefix-cache handling. - Release preflight now accepts the 1.5.67 source/version lane and checks required Gemma 4 serving generation metadata for non-diffusion Gemma 4 rows. - Bundled runtime is built from clean JANG tools source and verifies critical vmlx_engine, JANG tools, Gemma 4, MLX, and mlx-vlm importMedium6/19/2026
v1.5.62# vMLX 1.5.62 MiniMax-M3 compatibility checkpoint focused on M3 autodetection, CLI/UI settings, reasoning/template handling, and MSA cache safety. ## Highlights - MiniMax-M3 dynamic MSA path stays off `mx.compile`/JIT. - Paged cache and TurboQuant KV are suppressed for native M3 MSA. - M3 SSD/prefix cache reuse preserves `MiniMaxM3SparseCache` structure, including `keys`, `values`, `idx_keys`, and offsets. - Release packaging explicitly signs nested Electron/Squirrel runtime binaries befoHigh6/17/2026
v1.5.57vMLX 1.5.57 checkpoint release. This is a fresh signed and notarized checkpoint build so GitHub Releases, updater metadata, the download page, and PyPI can move past the stale 1.5.56 surface while live runtime proof continues. Included: - Current vMLX Python engine/package version 1.5.57. - Current Gemma4 QAT/JANG_4M source-smoke runtime surface and Gemma4 tool-parser modality sentinel cleanup. - Current Qwen/N2 Responses/tool-call tracing work and cache/L2 proof hooks. - Current panel/runtimeHigh6/10/2026
v1.5.54vMLX 1.5.54 Highlights: - Ships the model-owned generation-default fix in the public app bundle so explicit JANG defaults such as Step-3.7-Flash temperature 0.00, top-p 1.0, and top-k off are detected from bundle metadata, displayed in app settings, and applied before session config is saved. - Keeps startup sampling behavior derived from generation_config.json and jang_config.json instead of hidden app-side sampler forcing. - Carries the 1.5.53 emergency release fixes for Step metadata, ZAYA VHigh6/2/2026
v1.5.49## vMLX 1.5.49 This release tightens the Python/Electron runtime and packaged app after the v1.5.48 cache/settings audit. ### Fixed - DSV4 Flash now launches with the native SWA+CSA/HCA composite prefix cache path enabled by default, with 256-token DSV4 block indexing. - DSV4 CSA/HCA pool codec now uses the materialized pool implementation from clean JANG source, avoiding repeated historical pool dequant/concat on cache reads. - Generic KV q4/q8 cache quantization remains suppressed for DSV4;High5/24/2026
v1.5.48vMLX 1.5.48 Highlights: - Aligned Qwen3.6 affine-JANG native-MTP VL routing across the engine registry, decode-speed launch rows, panel detection, and API policy. - Added local-path parity coverage for high-risk DSV4, Qwen, Hy3, and Nemotron artifacts so parser, reasoning, cache, modality, and launch policy do not silently diverge between UI and engine. - Added post-release guards proving explicit Chat/Responses output caps do not mutate server startup defaults. Downloads: - The updater manifeHigh5/22/2026
v1.5.36vMLX 1.5.36 Fixes and release integrity: - Ships the installed-app Stream(gpu, 0) cache-hit fix for single-active JANG cache replay. - Restores bundled package assets required by the Python app, including chat templates, defaults, and Metal codebook kernels. - Rebuilds the macOS app bundle from the canonical JANG source checkout, not the unfinished JangStudio/profile-matrix worktree. - Adds release gates for bundled vmlx_engine assets, canonical jang_tools provenance, relocatable bundled-pythonHigh5/16/2026
v2.0.0-rc.1Swift native Mac app, Developer-ID notarized. **SHA256**: `a4f47a6db4f679a29c0191a04e640b1386971108b5d402cc7f110d227f24ae56` **Size**: 24.3 MB Notarized + stapled. Hardened runtime. Apple Team ID: 55KGF2S5AY. Identifier: ai.jangq.vmlx.High5/4/2026
v1.5.0Live audit 2026-04-30 caught Laguna-XS.2-mxfp4 crashing with 'Model type laguna not supported'. The architecture-specific routing branches were INSIDE the is_jang_model() gate, which only matches jang/jjqf/mxq/mxtq weight formats — MXFP4 bundles fell through to stock mlx_lm. Hoisted the Laguna + ministral3 branches to BEFORE the JANG gate so all weight formats land in the right loader.High5/1/2026
v1.3.34Post-v1.3.33 fixes driven by user reports and a dedicated-machine test matrix across 5 models. ## SSM Deferred Re-derive (Hybrid SSM + Thinking Models) For thinking models on hybrid SSM architectures (Nemotron, Qwen3.5-VL), the post-generation SSM state was contaminated by thinking tokens and previously **skipped entirely** — causing 100% SSM companion cache miss on every multi-turn request. Now the scheduler **queues a deferred re-derive** that runs during idle time: a separate prefill pass High4/9/2026
v1.3.33Post-v1.3.32 audit cycle — fixes three GitHub issues and an internal release-audit sweep. Headline fix unblocks vision prompts on every batched-engine VLM. ## Fix #1 — [Issue #56](https://github.com/jjang-ai/vmlx/issues/56): Vision/MLLM requests return empty response on BatchedEngine Mistral 4 / Pixtral, Qwen3.5-VL, Gemma 4 — vision prompts on the batched engine silently dropped with `content=null`, `prompt_tokens=0`, `finish_reason=stop`. **Root cause** — two-step dtype mismatch in `mllm_batMedium4/9/2026
v1.3.32Gemma 4 VLM image recognition fix (two-layer bug). **Bug 1** — mlx_vlm MODEL_CONFIG missing `gemma4` entry → `apply_chat_template()` raised `Unsupported model: gemma4` → silent fallback to text-only tokenizer → image content parts dropped → model answered as if no image was attached. **Fix**: Register `gemma4`/`gemma4_text` under `LIST_WITH_IMAGE_TYPE` in `vmlx_engine/__init__.py` at import time so the Jinja chat template renders `<|image|>` tokens correctly. **Bug 2** — Gemma 4 vision tower High4/9/2026
v1.3.31## 4-agent audit 2026-04-07 — Phase 5 polish (22 fixes) Cross-agent audit delivering cross-session cache sharing, Aho-Corasick stop matching, SSM companion cache extraction, Gemma 4 native shim, and the mlx-lm 0.31.2 bump. **263/263 cache tests PASS** — 27/27 live cells across Qwen3 / Gemma 4 / Nemotron Cascade 2 / Mistral 4. ### Agent 1 — Cache (Coordinator) - LRU+Trie cross-session prefix sharing on MemoryAwarePrefixCache (production default) — system → user → assistant priority eviction - Medium4/9/2026
v1.3.30## v1.3.30 ### Bug Fixes - **Metal GPU timeout**: Chunked parameter evaluation for large models (>200GB JANG) - Remove lazy parameter from load functions (always evaluate parameters) ### Install ```bash pip install -U vmlx ```Medium4/7/2026
v1.3.28## What's New ### Critical Fix - **Gemma 4 VLM image processing** — Images were silently dropped due to mlx_vlm `prepare_inputs` hardcoding `<image>` split. Gemma 4 uses `<|image|>`. Also fixes Gemma 3 and jina_vlm image processing. ### Memory Leak Hardening - Vision embedding cache reduced from 100→16 entries across all callers - `mx.eval()` + `del` + `mx.clear_cache()` in all 3 prefill paths (happy, broadcast retry, nuclear retry) - Non-broadcast error path now cleans up pixel_values and visMedium4/5/2026
v1.3.26## Fixes ### Gemma 4 - Fix crash loading Gemma 4 31B JANG (`None >= int` in num_experts) - Fix crash loading mlx-community Gemma 4 4-bit (`audio_config: null` in mlx_vlm) - Gemma 4 parser options added to UI dropdowns ### Ollama - Tool calls now forwarded in streaming and non-streaming responses - Usage stats (`eval_count`/`prompt_eval_count`) in done chunk - JIT wake for sleeping models on `/api/chat` and `/api/generate` - `done_reason` correctly maps `tool_calls` → `stop` ### Sleep/Wake - HMedium4/3/2026
v1.3.25## What's New ### Gemma 4 Full Support - **Gemma 4 reasoning parser** — properly handles `<|channel>thought...<channel|>` protocol (fixes raw token leaking in chat) - **Gemma 4 tool parser** — supports native `<|tool_call>call:name{args}<tool_call|>` format - **Gemma 4 stop tokens** — `<turn|>` correctly added as stop token alongside `<eos>` - Works with all thinking modes (Auto/On/Off) ### Engine Fixes - Extra eos_tokens from model config now applied to both LLM and MLLM schedulers - `<|tool_Medium4/3/2026
v1.3.6## v1.3.6 — Disk Streaming, Mistral 4 Support, Metal Fixes ### New Features - **Disk Streaming Mode** (`--stream-from-disk`): Load models larger than RAM by leveraging macOS SSD paging (~7.4GB/s). Automatically disables all caching. UI toggle in session settings with adjustable virtual memory budget slider. - **Mistral Small 4 (119B) support**: `model_type: mistral4` with MLA attention (Multi-head Latent Attention), 128-expert MoE, YaRN interleaved RoPE. Works via mlx-lm text path and mistral3 Low3/21/2026
v1.3.0## vMLX v1.3.0 ### Critical Bug Fixes - **Metal crash on disk cache store (P0)** — pre-materialize arrays on main thread before background write, preserves bfloat16 - **Paged cache layer mismatch (P1)** — block reuse now checks cumulative SSM state for last-block position - **Hybrid cache reconstruction (P1)** — text scheduler applies `_fix_hybrid_cache` (was VLM-only) - **Fresh-cache fallback detection** — detects empty cache (offset=0), treats as miss instead of silent corruption - **ReasoninLow3/20/2026
v1.0.7## vMLX v1.0.7 ### Image System Overhaul - **All mflux models supported**: Klein 4B/9B, Kontext, Fill, Qwen Image, FIBO — each with correct class dispatch (no regex) - **img2img variations**: Generate models support iterative variations via source image + strength - **Clear separation**: Gen models generate + vary, Edit models do instruction-based editing - **Image fetch timeout fixed**: Node.js http.request replaces Electron fetch (was timing out at 5 min) - **Iterate UI**: Click "Iterate" on Low3/18/2026
v1.0.6## vMLX v1.0.6 **Critical fix:** v1.0.5 broke tool calling — `asyncio.wait_for()` cancelled async generators on timeout, silently killing tool call streams. Reverted to `asyncio.wait()`. All built-in agentic tools and MCP tools work correctly again. Also includes: JANG config crash hardening, HF README HTML stripping, Code tab placeholder. See [v1.0.5 release notes](https://github.com/jjang-ai/vmlx/releases/tag/v1.0.5) for the full changelog. ### Install / Upgrade ```bash pip install --upgraLow3/17/2026
v1.0.5## vMLX v1.0.5 ### Critical Fix - **Tool calling broken by streaming change** — `asyncio.wait_for()` cancels async generators on timeout, silently killing tool call streams during long prefills or tool generation. Reverted to `asyncio.wait()` which does not cancel. All built-in agentic tools and MCP tools now work correctly again. ### Engine Fixes - **JANG model loading crash** — `from mlx.utils import tree_flatten` (was using wrong import path) - **JANG config hardening** — corrupt/invalid `jLow3/17/2026
v1.1.0## What's New ### New Features - **Speculative Decoding UI** — Configure draft model and num-draft-tokens for 20-90% speedup - **Generation Defaults** — Server-wide default temperature and top-p sliders - **Embedding Model** — Pre-load a separate embedding model for `/v1/embeddings` endpoint - **Auto-Update Checker** — Dismissible banner notification when a new version is available ### Fixes - **VLM Batching** — Fixed `!isVLM` guard that prevented VLMs from using BatchedEngine with MLLMSchedulLow3/6/2026

Dependencies & License Audit

Loading dependencies...

Similar Packages

jdocmunch-mcpThe leading, most token-efficient MCP server for documentation exploration and retrieval via structured section indexingv1.150.1
mengramHuman-like memory for AI agents — semantic, episodic & procedural. Experience-driven procedures that learn from failures. Free API, Python & JS SDKs, LangChain, CrewAI & OpenClaw integrations.v2.48.1
dbt-mcpA MCP (Model Context Protocol) server for interacting with dbt.v2.8.0
npcpyThe python library for research and development in NLP, multimodal LLMs, Agents, ML, Knowledge Graphs, and more.v2.1.25
hybrid-orchestrator🤖 Implement hybrid human-AI orchestration patterns in Python to coordinate agents, manage sessions, and enable smooth AI-human handoffs.master@2026-10-12

More in MCP Servers

litellmPython SDK, Proxy Server (AI Gateway) to call 100+ LLM APIs in OpenAI (or native) format, with cost tracking, guardrails, loadbalancing and logging. [Bedrock, Azure, OpenAI, VertexAI, Cohere, Anthropi
ruflo🌊 The leading agent orchestration platform for Claude. Deploy intelligent multi-agent swarms, coordinate autonomous workflows, and build conversational AI systems. Features enterprise-grade archit
@claude-flow/cliRuflo CLI - Enterprise AI agent orchestration with 60+ specialized agents, swarm coordination, MCP server, self-learning hooks, and vector memory for Claude Code
claude-plugins-officialOfficial, Anthropic-managed directory of high quality Claude Code Plugins.