Download Latest Version 0.21.5 source code.zip (22.0 MB)
Email in envelope

Get an email when there's a new version of dstack

Home / 0.21.3
Name Modified Size InfoDownloads / Week
Parent folder
0.21.3 source code.tar.gz 2026-08-27 20.9 MB
0.21.3 source code.zip 2026-08-27 21.9 MB
README.md 2026-08-27 9.7 kB
Totals: 3 Items   42.9 MB 0

Presets

Registry

Presets created on one machine can now be shared and reused on another via the dstack registry:

:::shell
$ dstack preset push qwen38-27b-mi300x main/qwen38-27b-mi300x
OK

$ dstack preset pull main/qwen38-27b-mi300x
OK

$ dstack preset export main/qwen38-27b-mi300x -f qwen38.dstack.yml
OK

$ dstack apply -f qwen38.dstack.yml

Push and pull require project membership in a registry. Currently, the only available preset registry is dstack Sky.

Traces

Preset creation sessions now always write a real-time trace to ~/.dstack/presets/<id>/trace.jsonl, along with the agent prompt and final report — the --debug flag is no longer needed and has been removed.

[!NOTE] It's recommended to create presets using your own agent — either via a CLI such as Claude Code, or inside your IDE. Your agent helps you design the preset configuration, formulate hypotheses, and — most importantly — analyze the session's traces as well as the trial results (stored under ~/.dstack/presets/<id>/trials/<n>/trial.json), to decide what the next session can be and what instructions to give it via prompt.

To help your agent use dstack and presets, install the dstack and dstack-presets skills with npx skills add dstackai/dstack.

Services

Replica groups

Heterogeneous services now use the same groups layout as tasks, replacing the old replicas: [{count}] list:

:::yaml
groups:

  - replicas: 1
    commands: [...]

Service commands can also reference other replicas by IP:

:::yaml
${{ groups[i].replicas[j].IP_ADDRESS }}

Interpolation is only allowed for replica slots guaranteed to exist at start (e.g., with replicas: 2, slots 0 and 1 are valid; with replicas: 1..4, only slot 0 is). The old replicas layout still works and existing saved configurations keep using it.

Gateways

In-place update

The gateway property of a service can now be changed without stopping the service:

:::shell
$ dstack apply -f my-service.dstack.yml

Active run my-service already exists. Detected changes that can be updated in-place:

- Configuration properties:
  - gateway

Update the run? [y/n]: y

This also supports migrating between having a gateway and running without one (gateway: false). Migration may cause a brief interruption while traffic reroutes.

ALB gateways without a certificate

AWS gateways can now use an Application Load Balancer without requiring a certificate, via the new load_balancer property:

:::yaml
type: gateway
name: example-gateway
backend: aws
region: eu-west-1
domain: example.com
load_balancer:
  type: alb
certificate: null

Events

Gateway replica lifecycle (creation, status changes, service and replica registration/unregistration) is now tracked as events, filterable with --within-gateway:

:::shell
$ dstack event --within-gateway my-gateway
[2026-08-25 22:56:14] [gateway-replica my-gateway-0] Gateway replica created. Status: SUBMITTED
[2026-08-25 22:57:58] [gateway-replica my-gateway-0] Gateway replica status changed PROVISIONING -> RUNNING

Backends

Seeweb

dstack now supports Seeweb as a backend.

:::shell
$ dstack offer -b seeweb --max-offers 10
 #   BACKEND          RESOURCES                                              INSTANCE TYPE  PRICE
 1   seeweb (it-fr2)  cpu=x86:4 mem=32GB disk=100GB gpu=L4:24GB:1            ECS1GPU6       $0.38
 2   seeweb (it-fr2)  cpu=x86:8 mem=32GB disk=500GB gpu=A6000:48GB:1         ECS1GPU2       $0.74
 3   seeweb (it-fr2)  cpu=x86:8 mem=64GB disk=200GB gpu=L4:24GB:2            ECS2GPU6       $0.76
 4   seeweb (it-fr2)  cpu=x86:8 mem=32GB disk=500GB gpu=L40S:48GB:1          ECS1GPU7       $0.85
 5   seeweb (it-fr2)  cpu=x86:16 mem=120GB disk=500GB gpu=RTXPRO6000:96GB:1  ECS1GPU12      $1.25
 6   seeweb (it-fr2)  cpu=x86:16 mem=64GB disk=1000GB gpu=A6000:48GB:2       ECS2GPU2       $1.48
 7   seeweb (it-fr2)  cpu=x86:16 mem=64GB disk=1000GB gpu=L40S:48GB:2        ECS2GPU7       $1.7
 8   seeweb (it-fr2)  cpu=x86:32 mem=256GB disk=750GB gpu=H200:141GB:1       ECS1GPU10      $2.6
 9   seeweb (it-fr2)  cpu=x86:32 mem=128GB disk=2000GB gpu=L40S:48GB:4       ECS3GPU7       $3.4
 10  seeweb (it-fr2)  cpu=x86:64 mem=512GB disk=1500GB gpu=H200:141GB:2      ECS2GPU10      $5.2
 ```

## Breaking changes


* `dstack preset get --json` now reports the served model repository as `repo` instead of `model`, distinguishing it from `base` (the model family) and `service.model` (what the endpoint serves it as).
* `dataset: random` is rejected in preset configurations; omit `dataset` to request synthetic prompts instead.
* The `--debug` flag has been removed from preset creation; traces are now always written.

## What's changed


* [Presets] Delete creations that never saved a preset by @peterschmidt85 in https://github.com/dstackai/dstack/pull/4170
* Always show replica IP in `dstack gateway -v` by @jvstme in https://github.com/dstackai/dstack/pull/4172
* Document that idle_duration requires a nodes range by @r4victor in https://github.com/dstackai/dstack/pull/4173
* Fix Run.logs() returning nothing for a finished run by @r4victor in https://github.com/dstackai/dstack/pull/4176
* [Docs] Removed `name` from `Node groups` examples; plus few minor edits by @peterschmidt85 in https://github.com/dstackai/dstack/pull/4178
* Don't add duplicate keys while provision SSH instance by @un-def in https://github.com/dstackai/dstack/pull/4179
* [Blog] Presets: a toolkit for agent-based inference optimization by @peterschmidt85 in https://github.com/dstackai/dstack/pull/4171
* [Blog] Tighten the presets post intro by @peterschmidt85 in https://github.com/dstackai/dstack/pull/4180
* [Blog] Rewrite the presets post's compound learning section by @peterschmidt85 in https://github.com/dstackai/dstack/pull/4181
* Make `GatewayReplicaModel.backend_id` required by @jvstme in https://github.com/dstackai/dstack/pull/4183
* Rename service replica groups to groups and support IP interpolation by @Bihan in https://github.com/dstackai/dstack/pull/4177
* Add `GatewayReplicaModel.name` by @jvstme in https://github.com/dstackai/dstack/pull/4184
* Fix `dstack apply --ssh-identity` by @un-def in https://github.com/dstackai/dstack/pull/4191
* Write preset traces by default and add the dstack-presets skill by @peterschmidt85 in https://github.com/dstackai/dstack/pull/4192
* docs: fix two typos by @vaibhav8a in https://github.com/dstackai/dstack/pull/4195
* [UI] Move SSH keys into the Settings tab on the user page by @peterschmidt85 in https://github.com/dstackai/dstack/pull/4193
* [Docs] Service groups and Replica IP interpolation by @Bihan in https://github.com/dstackai/dstack/pull/4185
* [shim] Commit task state changes via TaskStorage.Modify() by @un-def in https://github.com/dstackai/dstack/pull/4200
* [Presets] Support for `dstack preset push` and `dstack preset pull` by @peterschmidt85 in https://github.com/dstackai/dstack/pull/4194
* Keep the machine awake during preset creation by @r4victor in https://github.com/dstackai/dstack/pull/4205
* [shim] Rework Run() into Start() and complete tasks in the background by @un-def in https://github.com/dstackai/dstack/pull/4203
* [shim] Mark authorized_keys entries added by the shim by @un-def in https://github.com/dstackai/dstack/pull/4206
* Add Seeweb GPU backend by @massaindustries in https://github.com/dstackai/dstack/pull/4070
* Fix Seeweb test for gpuhunt 0.1.30 by @peterschmidt85 in https://github.com/dstackai/dstack/pull/4207
* [Presets] Make a preset workload state the requested dataset by @peterschmidt85 in https://github.com/dstackai/dstack/pull/4201
* Fix events client backward compatibility by @jvstme in https://github.com/dstackai/dstack/pull/4209
* Drop AI Assistance Notice requirement by @r4victor in https://github.com/dstackai/dstack/pull/4213
* Add gateway replica events by @jvstme in https://github.com/dstackai/dstack/pull/4212
* Add compatibility guidance to `AGENTS.md` by @jvstme in https://github.com/dstackai/dstack/pull/4210
* Fix case-sensitive fleet and run spec intersection by @r4victor in https://github.com/dstackai/dstack/pull/4215
* [shim] Fix flaky Docker tests by @un-def in https://github.com/dstackai/dstack/pull/4216
* [shim] Adjust log levels and messages by @un-def in https://github.com/dstackai/dstack/pull/4217
* [shim] Fix GPU ownership of restored tasks by @un-def in https://github.com/dstackai/dstack/pull/4218
* [shim] Persist task state to clean up tasks after a restart by @un-def in https://github.com/dstackai/dstack/pull/4220
* Support AWS gateways with ALB without certificate by @jvstme in https://github.com/dstackai/dstack/pull/4219
* Support in-place update for service `gateway` by @jvstme in https://github.com/dstackai/dstack/pull/4221

## New contributors

* @vaibhav8a made their first contribution in https://github.com/dstackai/dstack/pull/4195
* @massaindustries made their first contribution in https://github.com/dstackai/dstack/pull/4070

**Full changelog**: https://github.com/dstackai/dstack/compare/0.21.2...0.21.3
Source: README.md, updated 2026-08-27