Releases: dstackai/dstack
0.20.0rc1
dstack 0.20 is a major upcoming release that brings significant improvements and introduces a number of breaking changes. Read below for the most important ones.
Note
You're encouraged to test 0.20rc1 in the staging environment, share your feedback, and ensure you're ready to upgrade before the release goes GA (planned for December 17).
uv tool install "dstack[all]==0.20rc1"For migration notes, please refer to the migration guide.
Fleets
dstack previously had two different ways to provision instances for runs: using a fleet configuration or using automatic fleet provisioning on run apply. To unify the UX, dstack no longer creates fleets automatically.
Fleets must now be created explicitly before submitting runs. This gives users full control over the provisioning lifecycle. If you don't need any limits on instance provisioning (as was the case with auto-created fleets), you can create a single elastic fleet for all runs:
type: fleet
name: default-fleet
nodes: 0..Note that multi-node tasks require fleets with placement: cluster, which provides the best possible connectivity. You will need a separate fleet for each cluster.
Note
To keep the old behavior with auto-created fleets, set the DSTACK_FF_AUTOCREATED_FLEETS_ENABLED environment variable.
Runs
Working directory
Previously, the working_dir property had complicated semantics: it defaulted to /workflow, but for tasks and services without commands, the image's working directory was used instead.
This has now been simplified: working_dir always defaults to the image's working directory. The working directory of the default dstack images is now set to /dstack/run.
Repo directory
Working with repos is now more explicit and intuitive. First, dstack now only sets up repos that are explicitly defined in run configurations via repos; repos initialized with dstack init are not set up unless specified:
type: dev-environment
ide: vscode
repos:
# Clone the repo in the configuration's dir into `working_dir`
- .Second, repos[].path now defaults to working_dir (".") instead of /workflow.
Third, cloning a repo into a non-empty directory now raises an error so that mistakes are not silently ignored. The previous behavior of skipping cloning can be specified explicitly with if_exists: skip:
type: dev-environment
ide: vscode
repos:
- local_path: .
path: /my_volume/repo
if_exists: skipEvents
dstack now stores important events—such as resource CRUD operations, status changes, and other information crucial for auditing and debugging. Users can view events using the dstack event CLI command or in the UI.
$ dstack event
[2025-12-11 15:05:20] [👤admin] [run clever-cheetah-1] Run submitted. Status: SUBMITTED
[2025-12-11 15:05:20] [job clever-cheetah-1-0-0] Job created on run submission. Status: SUBMITTED
[2025-12-11 15:05:26] [job clever-cheetah-1-0-0, instance cloud-fleet-0] Job assigned to instance. Instance status: BUSY (1/1 blocks busy)CLI
JSON output
The dstack ps and dstack gateway commands now support --format json / --json arguments that print results in JSON instead of plaintext:
$ dstack ps --json
{
"project": "main",
"runs": [
{
"id": "5f2e08b5-2098-4064-86c7-0efe0eb84970",
"project_name": "main",
"user": "admin",
"fleet": {
"id": "9598d5db-67d8-4a2e-bdd2-842ab93b2f2e",
"name": "cloud-fleet"
},
...
}
]
}Verda (formerly Datacrunch)
The datacrunch backend has been renamed to verda, following the company's rebranding.
projects:
- name: main
backends:
- type: verda
creds:
type: api_key
client_id: xfaHBqYEsArqhKWX-e52x3HH7w8T
client_secret: B5ZU5Qx9Nt8oGMlmMhNI3iglK8bjMhagTbylZy4WzncZe39995f7Vxh8
All breaking changes
- Fleets are no longer created automatically on run apply and have to be created explicitly before submitting runs.
- The run's
working_dirnow always defaults to the image's working directory instead of/workflow. The working directory ofdstackdefault images is now/dstack/run. repos[].pathnow defaults toworking_dir(".") instead of/workflow.- Dropped implicitly loaded repos; repos must be specified via
reposconfiguration property. - Cloning a repo into a non-empty directory now raises an error. This can be changed by setting
if_exists: skip. - Dropped CLI commands
dstack config,dstack stats, anddstack gateway create. - Dropped Python API
RunCollectionmethodsRunCollection.get_plan(),RunCollection.exec_plan(), andRunCollection.submit(). - Dropped local repos support:
dstack init --localanddstack.api.LocalRepo. - Dropped Azure deprecated VM series Dsv3 and Esv4.
- Dropped legacy server environment variables
DSTACK_SERVER_METRICS_TTL_SECONDSandDSTACK_FORCE_BRIDGE_NETWORK.
Deprecations
- Deprecated the API endpoint
/api/project/{project_name}/fleets/createin favor of/api/project/{project_name}/fleets/apply. - Deprecated
repo_dirargument inRunCollection.get_run_plan()in favor ofrepos[].path.
What's changed
- Update alembic pin by @r4victor in #3331
- [Internal] Bump golangci-lint to v2 by @un-def in #3336
- Add RELEASE.md by @r4victor in #3334
- Implement runner auto-update by @un-def in #3333
- [Feature]: Add JSON output option for CLI commands by @peterschmidt85 in #3335
- [Docs] Make Kapa.ai a sidebar (styling update) by @peterschmidt85 in #3338
- [Docs] Fleet-related improvements by @peterschmidt85 in #3339
- [UI] Run Wizard. Added docker, python and repos fields by @olgenn in #3252
- Make autocreated fleets opt-in by @r4victor in #3342
- Add
repos[].if_existsrun configuration option by @un-def in #3341 - Clean up 0.19 compatibility code by @r4victor in #3347
- [Breaking]: Drop deprecated
RunCollectionmethods by @jvstme in #3340 - Events emission framework and API by @jvstme in #3325
- Drop legacy server environment variables by @un-def in #3349
- Drop legacy working/repo dirs where possible by @un-def in #3348
- refactor: just remove 3 duplicated lines in 1 .py file by @immanuwell in #3350
- Drop
dstack config,dstack stats,dstack gateway createby @r4victor in #3351 - Drop hardcoded Hot Aisle VM specs by @jvstme in #3239
- [Docs]: Fix TensorDock still present in reference by @jvstme in #3321
- [Blog] How Toffee streamlines inference and cut GPU costs with
dstackby @peterschmidt85 in #3345 - Drop config.yml->repos and LocalRepo support by @un-def in #3352
- [chore]: Fix Alembic
path_separatorwarning by @jvstme in #3353 - Clean up low- and high-level API clients by @un-def in #3355
- Add
EventTarget.project_nameby @jvstme in #3362 - [runner] Chown repo dir by @un-def in #3364
- Add tini to server Docker images by @un-def in #3357
- Set WORKDIR in base Docker images by @un-def in #3358
- #3309 events UI by @olgenn in #3361
- Pass state param to github callback by @r4victor in #3366
- Add the
dstack eventcommand for viewing events by @jvstme in #3365 - [Internal] Packer: apt-upgrade.sh: autoaccept conffiles changes by @un-def in #3367
- Bump base_image to 0.12 by @un-def in #3368
- Restore
RunSpec.working_dirfield by @un-def in #3371 - Drop
DSTACK_FF_EVENTSby @jvstme in #3372 - Change field order in
dstack eventby @jvstme in #3373 - Add more events by @jvstme in #3369
- [Verda] Rename the
datacrunchbackend toverdaby @peterschmidt85 in #3359
New contributors
- @immanuwell made their first contribution in #3350
Full changelog: 0.19.40...0.20.0rc1
0.19.40
0.19.39
This release includes several important bug fixes, performance improvements, and updated documentation.
Documentation
Contributing
External contributors can now build the dstack documentation locally!
Previously, this wasn’t possible because dstack relied on the premium MKDocs Material Insider theme. Since the maintainers of MKDocs Material recently made the full edition free, we've updated the repository accordingly.
To help contributors get started, we've added a new guide: contributing/DOCS.md.
We welcome and encourage community contributions - whether that's reporting issues or submitting pull requests.
/llms.txt
As more users rely on LLMs to interact with tools, we've added support for /llms.txt to help guide models using dstack.
You can now use:
These files help LLMs better understand how dstack works and enable them to generate more accurate commands, configurations, and answers.
AGENTS.md
We’ve also added AGENTS.md to help modern AI agents automatically understand how to interact with the repository and tooling.
Warning
Be sure to update to 0.19.40, which includes an additional important fix.
What's changed
- [Experimental] Added
LEGACY_REPO_DIRfeature flag (to drop the legacy repo dir) by @un-def in #3305 - [UX] Minor improvement for
dstack serverby @peterschmidt85 in #3308 - [Bug] Fix
LEGACY_REPO_DIR_DISABLEDfeature flag by @un-def in #3314 - [Docs] Add
sglang_routerdetails in examples, gateway and refs by @Bihan in #3313 - [Docs] Add
llms.txtandllms-full.txtby @peterschmidt85 in #3312 - Assert not authenticated 401 by @r4victor in #3318
- [Performance] Optimize per fleet offers by @r4victor in #3316
- [Docs] Add
AGENTS.mdby @r4victor in #3319 - [Docs] Generate external links CSS decoration automatically by @peterschmidt85 in #3320
- [Blog] SGLang router integration and disaggregated inference roadmap by @peterschmidt85 in #3323
- [Bug] Implement users soft-deletion by @r4victor in #3326
- [Bug] Fix gateway router field backward compatibility by @Bihan in #3327
Full changelog: 0.19.38...0.19.39
0.19.38
Gateways
Routers
dstack gateways now integrate with SGLang Model Gateway, enabling inference request routing with policies such as cache_aware, power_of_two, round_robin, and random. You can enable it by setting the router property in your gateway configuration to sglang and select any of the available routing policies.
Example configuration:
type: gateway
name: sglang-gateway
backend: aws
region: eu-west-1
domain: example.com
router:
type: sglang
policy: cache_awareRead how the new router property works in the documentation.
Fleets
Run plan
Since 0.19.26 release, dstack has been provisioning instances according to configured fleets, but run plan offers didn’t reflect that — meaning you might not have seen the actual offers used for provisioning.
This has now been fixed, and the run plan shows offers that respect the configured fleets.
For example, you can create a fleet for provisioning spot GPU instances on AWS:
type: fleet
name: cloud-fleet
nodes: 0..
backends: [aws]
spot_policy: spot
resources:
gpu: 1..The run plan for submitted runs now shows offers that match the fleet configuration:
✗ dstack apply
...
# BACKEND RESOURCES INSTANCE TYPE PRICE
1 aws (us-east-1) cpu=4 mem=16GB disk=100GB T4:16GB:1 g4dn.xlarge $0.526
2 aws (us-east-2) cpu=4 mem=16GB disk=100GB T4:16GB:1 g4dn.xlarge $0.526
3 aws (us-west-2) cpu=4 mem=16GB disk=100GB T4:16GB:1 g4dn.xlarge $0.526
...
Shown 3 of 309 offers, $71.552maxWhat's changed
- [Docs] Update to the latest
mkdocs-materialand add thecontributing/DOCS.mdby @peterschmidt85 in #3286 - [Docs] Describe some gateway options on Concepts/Gateways page by @un-def in #3287
- Expand max_duration reference by @r4victor in #3292
- [Docker] Fix ssh zombie processes issue by @un-def in #3295
- [Docs] Fix incorrect URLs by @peterschmidt85 in #3297
- [Blog] NVIDIA DGX Spark by @peterschmidt85 in #3298
- Return plan offers wrt fleets by @r4victor in #3300
- Show task nodes in run plan by @r4victor in #3301
- Log non-zero exit status in SSHTunnel.close/aclose by @un-def in #3296
- Fix in-place update when
filesare used by @un-def in #3289 - [Runpod] Require CUDA 12.8+ on the host by @peterschmidt85 in #3304
- Fix SSHAttach.detach() by @un-def in #3306
- Add SGLang Router Support by @Bihan in #3267
Full changelog: 0.19.37...0.19.38
0.19.37
CLI
dstack attach --logs --since
The dstack attach --logs command now supports a --since argument to show only the recent logs before following real-time logs. You can specify either a relative duration or an absolute timestamp:
# Show logs from a specific timestamp and follow real-time logs
> dstack attach my-task --logs --since 2025-11-05T08:54:15Z
# Show logs from the last 5 minutes and follow real-time logs
> dstack attach my-task --logs --since 5m
This is especially helpful for long-running services and trainings when you don't need to load the entire logs history.
Fleets
Placement groups for elastic fleets
Previously dstack set up interconnected clusters with placement groups only for fleets with static number of instances such as nodes: 8. Now instances provisioned in fleets with placement: cluster always use placement groups. So now you can use elastic fleets and get best connectivity:
type: fleet
name: cloud-fleet
placement: cluster
nodes: 0..Important change: Multi-node tasks can now run only on fleets with placement: cluster.
Backends
Gateways on Kubernetes
Previously gateways support on Kubernetes was limited to managed Kubernetes with DNS-based load balancers such as EKS. Now the support is extended to IP-based load balancers such as GKE and Nebius' mk8s.
What's Changed
- Support --since arg for dstack attach --logs command by @r4victor in #3268
- Fix instances disk in resources description by @r4victor in #3271
- [Internal] Add kubernetes type stubs by @un-def in #3272
- Forbid running multinode tasks on non-cluster fleets by @r4victor in #3277
- [Feature]: Make proxy service HTTP timeout configurable by @earandap in #3275
- [runner] Allow to compile runner on macOS (for development purposes only) by @peterschmidt85 in #3276
- Support placement groups for elastic fleets by @r4victor in #3282
- Kubernetes: change jump pod image, tune sshd options by @un-def in #3273
- Kubernetes: support IP based load balancers by @un-def in #3283
- Improved remote repo support by @peterschmidt85 in #3279
- Mention runpod in Clusters guide by @r4victor in #3284
- Improved remote repo support (#3279) by @peterschmidt85 in #3285
New Contributors
Full Changelog: 0.19.36...0.19.37
0.19.36
CLI
dstack ps
The output of dstack ps has been revamped to include colored statuses and a more compact resource view. Full resource details are still available in dstack ps --verbose.
dstack logs --since
The dstack logs command now supports a --since argument to show only recent logs. You can specify either a relative duration or an absolute timestamp:
# Show logs from a specific timestamp
> dstack logs logs-task --since 2025-11-05T08:54:15Z
# Show logs from the last 5 minutes
> dstack logs logs-task --since 5mKubernetes
Improved GPU allocation
The kubernetes backend now requests all available GPU types when scheduling jobs, instead of limiting to just the first available type. This enables more flexible scheduling in heterogeneous Kubernetes clusters with multiple GPU types.
Offers
Optional GPU requirements
When specifying GPU requirements with a lower bound of 0 (e.g., gpu: 0..8:24GB), dstack now includes non-GPU offers in addition to GPU instances. This allows for more flexible resource selection when GPU access is optional.
What's changed
- Fix ComputeGroupModel migration table lock order by @r4victor in #3244
- Add DSTACK_FF_AUTOCREATED_FLEETS_DISABLED by @r4victor in #3251
- [Nebius] Pre-build a Docker image with nebius CLI bundled by @peterschmidt85 in #3248
- Fleet-first docs by @r4victor in #3242
- [Docs] Fix typo in fleets.md comment by @antoniojtorres in #3255
- [CLI] Improve the output of
dstack psby @peterschmidt85 in #3253 - [chore]: Drop temporary
python-dxfpatch by @jvstme in #3245 - Support --since arg for dstack logs command by @r4victor in #3258
- Exclude requirements.multinode for client backward compatibility by @r4victor in #3262
- Kubernetes: request all suitable GPUs by @un-def in #3259
- [Bug]: Using "files" directive with an SSH Fleet will have dstack-runner consume all ram and hang by @peterschmidt85 in #3263
- Include non-GPU offers on
gpu: 0..by @jvstme in #3264
New Contributors
- @antoniojtorres made their first contribution in #3255
Full Changelog: 0.19.35...0.19.36
0.19.35
Runpod
Instant Clusters
dstack adds support for Runpod Instant Clusters enabling multi-node tasks on Runpod:
✗ dstack apply -f nccl-tests.dstack.yaml -b runpod
Project main
User admin
Configuration .dstack/confs/nccl-tests-simple.yaml
Type task
Resources cpu=2.. mem=8GB.. disk=100GB.. gpu:1..8
Spot policy auto
Max price -
Retry policy -
Creation policy reuse-or-create
Idle duration 5m
Max duration -
Reservation -
# BACKEND RESOURCES INSTANCE TYPE PRICE
1 runpod (US-KS-2) cpu=128 mem=2008GB disk=100GB NVIDIA A100-SXM… $16.7…
A100:80GB:8
2 runpod (US-MO-1) cpu=128 mem=2008GB disk=100GB NVIDIA A100-SXM… $16.7…
A100:80GB:8
3 runpod cpu=160 mem=1504GB disk=100GB NVIDIA H100 80G… $25.8…
(CA-MTL-1) H100:80GB:8
...
Shown 3 of 5 offers, $34.464max
Submit the run nccl-tests? [y/n]:
Runpod offers clusters of 2 to 8 nodes with H200, B200, H100, and A100 GPUs and InfiniBand networking up to 3200 Gbps.
What's Changed
- Fix postgres migrations deadlocks by @r4victor in #3220
- Detect nvidia inside WSL2 by @r4victor in #3221
- Fix examples link in contributing doc by @matiasinsaurralde in #3228
- Fix context usage in internal metrics package by @matiasinsaurralde in #3226
- Fix working_dir compatibility with pre-0.19.27 clients by @un-def in #3231
- Fix autocreated fleets warning by @r4victor in #3233
- Improve Go code error handling by @r4victor in #3230
- Support Runpod Instant Clusters by @r4victor in #3214
- Switch to nebius sdk 0.3 by @r4victor in #3222
- Do not terminate fleet instances on idle_duration at nodes.min by @r4victor in #3235
- [shim] Log successful API calls with trace level by @un-def in #3237
- Drop hardcoded Nebius InfiniBand fabrics by @jvstme in #3234
- [runner] Clone repo before working dir is created by @un-def in #3240
New Contributors
- @matiasinsaurralde made their first contribution in #3228
Full Changelog: 0.19.34...0.19.35
0.19.34
UI
Scheduled runs
The Run details page now shows Schedule and Next time for scheduled runs.
Finished times
The Run and Job list and details pages now display Finished times.
Backends
GCP
GCP G4 instances with NVIDIA RTX PRO 6000 GPUs are now generally available:
> dstack offer -b gcp --gpu RTXPRO6000
# BACKEND RESOURCES INSTANCE TYPE PRICE
1 gcp (us-central1) cpu=48 mem=180GB disk=100GB RTXPRO6000:96GB:1 g4-standard-48 $4.5001
2 gcp (us-central1) cpu=96 mem=360GB disk=100GB RTXPRO6000:96GB:2 g4-standard-96 $9.0002
3 gcp (us-central1) cpu=192 mem=720GB disk=100GB RTXPRO6000:96GB:4 g4-standard-192 $18.0003
4 gcp (us-central1) cpu=384 mem=1440GB disk=100GB RTXPRO6000:96GB:8 g4-standard-384 $36.0006Also, GCP A4 instances are supported via reservations.
Runs
SSH keys
dstack now uses server-managed user SSH keys when starting new runs. This allows users to attach to the run from different machines, since the SSH key is automatically replicated to all clients. User-supplied SSH keys are still used if specified explicitly.
Docs
Kubernetes
The Kubernetes backend docs now include a list of required permissions.
What's Changed
- Support getting job metrics by run_id by @r4victor in #3201
- Document Kubernetes required permissions by @r4victor in #3202
- Show Schedule and Next run on Run page by @r4victor in #3203
- Fix next_triggered_at extra fields not permitted by @r4victor in #3207
- Add AI Assistance Notice by @r4victor in #3208
- Add
InstanceOffer.backend_data+ reserved GCP A4 by @jvstme in #3209 - Force uppercase Runpod volume regions by @r4victor in #3217
- Show Finished for runs and jobs in the UI by @r4victor in #3218
- Use server-managed user SSH keys for new runs by @jvstme in #3216
- [GCP] Support G4 instance type GA by @peterschmidt85 in #3213
Full Changelog: 0.19.33...0.19.34
0.19.33
Kubernetes
AMD
The kubernetes backend now allows you to run workloads on AMD GPU-enabled Kubernetes clusters.
UI
Dev environments
You can now configure and provision dev environments directly from the user interface.
create-dev-environment-2.mp4
Note
CLI version 0.19.33 or later is required to attach to runs created from the UI.
GCP
Reservations
You can now configure specifically-targeted GCP reservations in fleet configurations to leverage reserved compute capacity:
type: fleet
nodes: 4
placement: cluster
backends: [gcp]
reservation: my-reservationFor reservations shared between projects, use the full syntax:
type: fleet
nodes: 4
placement: cluster
backends: [gcp]
reservation: projects/my-proj/reservations/my-reservationdstack will automatically locate the specified reservation, match offers to the reservation's properties, and provision instances within the reservation. If there are multiple reservations with the specified name, all of them will be considered for provisioning.
Note
Using reservations requires the compute.reservations.list permission in the project that owns the reservation.
G4 preview
If your GCP project has access to the preview G4 instance type, you can now try it out with dstack.
> dstack offer -b gcp --gpu RTXPRO6000
# BACKEND RESOURCES INSTANCE TYPE PRICE
1 gcp (us-central1) cpu=48 mem=180GB disk=100GB RTXPRO6000:96GB:1 g4-standard-48 $0To use G4, enable its preview in the backend settings.
projects:
- name: main
backends:
- type: gcp
project_id: my-project
creds:
type: default
preview_features: [g4]Hot Aisle
The hotaisle backend now supports 8x MI300X instances too.
> dstack offer -b hotaisle --gpu 8:MI300X
# BACKEND RESOURCES INSTANCE TYPE PRICE
1 hotaisle (us-michigan-1) cpu=104 mem=1792GB disk=12288GB MI300X:192GB:8 8x MI300X 104x Xeon Platinum 8470 $15.92Docker
Default image
The default Docker image now uses CUDA 12.8 (updated from 12.1).
What's changed
- Fix version descriptions on Sky index page by @jvstme in #3153
- [Internal] Minor
justimprovements by @peterschmidt85 in #3173 - [Docker] Update the CUDA version in the default Docker image to 12.8 (from 12.1) by @peterschmidt85 in #3166
- [HotAisle] 4x MI300X 52x Xeon Platinum 8470 is skipped by @peterschmidt85 in #3175
- [Internal] Updated amd-smi CI/CD by @peterschmidt85 in #3179
- Make kubeconfig filename optional in server/config.yml by @r4victor in #3189
- [HotAisle] Support 8xMI300X instances by @peterschmidt85 in #3188
- [GCP] Support G4 preview instance type by @peterschmidt85 in #3181
- [UX] Improved UX of the project settings CLI section by @peterschmidt85 in #3183
- [UI] A prototype of the "Connect" section to show on the running dev environment page (WIP) by @peterschmidt85 in #3184
- Support GCP reservations by @jvstme in #3186
- [Feature]: Store user SSH key on the server by @peterschmidt85 in #3176
- [Internal] Extend
_CREATE_USER_HOOKSwith an optional config by @peterschmidt85 in #3192 - Run wizzard by @olgenn in #3191
- fix(VastAICompute): filter region before offer by @DragonStuff in #3193
- Kubernetes: add AMD GPU support by @un-def in #3178
- Fix CLI incompatibility with older
/get_my_userby @jvstme in #3198
Full changelog: 0.19.32...0.19.33
0.19.32
Fleets
Nodes
Maximum number of nodes
The fleet nodes.max property is now respected that allows limiting maximum number of instances allowed in a fleet. For example, to allow at most 10 instances in the fleet, you can do:
type: fleet
name: cloud-fleet
nodes: 0..10A fleet will be considered for a run only if the run can fit into the fleet without violating nodes.max. If you don't need to enforce an upper limit, you can omit it:
type: fleet
name: cloud-fleet
nodes: 0..Backends
Nebius
Tags
Nebius backend now supports backend and resource-level tags to tag cloud resources provisioned via dstack:
type: nebius
creds:
type: service_account
# ...
tags:
team: my_team
user: jakeCredentials file
It's also possible to configure the nebius backend using a credentials file generated by the nebius CLI:
nebius iam auth-public-key generate \
--service-account-id <service account ID> \
--output ~/.nebius/sa-credentials.jsonprojects:
- name: main
backends:
- type: nebius
creds:
type: service_account
filename: ~/.nebius/sa-credentials.jsonHot Aisle
Hot Aisle backend now supports multi-GPU VMs such as 2xMI300X and 4xMI300X.
dstack apply -f .local/.dstack.yml --gpu amd:2
The working_dir is not set — using legacy default "/workflow". Future versions will default to the
image's working directory.
# BACKEND RESOURCES INSTANCE TYPE PRICE
1 hotaisle cpu=26 mem=448GB disk=12288GB 2x MI300X 26x Xeon… $3.98
(us-michigan-1) MI300X:192GB:2What's changed
- Fix CLI compatibility with server 0.19.11 by @jvstme in #3145
- [Feature]: Nebius switch to using
nebius iam auth-public-key generateby @peterschmidt85 in #3147 - [Docs] Move
PluginstoReference|Python APIby @peterschmidt85 in #3148 - 404 error on GIT url by @robinnarsinghranabhat in #3149
- Fix idle duration: off and forbid negative durations by @r4victor in #3151
- [Docs]: GCP A4 cluster example by @jvstme in #3152
- Consider multinode replica inactive only if all jobs done by @r4victor in #3157
- Kubernetes: add NVIDIA GPU toleration by @un-def in #3160
- [Nebius] Support tags by @peterschmidt85 in #3158
- [Hot Aisle] Support multi-GPU VMs by @peterschmidt85 in #3154
- feat(docker): upgrade litestream to v0.5.0 by @DragonStuff in #3165
- [Blog] Orchestrating GPU workloads on Kubernetes by @peterschmidt85 in #3161
- Respect fleet
nodes.maxby @r4victor in #3164 - Fix kubeconfig via data reference by @r4victor in #3170
- [Docs] Fix kubernetes typos by @svanzoest in #3169
New contributors
- @robinnarsinghranabhat made their first contribution in #3149
- @DragonStuff made their first contribution in #3165
- @svanzoest made their first contribution in #3169
Full changelog: 0.19.31...0.19.32