Skip to content

0.21.3

Latest

Choose a tag to compare

@jvstme jvstme released this 27 Aug 14:05
· 1 commit to master since this release
d137594

Presets

Registry

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

$ 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:

groups:
  - replicas: 1
    commands: [...]

Service commands can also reference other replicas by IP:

${{ 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:

$ 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:

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:

$ 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.

$ 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

New contributors

Full changelog: 0.21.2...0.21.3