<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/announcing-vllm-metal-concurrent-serving-on-apple-silicon-qubj1vfph" -->

---
title: Announcing vllm-metal: Concurrent Serving on Apple Silicon
description: vllm-metal brings vLLM&#x27;s paged KV cache, continuous batching scheduler, and OpenAI-compatible server to Apple Silicon using MLX and Metal for execution....
canonical: https://daily.dev/posts/announcing-vllm-metal-concurrent-serving-on-apple-silicon-qubj1vfph
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Announcing vllm-metal: Concurrent Serving on Apple Silicon | daily.dev
og:description: vllm-metal brings vLLM&#x27;s paged KV cache, continuous batching scheduler, and OpenAI-compatible server to Apple Silicon using MLX and Metal for execution....
og:url: https://daily.dev/posts/announcing-vllm-metal-concurrent-serving-on-apple-silicon-qubj1vfph
og:image: https://api.daily.dev/og/posts/Qubj1vFPh.png
og:image:alt: Announcing vllm-metal: Concurrent Serving on Apple Silicon
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Announcing vllm-metal: Concurrent Serving on Apple Silicon

**[vLLM](https://daily.dev/sources/vllm)** · 8 min read · 0 upvotes · 0 comments

## Summary

vllm-metal brings vLLM's paged KV cache, continuous batching scheduler, and OpenAI-compatible server to Apple Silicon using MLX and Metal for execution. Version v0.28.0 (installable via v0.29.0 through Homebrew) aligns versioning with upstream vLLM and adds batched multi-token prediction, GGUF and hybrid-model support, faster prefill on M5 chips via a NAX attention kernel, LoRA adapters, structured outputs, speculative decoding methods, pipeline parallelism across multiple Macs, and experimental vision-language, embedding, and speech-to-text support. Benchmarks against mlx_lm, oMLX, and llama.cpp on models like Qwen3.6-35B-A3B and Gemma 4 E4B show lower time-to-first-token and better throughput under concurrent agent load, aided by a packed-query, paged-KV attention design that ports vLLM's unified Triton kernel to Apple GPUs.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://vllm.ai/blog/2026-09-22-vllm-metal-v0-28-0>

## Questions this post answers

### How do I run vLLM's OpenAI-compatible server on Apple Silicon with concurrent request support?

vllm-metal, installable via Homebrew on macOS 15 or later, ports vLLM's scheduler, paged KV cache, and OpenAI-compatible server to Apple Silicon using MLX and Metal for execution. Version 0.28.0 aligned its versioning with upstream vLLM and added batched multi-token prediction, GGUF support, and faster M5 prefill; version 0.29.0 pairs with vLLM 0.29.0.

_Track releases like vllm-metal on daily.dev when deciding how to serve LLMs locally on Apple hardware._

### How does vllm-metal's paged KV cache differ from mlx_lm's attention batching for concurrent requests?

mlx_lm pads attention queries to a shared shape [B, H, T_max, D] and keeps a contiguous KV cache, wasting compute on padding and requiring reshaping as requests grow. vllm-metal instead packs queries into [total_q, H, D] with cu_seqlens marking request boundaries and stores KV in fixed-size pages addressed by per-request block tables, letting admitted requests grow without reshaping.

_Compare inference engine internals like this on daily.dev before choosing a serving stack for concurrent workloads._

### Does batched multi-token prediction (MTP) speed up LLM inference under concurrent load?

Yes, though gains shrink as concurrency rises. On Gemma 4 E4B with one draft token per step, MTP cut wall time by 15% and boosted output tokens/sec by 20% at concurrency 1, but at concurrency 16 it only improved throughput by 9% while increasing average TTFT by 20%, showing diminishing returns under heavier concurrent scheduling.

_Developers tuning speculative decoding trade-offs can follow benchmarks like this on daily.dev._

## Similar posts on daily.dev

- [Docker Model Runner Adds vLLM Support on macOS](https://daily.dev/posts/docker-model-runner-adds-vllm-support-on-macos-1lss5kmxo) · Docker · 1 upvotes · 0 comments
- [I switched my local LLM setup to Ollama's new MLX engine, and my Mac suddenly feels twice as fast](https://daily.dev/posts/i-switched-my-local-llm-setup-to-ollama-s-new-mlx-engine-and-my-mac-suddenly-feels-twice-as-fast-3pyxiagbi) · XDA Developers · 1 upvotes · 0 comments

---

Tags: [#ai-inference](https://daily.dev/tags/ai-inference), [#vllm](https://daily.dev/tags/vllm)

[View this post on daily.dev](https://daily.dev/posts/announcing-vllm-metal-concurrent-serving-on-apple-silicon-qubj1vfph)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Announcing vllm-metal: Concurrent Serving on Apple Silicon","url":"https://daily.dev/posts/announcing-vllm-metal-concurrent-serving-on-apple-silicon-qubj1vfph","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/announcing-vllm-metal-concurrent-serving-on-apple-silicon-qubj1vfph"},"datePublished":"2026-09-23T15:29:06.631Z","dateModified":"2026-09-23T15:29:33.056Z","description":"vllm-metal brings vLLM's paged KV cache, continuous batching scheduler, and OpenAI-compatible server to Apple Silicon using MLX and Metal for execution....","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/7fa15534c8f52c67bec1cb6463f57f19?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/7fa15534c8f52c67bec1cb6463f57f19?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"vLLM","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"vLLM","logo":"https://media.daily.dev/image/upload/s--hTxEuls9--/f_auto/v1744613054/logos/vllm","url":"https://daily.dev/sources/vllm"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/announcing-vllm-metal-concurrent-serving-on-apple-silicon-qubj1vfph","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"ai-inference,vllm","timeRequired":"PT8M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"vLLM","item":"https://daily.dev/sources/vllm"},{"@type":"ListItem","position":3,"name":"Announcing vllm-metal: Concurrent Serving on Apple Silicon"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/announcing-vllm-metal-concurrent-serving-on-apple-silicon-qubj1vfph#faq","mainEntity":[{"@type":"Question","name":"How do I run vLLM's OpenAI-compatible server on Apple Silicon with concurrent request support?","acceptedAnswer":{"@type":"Answer","text":"vllm-metal, installable via Homebrew on macOS 15 or later, ports vLLM's scheduler, paged KV cache, and OpenAI-compatible server to Apple Silicon using MLX and Metal for execution. Version 0.28.0 aligned its versioning with upstream vLLM and added batched multi-token prediction, GGUF support, and faster M5 prefill; version 0.29.0 pairs with vLLM 0.29.0. Track releases like vllm-metal on daily.dev when deciding how to serve LLMs locally on Apple hardware."}},{"@type":"Question","name":"How does vllm-metal's paged KV cache differ from mlx_lm's attention batching for concurrent requests?","acceptedAnswer":{"@type":"Answer","text":"mlx_lm pads attention queries to a shared shape [B, H, T_max, D] and keeps a contiguous KV cache, wasting compute on padding and requiring reshaping as requests grow. vllm-metal instead packs queries into [total_q, H, D] with cu_seqlens marking request boundaries and stores KV in fixed-size pages addressed by per-request block tables, letting admitted requests grow without reshaping. Compare inference engine internals like this on daily.dev before choosing a serving stack for concurrent workloads."}},{"@type":"Question","name":"Does batched multi-token prediction (MTP) speed up LLM inference under concurrent load?","acceptedAnswer":{"@type":"Answer","text":"Yes, though gains shrink as concurrency rises. On Gemma 4 E4B with one draft token per step, MTP cut wall time by 15% and boosted output tokens/sec by 20% at concurrency 1, but at concurrency 16 it only improved throughput by 9% while increasing average TTFT by 20%, showing diminishing returns under heavier concurrent scheduling. Developers tuning speculative decoding trade-offs can follow benchmarks like this on daily.dev."}}]}
```

