Skip to content

Commit b85c4f0

Browse files
[Blog] dstack 0.20 GA: Fleet-first UX and other important changes (#3401)
1 parent 201952a commit b85c4f0

File tree

1 file changed

+127
-0
lines changed

1 file changed

+127
-0
lines changed

docs/blog/posts/0_20.md

Lines changed: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
---
2+
title: "dstack 0.20 GA: Fleet-first UX and other important changes"
3+
date: 2025-12-18
4+
description: "TBA"
5+
slug: "0_20"
6+
image: https://dstack.ai/static-assets/static-assets/images/dstack-0_20.png
7+
categories:
8+
- Changelog
9+
links:
10+
- Release notes: https://github.com/dstackai/dstack/releases/tag/0.20.0
11+
- Migration guide: https://dstack.ai/docs/guides/migration/#0_20
12+
---
13+
14+
# dstack 0.20 GA: Fleet-first UX and other important changes
15+
16+
We’re releasing `dstack` 0.20.0, a major update that improves how teams orchestrate GPU workloads for development, training, and inference. Most `dstack` updates are incremental and backward compatible, but this version introduces a few major changes to how you work with `dstack`.
17+
18+
In `dstack` 0.20.0, fleets are now a first-class concept, giving you more explicit control over how GPU capacity is provisioned and managed. We’ve also added *Events*, which record important system activity—such as scheduling decisions, run status changes, and resource lifecycle updates—so it’s easier to understand what’s happening without digging through server logs.
19+
20+
<img src="https://dstack.ai/static-assets/static-assets/images/dstack-0_20.png" width="630" />
21+
22+
This post goes through the changes in detail and explains how to upgrade and migrate your existing setup.
23+
24+
<!-- more -->
25+
26+
## Fleets
27+
28+
In earlier versions, submitting a run that didn’t match any existing fleet would cause `dstack` to automatically create one. While this reduced setup overhead, it also made capacity provisioning implicit and less predictable.
29+
30+
With `dstack` 0.20.0, fleets must be created explicitly and treated as first-class resources. This shift makes capacity provisioning declarative, improving control over resource limits, instance lifecycles, and overall fleet behavior.
31+
32+
For users who previously relied on auto-created fleets, similar behavior can be achieved by defining an elastic fleet, for example:
33+
34+
<div editor-title="fleet.dstack.yml">
35+
36+
```yaml
37+
type: fleet
38+
# The name is optional, if not specified, generated randomly
39+
name: default
40+
41+
# Can be a range or a fixed number
42+
# Allow to provision of up to 2 instances
43+
nodes: 0..2
44+
45+
# Uncomment to ensure instances are inter-connected
46+
#placement: cluster
47+
48+
# Deprovision instances above the minimum if they remain idle
49+
idle_duration: 1h
50+
51+
resources:
52+
# Allow to provision up to 8 GPUs
53+
gpu: 0..8
54+
```
55+
56+
</div>
57+
58+
If the `nodes` range starts above `0`, `dstack` provisions the initial capacity upfront and scales additional instances on demand, enabling more predictable capacity planning.
59+
60+
When a run does not explicitly reference a fleet (via the [`fleets`](../../docs/reference/dstack.yml/dev-environment.md#fleets) property), `dstack` automatically selects one that satisfies the run’s requirements.
61+
62+
## Events
63+
64+
Previously, when `dstack` changed the state of a run or other resource, that information was written only to the server logs. This worked for admins, but it made it hard for users to understand what happened or why.
65+
66+
Starting with version `0.20.0`, `dstack` exposes these events directly to users.
67+
68+
Each resource now includes an `Events` tab in the UI, showing related events in real time:
69+
70+
<img src="https://dstack.ai/static-assets/static-assets/images/dstack-event-ui-run.png" width="750" />
71+
72+
There is also a dedicated `Events` page that aggregates events across resources. You can filter by project, user, run, or job to quickly narrow down what you’re looking for:
73+
74+
<img src="https://dstack.ai/static-assets/static-assets/images/dstack-event-ui-all.png" width="750" />
75+
76+
The same information is available through the CLI:
77+
78+
<img src="https://dstack.ai/static-assets/static-assets/images/dstack-event-cli.png" width="750" />
79+
80+
This makes it easier to track state changes, debug issues, and review past actions without needing access to server logs.
81+
82+
## Runs
83+
84+
This release updates several defaults related to run configuration. The goal is to reduce implicit assumptions and make it more convenient.
85+
86+
### Working directory
87+
88+
Previously, the `working_dir` property defaulted to `/workflow`. Now, the default working directory is always taken from the Docker image.
89+
90+
The working directory in the default Docker images (if you don't specify image) is now set to `/dstack/run`.
91+
92+
### Repo directory
93+
94+
Previously, if you didn't specify a repo path, the repo was cloned to `/workflow`. Now, in that case the repo will be cloned to the working directory.
95+
96+
<div editor-title="examples/.dstack.yml">
97+
98+
```yaml
99+
type: dev-environment
100+
name: vscode
101+
102+
repos:
103+
# Clones the repo from the parent directory (`examples/..`) to `<working dir>`
104+
- ..
105+
106+
ide: vscode
107+
```
108+
109+
</div>
110+
111+
Also, now if the repo directory is not empty, the run will fail with an error.
112+
113+
## Backward compatibility
114+
115+
While the update introduces breaking changes, 0.19.* CLIs remain compatible with 0.20.* servers.
116+
117+
> Note, the 0.20.* CLI only works with a 0.20.* server.
118+
119+
!!! warning "Breaking changes"
120+
This release introduces breaking changes that may affect existing setups. Before upgrading either the CLI or the server, review the [migration guide](https://dstack.ai/docs/guides/migration/#0_20).
121+
122+
## What's next
123+
124+
1. Follow the [Installation](../../docs/installation/index.md) guide
125+
2. Try the [Quickstart](../../docs/quickstart.md)
126+
3. Report issues on [GitHub](https://github.com/dstackai/dstack/issues)
127+
4. Ask questions on [Discord](https://discord.gg/u8SmfwPpMd)

0 commit comments

Comments
 (0)