Services
Replica groups
A service can now include multiple replica groups. Each group can define its own commands, resources spec, and scaling rules.
type: service
name: llama-8b-service
image: lmsysorg/sglang:latest
env:
- MODEL_ID=deepseek-ai/DeepSeek-R1-Distill-Llama-8B
replicas:
- count: 1..2
scaling:
metric: rps
target: 10
commands:
- |
python -m sglang.launch_server \
--model-path $MODEL_ID \
--port 8000 \
--trust-remote-code
resources:
gpu: 48GB
- count: 1..4
scaling:
metric: rps
target: 5
commands:
- |
python -m sglang.launch_server \
--model-path $MODEL_ID \
--port 8000 \
--trust-remote-code
resources:
gpu: 24GB
port: 8000
model: deepseek-ai/DeepSeek-R1-Distill-Llama-8BNote
Properties such as regions, port, image, env and some other cannot be configured per replica group. This support is coming soon.
Note
Native support for disaggregated prefill and decode, allowing both worker types to run within a single service, is coming soon.
Events
Events are now also supported for volumes, gateways, and secrets.
$ dstack event --target-gateway my-gateway
[2026-01-28 11:53:03] [👤admin] [gateway my-gateway] Gateway created. Status: SUBMITTED
[2026-01-28 11:53:32] [gateway my-gateway] Gateway status changed SUBMITTED -> PROVISIONING
[2026-01-28 11:54:46] [gateway my-gateway] Gateway status changed PROVISIONING -> RUNNING
[2026-01-28 11:55:08] [👤admin] [gateway my-gateway] Gateway set as defaultInstance events now also include reachability and health events.
Finally, we have added Events under Concepts in the documentation.
CLI
dstack project
The dstack project and dstack project set-default commands now allow you to interactively select the default project when these commands are run without arguments.
dstack login
The dstack login command can now be run without arguments. In this case, it will interactively ask for the URL and provider if needed. If you want to use dstack Sky, you can simply press Enter without entering a URL or provider.
Also, if you have multiple projects, the command will prompt you to select the default project as well.
What's changed
- Implement pagination for
/api/project/listand/api/users/listby @r4victor in #3489 - Update dstack server CLI logo by @r4victor in #3438
- Move pytest.ini options to pyproject.toml by @r4victor in #3491
- [UX] Make
dstack projectanddstack project set-defaultinteractive for default project selection by @peterschmidt85 in #3488 - Add replica groups in dstack-service by @Bihan in #3408
- [chore]: Add
list_eventsutility for unit tests by @jvstme in #3493 - [Docs]: Fix k8s backend config example by @jvstme in #3495
- Move ruff.toml to pyproject.toml by @r4victor in #3496
- Events: instance/job reachability and health by @jvstme in #3482
- Volume events by @jvstme in #3494
- Set INSTANCE_UNREACHABLE for unreachable on-demand instances by @r4victor in #3497
- Support gateway events in API, CLI, and UI by @jvstme in #3499
- Use numeric replica-group names by @Bihan in #3502
- Add gateway lifecycle events by @jvstme in #3500
- Docs minor improvements by @peterschmidt85 in #3501
- Support secret events in API, CLI, and UI by @jvstme in #3504
- [Docs] Events #3397 by @peterschmidt85 in #3506
- [UX] Extend
dstack loginwith interactive selection ofurland default project by @peterschmidt85 in #3492 - Add secret lifecycle events by @jvstme in #3505
- Fix apply plan compatibility with old servers by @jvstme in #3507
- [UI] Minor tweaks by @peterschmidt85 in #3508
- Fix
dstack eventcompat. with older servers by @jvstme in #3509 - Fix scaling during update to replica groups by @jvstme in #3510
Full changelog: 0.20.6...0.20.7