dynamo
App Listed
A Datacenter Scale Distributed Inference Serving Framework
- Downloads
- 6,860
- Dependents
- Not applicable
- Stars
- 8,457
- Forks
- 1,829
- Contributors
- 429
- Commits
- 8,510
- Latest release
- 1.6.2 ·
About

| Docs | Roadmap | Recipes | Examples | Containers | Digest | Design Proposals | How to Contribute | Slack |
English | 简体中文
The open-source, datacenter-scale inference stack. Dynamo is the orchestration layer above inference engines — it doesn't replace SGLang, TensorRT-LLM, or vLLM, it turns them into a coordinated multi-node inference system. Disaggregated serving, intelligent routing, multi-tier KV caching, and automatic scaling work together to maximize throughput and minimize latency for LLM, reasoning, multimodal, and video generation workloads.
Built in Rust for performance, Python for extensibility.
Community Events
| Date | Event | Location |
|---|---|---|
| Thu, Nov 12, 2026 | SIG Frontend — Biweekly Sync | – |
| Thu, Nov 12, 2026 | SIG Engines — Biweekly Sync | – |
| Thu, Nov 19, 2026 | SIG Router | – |
| Thu, Nov 5, 2026 | – | |
| Thu, Nov 5, 2026 | – |
Events are updated automatically. Subscribe to our public calendar.
Read the full README
When to use Dynamo
- You're serving LLMs across multiple GPUs or nodes and need to coordinate them
- You want KV-aware routing to avoid redundant prefill computation
- You need to independently scale prefill and decode (disaggregated serving)
- You want automatic scaling that meets latency SLAs at minimum total cost of ownership (TCO)
- You need fast cold-starts when spinning up new replicas
If you're running a single model on a single GPU, your inference engine alone is probably sufficient.
Feature support at a glance:
| SGLang | TensorRT-LLM | vLLM | |
|---|---|---|---|
| Disaggregated Serving | ✅ | ✅ | ✅ |
| KV-Aware Routing | ✅ | ✅ | ✅ |
| SLA-Based Planner | ✅ | ✅ | ✅ |
| KVBM | 🚧 | ✅ | ✅ |
| Multimodal | ✅ | ✅ | ✅ |
| Tool Calling | ✅ | ✅ | ✅ |
Full Feature Matrix → — LoRA, request migration, speculative decoding, and feature interactions.
Key Results
| Result | Context |
|---|---|
| 7x higher throughput per GPU | DeepSeek R1 on GB200 NVL72 w/ Dynamo vs B200 without (InferenceX) |
| 7x faster model startup | ModelExpress weight streaming (DeepSeek-V3 on H200) |
| 2x faster time to first token | KV-aware routing, Qwen3-Coder 480B (Baseten benchmark) |
| 80% fewer SLA breaches | Planner autoscaling at 5% lower TCO (Alibaba APSARA 2025 @ 2:50:00) |
| 750x higher throughput | DeepSeek-R1 on GB300 NVL72 (InferenceXv2) |
What Dynamo Does
Most inference engines optimize a single GPU or a single node. Dynamo is the orchestration layer above them — it turns a cluster of GPUs into a coordinated inference system.
Core Capabilities
| Capability | What it does | Why it matters |
|---|---|---|
| Disaggregated Prefill/Decode | Separates prefill and decode into independently scalable GPU pools | Maximizes GPU utilization; each phase runs on hardware tuned for its workload |
| KV-Aware Routing | Routes requests based on worker load and KV cache overlap | Eliminates redundant prefill computation — 2x faster TTFT |
| KV Block Manager (KVBM) | Offloads KV cache across GPU → CPU → SSD → remote storage | Extends effective context length beyond GPU memory |
| ModelExpress | Streams model weights GPU-to-GPU via NIXL/NVLink | 7x faster cold-start for new replicas |
| Planner | SLA-driven autoscaler that profiles workloads and right-sizes pools | Meets latency targets at minimum total cost of ownership (TCO) |
| Grove | K8s operator for topology-aware gang scheduling (NVL72) | Places workloads optimally across racks, hosts, and NUMA nodes |
| AISimulate | Predicts serving behavior and searches deployment configurations offline | Finds a strong serving configuration without bringing up a GPU cluster |
| Fault Tolerance | Canary health checks + in-flight request migration | Workers fail; user requests don't |
New in 1.0
- Zero-config deploy (DGDR) (beta): Specify model, HW, and SLA in one YAML — AISimulate performance models estimate candidate configurations, Planner optimizes the topology, and Dynamo deploys
- Agentic inference: Per-request hints for priority, expected output length, and speculative prefill, plus session metadata for tracing and SGLang subagent KV isolation. LangChain + NeMo Agent Toolkit integrations
- Multimodal E/P/D: Disaggregated encode/prefill/decode with embedding cache — 30% faster TTFT on image workloads
- Video generation: Native FastVideo + SGLang Diffusion support — real-time 1080p on single B200
- K8s Inference Gateway plugin: KV-aware routing inside the standard Kubernetes gateway
- Storage-tier KV offload: S3/Azure blob support + global KV events for cluster-wide cache visibility
Request Routing Topologies
Dynamo can expose traffic through two Kubernetes request routing topologies. Both expose an OpenAI-compatible API and support the same backends, disaggregated serving, and KV-aware routing.
| Topology | What it is | When to use |
|---|---|---|
| Dynamo-native Frontend routing | The Dynamo Frontend serves HTTP and the integrated Dynamo Router makes worker-selection decisions. No external gateway is required. | Local development, single-cluster deployments, and environments where Dynamo should own the request entry point end to end. |
| Gateway API routing with GAIE | A Kubernetes Gateway API Inference Extension gateway calls the Dynamo Endpoint Picker Plugin (EPP) before forwarding to the selected worker's Frontend sidecar in --router-mode direct. | Kubernetes platforms that standardize on Gateway API, or deployments where gateway-level policy, auth, rate limiting, and observability should sit at the cluster edge. |
Request flow for the Dynamo-native path is client → Frontend → Router → workers. Request flow for
the Gateway API path is client → Gateway → EPP → Frontend sidecar (direct) → workers.
See the Gateway API Inference Extension (GAIE) guide for the Gateway API setup, supported features, and configuration.
Quick Start
This repo ships agent skills: if you work with an AI coding agent (Claude Code, Codex, Cursor), clone the repo and ask it to deploy, troubleshoot, benchmark, or optimize a Dynamo deployment. The skills activate automatically; no setup required.
Option A: Container (fastest)
Choose either vLLM or SGLang:
vLLM
# Pull a prebuilt container
docker run --gpus all --network host --rm -it nvcr.io/nvidia/ai-dynamo/vllm-runtime:1.6.0
# Inside the container — start frontend and worker
python3 -m dynamo.frontend --http-port 8000 --discovery-backend file > /dev/null 2>&1 &
python3 -m dynamo.vllm --model Qwen/Qwen3-0.6B --discovery-backend file &
# Once the worker is ready, send a request
curl -s localhost:8000/v1/chat/completions -H "Content-Type: application/json" -d '{
"model": "Qwen/Qwen3-0.6B",
"messages": [{"role": "user", "content": "Hello!"}],
"max_tokens": 100
}' | jq
SGLang
# Pull a prebuilt container
docker run --gpus all --network host --rm -it nvcr.io/nvidia/ai-dynamo/sglang-runtime:1.6.0
# Inside the container — start frontend and worker
python3 -m dynamo.frontend --http-port 8000 --discovery-backend file > /dev/null 2>&1 &
python3 -m dynamo.sglang --model-path Qwen/Qwen3-0.6B --discovery-backend file &
# Once the worker is ready, send a request
curl -s localhost:8000/v1/chat/completions -H "Content-Type: application/json" -d '{
"model": "Qwen/Qwen3-0.6B",
"messages": [{"role": "user", "content": "Hello!"}],
"max_tokens": 100
}' | jq
Also available: tensorrtllm-runtime:1.6.0.
Option B: Install from PyPI
Install uv (curl -LsSf https://astral.sh/uv/install.sh | sh), then choose your backend:
vLLM
uv pip install --prerelease=allow "ai-dynamo[vllm]"
SGLang
uv pip install --prerelease=allow "ai-dynamo[sglang]"
Note: TensorRT-LLM requires
pipwith--extra-index-url https://pypi.nvidia.com. See the install guide for TRT-LLM-specific instructions.
Then start the frontend and the matching worker as shown above. See the full installation guide for system dependencies and backend-specific notes.
Option C: Kubernetes (recommended)
For production multi-node clusters, install the Dynamo Platform and deploy with a single manifest:
# Zero-config deploy: specify model + SLA, Dynamo handles the rest
apiVersion: nvidia.com/v1beta1
kind: DynamoGraphDeploymentRequest
metadata:
name: my-model
spec:
model: Qwen/Qwen3-0.6B
backend: vllm
sla:
ttft: 200.0 # ms
itl: 20.0 # ms
autoApply: true
Pre-built recipes for common models:
| Model | Framework | Mode | Recipe |
|---|---|---|---|
| Qwen3-32B-FP8 | TensorRT-LLM | Aggregated | View |
| DeepSeek-R1 | SGLang | Disaggregated | View |
| Kimi-K3 | vLLM | Aggregated | View |
See recipes/ for the full list. Cloud-specific guides: AWS EKS · Google GKE · Azure AKS · Amazon ECS
Building from Source
For contributors who want to build and develop locally. See the full build guide for details.
# Install system deps (Ubuntu 24.04)
sudo apt install -y build-essential libhwloc-dev libudev-dev pkg-config libclang-dev protobuf-compiler python3-dev cmake
# Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh && source $HOME/.cargo/env
# Create venv and build
uv venv dynamo && source dynamo/bin/activate
uv pip install pip 'maturin[patchelf]'
cd lib/bindings/python && maturin develop --uv && cd $PROJECT_ROOT
uv pip install -e lib/gpu_memory_service
uv pip install -e .
VSCode/Cursor users: see the
.devcontainerfor a pre-configured dev environment.
Community and Contributing
Dynamo is built in the open with an OSS-first development model. We welcome contributions of all kinds.
- Contribution Guide — How to contribute code, docs, and recipes
- Design Proposals — RFCs for major features, tracked as
dep:*labeled GitHub issues - Office Hours — Biweekly calls
- Community Meetings (Youtube) – Weekly (Tue 9:00 AM PT) development community meetings
- Slack — Chat with the team and community
- Dynamo Day Recordings — Deep dives from production users
Latest News
- [03/15] Dynamo 1.0 is here — production-ready with strong community adoption
- [03/15] NVIDIA Blackwell Ultra sets new inference records in MLPerf
- [03/15] NVIDIA Blackwell leads on SemiAnalysis InferenceMax benchmarks
- [12/05] Moonshot AI's Kimi K2 achieves 10x inference speedup with Dynamo on GB200
- [12/02] Mistral AI runs Mistral Large 3 with 10x faster inference using Dynamo
- [11/20] Dell integrates PowerScale with NIXL for 19x faster TTFT
Older news
Dynamo provides comprehensive benchmarking tools:
- Benchmarking Guide – Compare deployment topologies using AIPerf
- SLA-Driven Deployments – Optimize deployments to meet SLA requirements
Frontend OpenAPI Specification
The OpenAI-compatible frontend exposes an OpenAPI 3 spec at /openapi.json. To generate without running the server:
cargo run -p dynamo-llm --bin generate-frontend-openapi
This writes to docs/reference/api/openapi.json.
Service Discovery and Messaging
Dynamo uses TCP for inter-component communication. On Kubernetes, native resources (CRDs + EndpointSlices) handle service discovery. External services are optional for most deployments:
| Deployment | etcd | NATS | Notes |
|---|---|---|---|
| Local Development | ❌ Not required | ❌ Not required | Pass --discovery-backend file; vLLM also needs --kv-events-config '{"enable_kv_cache_events": false}' |
| Kubernetes | ❌ Not required | ❌ Not required | K8s-native discovery; TCP request plane |
Note: KV-aware routing does not require NATS. Enable KV events when you need event-backed cache-state tracking, or use
--no-router-kv-eventsfor prediction-based routing without external event infrastructure.
For Slurm or other distributed deployments that choose etcd or NATS JetStream-backed modes:
To quickly setup both: docker compose -f dev/docker-compose.yml up -d
More News
- [11/20] Dell integrates PowerScale with Dynamo's NIXL for 19x faster TTFT
- [11/20] WEKA partners with NVIDIA on KV cache storage for Dynamo
- [11/13] Dynamo Office Hours Playlist
- [10/16] How Baseten achieved 2x faster inference with NVIDIA Dynamo
- [12/01] InfoQ: NVIDIA Dynamo simplifies Kubernetes deployment for LLM inference
Reference
- Support Matrix — Hardware, OS, CUDA, and backend versions
- Feature Matrix — Detailed backend compatibility
- Release Artifacts — Containers, wheels, Helm charts
- Service Discovery — K8s-native vs etcd vs file-based discovery
- Benchmarking Guide — Compare deployment topologies with AIPerf
Compatibility
- Runs on
- CUDA
What shows it
- CUDA: dynamo-llm feature cuda (dependency cudarc), dynamo-memory dependency cudarc, kvbm-engine feature nccl (dependency cudarc), kvbm-kernels dependency cudarc, kvbm-physical dependency cudarc
- Native code
- Required
- Binds native code: k8s-openapi, nixl-sys, pcre2-sys, ring, zmq-sys and 2 more
- Python bindings
- No Python binding crate found
- License
- Apache-2.0
Compare with similar projects
Order: strongest tier first, then most downloads, then name, with unmeasured values last. A library counts downloads over 30 days. An app counts binary downloads per release. An app with none counts its crate downloads over 30 days. ML Rust runs this catalogue, so its closest project always gets a row.
| Project | Downloads | Dependents | Stars | Latest release | Runs on (GPU) | Native code | License |
|---|---|---|---|---|---|---|---|
|
A Datacenter Scale Distributed Inference Serving Framework |
6,860 downloads over 30 days | Not applicable | 8,457 | 1.6.2 | CUDA | Binds native code: k8s-openapi, nixl-sys, pcre2-sys, ring, zmq-sys and 2 more | Apache-2.0 |
|
Fast, flexible LLM inference. Python bindings Also in Build LLM apps and agents. |
1,498 binary downloads per release | Not applicable | 7,819 | 0.8.1 | CUDA, Metal | Binds native code: accelerate-src (feature accelerate-src), intel-mkl-src (feature intel-mkl-src) | MIT |
|
llama-gguf Listed
A high-performance Rust implementation of llama.cpp - LLM inference engine with full GGUF support Also in Build LLM apps and agents. |
1,787 downloads over 30 days | 3 | 21 | 0.14.0 | CUDA, Metal, Vulkan | Binds native code: hailort-sys (feature hailo), libsqlite3-sys (feature rag-sqlite) | Apache-2.0 OR MIT |
|
Efficent platform for inference and serving local LLMs including an OpenAI compatible API server. Also in Build LLM apps and agents. |
138 binary downloads per release | Not applicable | 739 | Not measured | Not measured | MIT | |
|
cake Listed
Distributed LLM inference for mobile, desktop and server. Also in Run and serve models. |
22 downloads over 30 days | 0 | 3,131 | 0.1.0 | CUDA, Metal | No native code found | GPL-3.0 |
|
Inference server for LLMs, speech and embeddings: OpenAI-compatible routes with streaming, plus speech synthesis (TTS) and transcription (ASR). Serves Llama, Mistral, Qwen, Mamba2, MLA+MoE and hybrid models from SafeTensors, AWQ, GPTQ and GGUF. Also in Build LLM apps and agents. |
8 binary downloads per release | Not applicable | 7 | 0.7.1 | CUDA, WebGPU | Binds native code: ring (feature distributed) | Apache-2.0 |
|
A high-performance ML model serving framework, offers dynamic batching and CPU/GPU pipelines to fully exploit your compute machine Also in Run and serve models. |
1 downloads over 30 days | Not applicable | 903 | 0.9.0 | GPU support unknown | No native code found | Apache-2.0 |
All projects in Build LLM apps and agentsAll projects in Run and serve models
Why ListedNo archive, New or Featured rule places it, so it is Listed.
What it lacks for Featured
- The check holds no value for Homebrew installs on request over 365 days, Repology repository families, Docker pull growth over 90 days. A gate that lacks its signal does not pass.
What else the check found
- The last activity is on 8 Nov 2026, 1 day ago. The rules expect an update within 365 days. Dormancy rule
Not measured: Homebrew installs on request over 365 days, Repology repository families, Docker pull growth over 90 days.
Exact rules: Listed, Featured app. The check on applied thresholds version 9.
Every rule outcome, as the check records it
expected-interval: app: E = 365 daysdormancy: last activity 2026-11-08, 1 days ago, E = 365: activefeatured: not featured: unknown homebrew_on_request_365d, repology_families, docker_pull_growth_90dlisted: listed: no archive, new or featured rule applies
Crates26 crates
- dynamo-truthy Primary
- dynamo-async-openai
- dynamo-backend-common
- dynamo-bench
- dynamo-config
- dynamo-custom-policy-builtin
- dynamo-data-gen
- dynamo-kv-hashing
- dynamo-kv-router
- dynamo-llm
- dynamo-memory
- dynamo-mocker
- dynamo-rl
- dynamo-runtime
- dynamo-sglang-sidecar
- dynamo-sidecar-common
- dynamo-tokens
- dynamo-trtllm-sidecar
- dynamo-vllm-sidecar
- kvbm-common
- kvbm-config
- kvbm-consolidator
- kvbm-engine
- kvbm-kernels
- kvbm-logical
- kvbm-physical
Measurements and sources
Each signal row shows the raw value, its source and the fetch date. The Sources list gathers every distinct source on this page. Movement needs more history.
Sources6 sources
- Description: the GitHub repository description
- crates.io database dump, fetched
- GitHub releases, fetched
- GitHub repository, fetched
- crates.io package, fetched
- GitHub contributors, fetched
Adoption0 binary downloads per release4 not measured
| Signal | Value | Source | Fetched | Counts |
|---|---|---|---|---|
| Active dependents | Not measured | Yes | ||
| New dependents (365 days) | Not measured | Yes | ||
| Peak active dependents | Not measured | Yes | ||
| Active dependents as a share of the peak | Not measured | Yes | ||
| Binary downloads per release | 0 | GitHub releases | Yes |
MaintenanceLatest human commit: 1 day ago4 not measured
| Signal | Value | Source | Fetched | Counts |
|---|---|---|---|---|
| Latest human commit | 2026-11-08 | GitHub repository | Yes | |
| Latest release | 2026-11-06 | GitHub releases | Yes | |
| First release | 2025-03-12 | crates.io database dump | Yes | |
| Latest version | 1.6.2 | crates.io database dump | No | |
| Days the oldest outside issue waits for a reply | 4 | GitHub repository | Yes | |
| Maintainer replies over 365 days | 34 | GitHub repository | Yes | |
| Repository archived | false | GitHub repository | Yes | |
| Repository gone | false | GitHub repository | Yes | |
| Release commit or manifest in the repo | true | crates.io package | No | |
| Published docs | Not measured | Yes | ||
| Latest release fails cargo check | Not measured | Yes | ||
| Build check date | Not measured | Yes | ||
| Build check toolchain | Not measured | Yes |
SecurityNot measured
| Signal | Value | Source | Fetched | Counts |
|---|---|---|---|---|
| Unpatched vulnerabilities past the grace window | Not measured | Yes | ||
| RustSec unmaintained advisory | Not measured | Yes | ||
| Deprecation notice | Not measured | Yes | ||
| Deprecated requirement | Not measured | Yes |
Distribution9 releases, 6,860 downloads over 30 days6 not measured
| Signal | Value | Source | Fetched | Counts |
|---|---|---|---|---|
| Releases | 9 | crates.io database dump | No | |
| Downloads over 30 days | 6860 | crates.io database dump | No | |
| Binary downloads over the last 3 releases | 0 | GitHub releases | Yes | |
| Homebrew installs on request over 365 days | Not measured | Yes | ||
| Repology repository families | Not measured | Yes | ||
| Docker pull growth over 90 days | Not measured | Yes | ||
| Docker pulls at the growth baseline | Not measured | Yes | ||
| Every version a prerelease | false | crates.io database dump | Yes | |
| Every version 0.0.x | false | crates.io database dump | Yes | |
| Every version yanked | Not measured | Yes | ||
| Crate deleted from crates.io | Not measured | Yes |
Repository8,457 stars, 1,829 forks, 429 contributors, 8,510 commits. Stars alone never qualify a project.
| Signal | Value | Source | Fetched | Counts |
|---|---|---|---|---|
| GitHub stars | 8457 | GitHub repository | Yes — one part of the repository route | |
| GitHub forks | 1829 | GitHub repository | Yes — one part of the repository route | |
| Contributors with a GitHub account | 429 | GitHub contributors | Yes — one part of the repository route | |
| Commits on the default branch | 8510 | GitHub repository | No | |
| Repository's main crate left out of the entry | none | crates.io database dump | Yes |
Facts that never count
| Signal | Value | Source | Fetched | Counts |
|---|---|---|---|---|
| License | Apache-2.0 | crates.io database dump | No | |
| Runs on, from listed crates and their direct dependencies | CUDA | crates.io database dump | No | |
| What shows each backend | CUDA: dynamo-llm feature cuda (dependency cudarc), dynamo-memory dependency cudarc, kvbm-engine feature nccl (dependency cudarc), kvbm-kernels dependency cudarc, kvbm-physical dependency cudarc | crates.io database dump | No | |
| Native code, from listed crates and their dependencies | Binds native code: k8s-openapi, nixl-sys, pcre2-sys, ring, zmq-sys and 2 more | crates.io database dump | No | |
| Python bindings, from direct dependencies of listed crates | No Python binding crate found | crates.io database dump | No | |
| Crates that depend on a listed crate directly | Not measured | No |
Corrections and review history
No correction applies to this entry.
Judgments
A judgment enters only through an approved issue and a merged pull request.
No judgment applies to this entry.