We recommend using the latest stable release of dynamo to avoid breaking changes:
You can find the latest release here and check out the corresponding branch with:
Dynamo SGLang integrates SGLang engines into Dynamoās distributed runtime, enabling advanced features like disaggregated serving, KV-aware routing, and request migration while maintaining full compatibility with SGLangās engine arguments.
Dynamo SGLang uses SGLangās native argument parser, so most SGLang engine arguments work identically. You can pass any SGLang argument (like --model-path, --tp, --trust-remote-code) directly to dynamo.sglang.
--use-sglang-tokenizer not set): Dynamo handles tokenization/detokenization via our blazing fast frontend and passes input_ids to SGLang--use-sglang-tokenizer: SGLang handles tokenization/detokenization, Dynamo passes raw promptsWhen using --use-sglang-tokenizer, only v1/chat/completions is available through Dynamoās frontend.
When a user cancels a request (e.g., by disconnecting from the frontend), the request is automatically cancelled across all workers, freeing compute resources for other requests.
ā ļø SGLang backend currently does not support cancellation during remote prefill phase in disaggregated mode.
For more details, see the Request Cancellation Architecture documentation.
We suggest using uv to install the latest release of ai-dynamo[sglang]. You can install it with curl -LsSf https://astral.sh/uv/install.sh | sh
This requires having rust installed. We also recommend having a proper installation of the cuda toolkit as sglang requires nvcc to be available.
We are in the process of shipping pre-built docker containers that contain installations of DeepEP, DeepGEMM, and NVSHMEM in order to support WideEP and P/D. For now, you can quickly build the container from source with the following command.
And then run it using
Below we provide a guide that lets you run all of our common deployment patterns on a single node.
For local/bare-metal development, start etcd and optionally NATS using Docker Compose:
--kv_store file to use file system based discovery.--no-kv-events flag for prediction-based routingDYN_DISCOVERY_BACKEND=kubernetes to enable native K8s service discovery (DynamoWorkerMetadata CRD)Each example corresponds to a simple bash script that runs the OpenAI compatible server, processor, and optional router (written in Rust) and LLM engine (written in Python) in a single terminal. You can easily take each command and run them in separate terminals.
Additionally - because we use sglangās argument parser, you can pass in any argument that sglang supports to the worker!
Hereās an example that uses the Qwen/Qwen3-Embedding-4B model.
See SGLang Disaggregation to learn more about how sglang and dynamo handle disaggregated serving.
You can use this configuration to test out disaggregated serving with dp attention and expert parallelism on a single node before scaling to the full DeepSeek-R1 model across multiple nodes.
Send a test request to verify your deployment:
We currently provide deployment examples for Kubernetes and SLURM.