Repository navigation
Releases: dstackai/dstack
Release list
0.22.5
Run configurations
Python 3.15
Run configurations now accept python: "3.15":
type: dev-environment
python: "3.15"
ide: vscodeThe default Docker image now preinstalls Python 3.11 to 3.15. Runs use the preinstalled build instead of downloading Python on every container startup. See python.
Backends
Lium
The release adds experimental support for Lium. The lium backend supports GPU runs, private Docker images, and volumes.
projects:
- name: main
backends:
- type: lium
creds:
type: api_key
api_key: ...dstack offer -b lium --group-by gpu
# GPU SPOT $/GPU BACKENDS
1 RTX3090:24GB:1 on-demand 0.4 lium
2 RTX5070Ti:16GB:1 on-demand 0.4 lium
3 A6000:48GB:1..5 on-demand 0.42..0.55 lium
4 RTX6000Ada:48GB:1 on-demand 0.8 lium
5 RTXPRO6000:96GB:8 on-demand 1.88..2.09 lium
6 H100:80GB:8 on-demand 1.97..3.75 lium
7 H200NVL:141GB:4 on-demand 4.5 lium
8 H200:141GB:1..4 on-demand 5.36..5.58 lium
9 B200:180GB:1..8 on-demand 5.5..7.5 lium
10 B300:270GB:1..8 on-demand 8..10 liumLium volumes use S3-backed storage, grow with usage, and can be mounted in any Lium region, so size and region are omitted:
type: volume
backend: lium
name: my-volumeGCP TPUs
Important
TPU offers are no longer suggested by default. If you use TPUs with the gcp backend, enable them with tpu: true before upgrading.
TPU support is experimental, and TPU offers used to appear for anyone with a GCP backend. It is now opt-in:
projects:
- name: main
backends:
- type: gcp
project_id: my-project
creds:
type: default
tpu: trueSee GCP.
UI
Offers
The Offers page now shows CPU offers as well. Turn off the new GPU toggle to see CPU cards, group offers optionally, and filter by GPU vendor. Each offer shows its hourly price, with price ranges for grouped offers.
The Fleet page has a new Offers tab with the offers matching the fleet, which helps check available capacity, including for CPU-only SSH and Kubernetes fleets. Fleet instances are now shown below the General section.
User projects
The Projects tab on a user page now lists the projects the user owns or has joined, with their role in each.
Blog
Qwen3.8-Flash-Next coding agents
A new post shows how a single 4xH200 node, optimized with dstack presets, serves 16 concurrent Qwen3.8-Flash-Next coding agents with roughly 3x lower latency than the available providers.
What's Changed
- Add the Qwen3.8-Flash-Next coding agents benchmark post by @peterschmidt85 in #4375
- Fix CloudRift API compatibility by @peterschmidt85 in #4380
- Make experimental GCP TPU support opt-in by @peterschmidt85 in #4376
- [UI] Add fleet offers and CPU cards by @peterschmidt85 in #4378
- Add Lium backend by @peterschmidt85 in #4377
- Wait for other jobs only before submitting to the runner by @un-def in #4390
- [UI] Show owned and joined projects on user pages by @peterschmidt85 in #4394
- Preinstall Python 3.11-3.15 into base Docker image by @un-def in #4393
- Bump base Docker image to 0.16 by @un-def in #4395
- Support Python 3.15 by @un-def in #4396
- Migrate Runpod backend to REST API v2 by @un-def in #4397
- Fix concurrent AWS security group creation by @jvstme in #4399
- Don't count requests rejected before routing as service hits by @vitostrokov in #4387
- Resend gateway config before re-registering services by @vitostrokov in #4388
New Contributors
- @vitostrokov made their first contribution in #4387
Full Changelog: 0.22.4...0.22.5
0.22.4
Major bug-fixes
Server stability
The server could stop responding in two cases, both fixed in this release. Opening SSH connections, e.g. for service probes, could crash in gRPC and hang the server for up to 5 minutes (#4362). Submitting many runs at once kept the server busy finding offers and unable to handle other requests (#4373); finding offers is now also much faster. In either case, cloud instances being created at the time could be left running without dstack tracking them.
UI
Launch
The Launch button on the Runs page now opens a page that shows how to start a run with the CLI or with AI agents using dstack skills.
Templates in the UI are now available only in dstack Enterprise, Factory, and Sky.
Offers
The Offers page now shows the best GPUs first, and its new Launch button takes you to the Launch page with the same filters.
Quotas
In dstack Factory and Sky, project admins can now see the project's quotas in a new Quotas tab and request an increase.
What's Changed
- Disable gRPC fork support in the server by @r4victor in #4365
- Speed up offer lookups and consume them off the event loop by @r4victor in #4374
- Fix preemptible Nebius L40S provisioning by @jvstme in #4367
- Rework router worker sync around job ID labels by @un-def in #4361
- Detect HTTP worker runtime via /v1/models by @un-def in #4368
- [UI] Rework Launch and Offers by @peterschmidt85 in #4369
- [UI] Add project quotas (Factory and Sky only) by @peterschmidt85 in #4370
- Rename router type
sglangtosmgby @un-def in #4371 - Build Azure community gallery image ID instead of looking it up by @peterschmidt85 in #4334
- Replace freezegun with time-machine by @r4victor in #4360
- Support SQLAlchemy 2.1 by @un-def in #4364
Full Changelog: 0.22.3...0.22.4
0.22.3
Hot Aisle bare metal (experimental)
dstack can now provision Hot Aisle bare metal servers with 8xMI300X in addition to VMs. Bare metal is disabled by default; enable it with bare_metal: true in the backend settings:
projects:
- name: main
backends:
- type: hotaisle
team_handle: hotaisle-team-handle
creds:
type: api_key
api_key: ...
bare_metal: trueAnd the bare metal offers become available:
$ dstack offer --backend hotaisle
# BACKEND RESOURCE TYPE PRICE
1 hotaisle (us-michigan-1) cpu=x86:104 mem=2048GB bm-mi300x-8 $27.12
disk=11
gpu=MI300X:192GB:8Bare metal servers are prepaid for 8 hours. Use a fleet with fixed nodes and delete it when done:
type: fleet
name: hotaisle-bm
nodes: 1
backends: [hotaisle]
instance_types: [bm-mi300x-8]Within the 8 hours, dstack doesn't force-terminate bare metal servers: the instance stays terminating for about 15 minutes, then dstack stops tracking it and the server must be terminated manually in Hot Aisle. Controlled by DSTACK_FF_HOTAISLE_BARE_METAL_NO_FORCE_RELEASE (enabled by default, 0 disables).
What's Changed
- Add Hot Aisle bare metal support by @peterschmidt85 in #4325
- Correctly support NVIDIA B300 in Vast.ai by @jvstme in #4330
- Update Azure GRID driver to 580.178.04 by @peterschmidt85 in #4332
- [Docs] Update vLLM PD example by @un-def in #4336
- Fix pyright with kubernetes 37 by @r4victor in #4347
- Skip placement groups for AWS Capacity Blocks by @r4victor in #4345
- Warn dstack skill about heredocs split across commands items by @r4victor in #4348
- Bound SSHTunnel control commands with timeouts and BatchMode by @r4victor in #4354
- Use Vultr backend credentials when fetching GPU offers by @peterschmidt85 in #4335
- Reconnect gateway replica SSH tunnels after process exit by @peterschmidt85 in #4355
- Fix gateway recovery after high request load by @peterschmidt85 in #4351
Full Changelog: 0.22.2...0.22.3
0.22.2
Backends
Daytona
dstack now supports Daytona as a backend for CPU and GPU dev environments, tasks, and services, including multi-GPU configurations with NVIDIA and AMD GPUs.
$ dstack offer -b daytona --gpu B300,MI355X,H200:1..8 --max-offers 3
# BACKEND RESOURCES INSTANCE TYPE PRICE
1 daytona (earth) cpu=x86:1 mem=1GB disk=1GB gpu=H200:141GB:1 1x-H200-1cpu-1gb-1gb $4.6067
2 daytona (earth) cpu=x86:1 mem=1GB disk=1GB gpu=MI355X:288GB:1 1x-MI355X-1cpu-1gb-1gb $6.0567
3 daytona (earth) cpu=x86:1 mem=1GB disk=1GB gpu=B300:270GB:1 1x-B300-1cpu-1gb-1gb $7.1667
...
Shown 3 of 19 offers, $47.986708maxdstack’s Daytona integration also supports volumes. Daytona provides these as S3-backed FUSE mounts, allowing multiple instances to mount the same volume simultaneously across regions.
See the backend documentation for configuration and required permissions.
Presets
Replica groups
Preset creation now uses a separate router for regular inference as well as prefill-decode disaggregation when the fleet has placement: cluster and a CPU-only instance for the router.
Trials use task node groups, and the final service uses replica groups to run the router and GPU workers separately. Workers connect over gRPC when supported, and all benchmarks run through the router.
What's Changed
- Refactor dstack for dstack Factory extension by @r4victor in #4303
- [Website] Updated product pages by @peterschmidt85 in #4304
- Fix GCP
a3-edgegpu-8ganda3-highgpu-8gby @jvstme in #4307 - Fix errors in service router worker sync by @un-def in #4305
- Clarify Kubernetes volume context selection by @peterschmidt85 in #4311
- [Website] Updated Slurm info on landing by @peterschmidt85 in #4312
- Set upper bound of SQLAlchemy version to < 2.1 by @un-def in #4314
- Don't require probes to pass in router worker sync by @un-def in #4313
- Polish landing pages by @peterschmidt85 in #4319
- OCI: resolve availability domains from the configured compartment by @fede-kamel in #4309
- Sync workers with every running router by @un-def in #4320
- Restore model probe for service routers by @un-def in #4322
- [Presets] Update system_prompt for router usage by @Bihan in #4294
- Parse Crusoe quota counters returned as strings by @r4victor in #4323
- [UI] Fix job metrics tab by @un-def in #4324
- Disable gateway proxy buffering for model services by @r4victor in #4326
- Apply DSTACK_SERVICE_CLIENT_TIMEOUT to gateway nginx and app by @r4victor in #4327
- Add Daytona backend by @peterschmidt85 in #4321
- Pin Nebius spot price at provisioning time by @jvstme in #4328
- Add OCI
experimental_instance_typessetting by @jvstme in #4329
New Contributors
- @fede-kamel made their first contribution in #4309
Full Changelog: 0.22.1...0.22.2
0.22.1
Gateways
GCP
GCP gateways with an ALB can now use certificates managed by Google Cloud Certificate Manager, enabling HTTPS for services behind the gateway with TLS terminated at the load balancer:
type: gateway
name: example-gateway
backend: gcp
region: europe-west4
domain: example.com
replicas: 2
load_balancer:
type: alb
certificate:
type: gcp-cm
name: projects/my-project/locations/europe-west4/certificates/my-certificateThe certificate must be a regional certificate created in the same region as the gateway, referenced by its full resource name. Creating such gateways requires additional GCP permissions:
certificatemanager.certs.use
compute.regionTargetHttpsProxies.create
compute.regionTargetHttpsProxies.delete
compute.regionTargetHttpsProxies.use
Refer to the docs for details.
Replicas
The maximum number of gateway replicas is raised from 3 to 9, and is now configurable server-wide via DSTACK_SERVER_GATEWAY_MAX_REPLICAS.
Replicated gateways are no longer marked experimental. The remaining limitation is that automatic certificate issuance via Let's Encrypt is not supported for them — use acm, gcp-cm, or an external load balancer for TLS termination.
Presets
Public registry
Presets in the dstack Sky registry are private by default and can now be made public. Set Presets to Public in the project settings to let anyone browse and pull the project's presets without signing in, including users of a self-hosted dstack server:
$ dstack preset pull main/qwen38-27b-mi300x
OKOnly project admins and global admins can change this setting; enabling it does not let anyone join the project.
What's changed
- [UI] Project visibility: minor UX changes by @peterschmidt85 in #4284
- [runner] Terminate the job's whole session, not just its shell by @un-def in #4283
- [runner] Make the executor lifecycle explicit by @un-def in #4286
- Fix gRPC router workers never becoming ready with
modelset by @Bihan in #4270 - Add DB index for instance_health_checks by @r4victor in #4288
- [Presets] Support public presets by @peterschmidt85 in #4287
- Collect the last job logs before killing the container by @un-def in #4289
- Improve DB connections handling by @r4victor in #4291
- Prevent resuming a saved preset by @ZenAlexa in #4228
- Support Certificate Manager for GCP gateways by @jvstme in #4290
- Increase gateway replica count limit
3→9by @jvstme in #4295 - Treat pre-releases as final releases in feature gates by @un-def in #4296
- Fix model endpoint protocol with LB-terminated TLS by @jvstme in #4299
- Do not downgrade runner and shim by default by @un-def in #4297
- Discourage automatic PRs by autonomous agents by @jvstme in #4292
New contributors
Full changelog: 0.22.0...0.22.1
0.22.0
Backends
GCP
Subnet configuration
You can now specify which subnets to use when provisioning instances, gateways, and TPUs in GCP. Add an optional subnetworks field to your GCP backend config — a mapping from regions to subnet names in the VPC specified by vpc_name:
projects:
- name: main
backends:
- type: gcp
project_id: my-project
regions: [europe-west4]
vpc_name: my-vpc
subnetworks:
europe-west4: my-subnet
creds:
type: defaultALB gateways
dstack can now create and manage an Application Load Balancer (ALB) for GCP gateways. This allows you to run multiple GCP gateway replicas with automatic load balancing.
$ dstack gateway list
NAME BACKEND HOSTNAME DOMAIN DEFAULT STATUS
gcp-gateway 10.200.0.53 example.com ✓ running
replica=0 gcp (europe-west9) 10.200.0.54 running
replica=1 gcp (europe-west9) 10.200.0.55 runningRefer to the docs for configuration examples and requirements.
Jarvislabs
Multi-node workloads
The Jarvislabs backend now supports placement: cluster fleets, multi-node tasks, and connectivity between VMs via VPC internal IPs.
Presets
Codex support
Presets can now be created with Codex in addition to Claude. Configure the agent provider, model, and effort in the preset configuration:
agent:
provider: codex
model: gpt-6-astra
effort: highClaude CLI default model
The preset agent now uses the claude CLI's default model instead of pinning a specific version.
Runner
This release includes a number of reliability fixes for job execution: runs are reliably stopped by max_duration even if the runner becomes unreachable; job cancellation is more reliable at actually stopping the underlying process; and several edge cases that could cause a run to hang or report a stale status have been fixed.
Breaking changes
Feature removals
- Exports are being phased out of the open-source version of
dstack. No new exports can be created, and existing exports can no longer be extended. A futuredstackrelease will automatically remove any remaining exports. - The open-source version no longer displays the global Events page in the UI. The Events tabs on resource pages are still available.
Both the Events page and Exports will remain supported in dstack Factory (formerly dstack Enterprise) and in dstack Sky.
API
These API methods now return a JSON object instead of a list:
Deprecations
The Python API deprecates two methods:
APIClient.exports.list()is deprecated in favor ofAPIClient.exports.list_exports()APIClient.imports.list()is deprecated in favor ofAPIClient.imports.list_imports()
What's changed
- UI build flags and landing updates by @peterschmidt85 in #4250
- Separate shim and runner API errors from connection errors by @un-def in #4251
- Split shim and runner response errors into status and body by @un-def in #4261
- [Docs] Minor update to the landing page by @peterschmidt85 in #4264
- Let the preset agent use the claude CLI's default model by @peterschmidt85 in #4265
- Raise instead of returning False from runner_ssh_tunnel by @un-def in #4262
- Support internal IP and cluster placement for jarvislabs by @r4victor in #4247
- [Docs] Minor update to the landing page by @peterschmidt85 in #4268
- [Docs] Fix Dynamo etcd/NATS wait loop under by @Bihan in #4258
- Enforce
max_durationon the server by @un-def in #4273 - Close the logs-done channels only once by @un-def in #4275
- [runner] Stop reading job output once the command has exited by @un-def in #4276
- [runner] Mark logs finished only once the executor has finished by @un-def in #4280
- Allow configuring
subnetworksin GCP settings by @jagretti in #4274 - [runner] Interrupt the job through the terminal, not the shell by @un-def in #4281
- [Docs] Amplify the main use-cases for tasks and services by @peterschmidt85 in #4260
- Phase out Exports in self-hosted OSS
dstackby @jvstme in #4282 - [Presets] Support Codex as an agent provider for creating presets by @peterschmidt85 in #4266
- Support ALB for GCP gateways by @jvstme in #4279
New Contributors
Full Changelog: 0.21.5...0.22.0
0.21.5
Backward compatibility
This update includes a hotfix for a backward compatibility issue that prevented the 0.21.4 CLI from applying service configurations on dstack servers older than 0.21.3.
It's recommended to update the CLI from 0.21.4 to 0.21.5.
Note
The server update from 0.21.4 is only necessary if you use the REST plugin with a plugin service that depends on dstack older than 0.21.3.
What's changed
Full changelog: 0.21.4...0.21.5
0.21.4
Presets
PD disaggregation
Presets can now be created for prefill-decode disaggregated setups. Previously the agent was restricted to single-node trials, and PD disaggregation was listed as a limitation.
The agent now runs multi-node trials using task node groups, benchmarks the router replica rather than individual prefill or decode workers (each of which only handles part of a request), and records the resources of every node of every group in the trial results.
Grouped services are also exported and stored in the groups syntax:
type: service
name: qwen3-pd
groups:
- replicas: 1 # router
commands: [...]
- replicas: 2 # prefill
commands: [...]
- replicas: 2 # decode
commands: [...]dstack preset -v reports the hardware of all nodes a session's trials used, e.g. H200:141GB:8 x3 for a CPU router with one prefill and two decode nodes, or H200:141GB:8 + H100:80GB:8 x2 when the groups ran different GPUs.
Note
PD disaggregation requires the trial task and the resulting service to run in a fleet with placement: cluster, since the replicas need an interconnect between instances.
Services
Replica groups
Heterogeneous services are now stored and returned in the groups layout introduced in 0.21.3, instead of being converted back to the legacy replicas: [{count}] list. The legacy layout is still accepted in configuration files, and servers still send it to clients older than 0.21.3.
Warning
Ensure you update the CLI to 0.21.5, which includes a hotfix for using the CLI with servers older than 0.21.3.
Gateways
Gateways have been tuned to handle more concurrent connections.
Instances
Shim upgrades on busy instances
dstack-shim can now be upgraded on instances with running jobs, as long as the instance runs shim 0.21.3 or later. Previously the server only restarted the shim when no task was running, so an instance hosting a long-lived service or a multi-day training job kept its old shim indefinitely.
SSH access to co-located jobs
On an instance that runs several of your jobs at once — a fleet with blocks — the first job to finish no longer revokes SSH access for the jobs still running.
Backends
Container-based backends (Kubernetes, Runpod, Slurm, and Vast.ai) now honor DSTACK_SERVER_SSHPROXY_ENFORCED. Previously they added the user's key to the container regardless of the setting, unlike VM-based backends. See Tenant isolation.
What's changed
- Allow restarting shim >= 0.21.3 with running tasks by @un-def in #4224
- [shim] Keep shim task files out of the container by @un-def in #4223
- [shim] Don't revoke host SSH access of co-located tasks by @un-def in #4226
- [chore]: Drop gateway-based routers implementation by @jvstme in #4236
- Fix adding authorized keys in Kubernetes and Slurm by @un-def in #4235
- Tune Nginx config on the gateway by @jvstme in #4237
- Replace the legacy replica groups serializer with a client patch by @Bihan in #4248
- [Presets] Add PD Disaggregation Support by @Bihan in #4227
- Honor sshproxy enforcement in container-based backends by @un-def in #4244
- Drop gateway
update.shby @jvstme in #4245 - Fix target type filter on Events page by @hhhhzzzj in #4253
- Drop legacy
dstack-gatewaypackage by @jvstme in #4252
New contributors
Full changelog: 0.21.3...0.21.4
0.21.4rc1
What's changed
- Allow restarting shim >= 0.21.3 with running tasks by @un-def in #4224
- [shim] Keep shim task files out of the container by @un-def in #4223
- [shim] Don't revoke host SSH access of co-located tasks by @un-def in #4226
- [chore]: Drop gateway-based routers implementation by @jvstme in #4236
- Fix adding authorized keys in Kubernetes and Slurm by @un-def in #4235
- Tune Nginx config on the gateway by @jvstme in #4237
- Replace the legacy replica groups serializer with a client patch by @Bihan in #4248
- [Presets] Add PD Disaggregation Support by @Bihan in #4227
- Honor sshproxy enforcement in container-based backends by @un-def in #4244
- Drop gateway
update.shby @jvstme in #4245 - Fix target type filter on Events page by @hhhhzzzj in #4253
- Drop legacy
dstack-gatewaypackage by @jvstme in #4252
New Contributors
Full Changelog: 0.21.3...0.21.4rc1
0.21.3
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.ymlPush 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]: yThis 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: nullEvents
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 -> RUNNINGBackends
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.2Breaking changes
dstack preset get --jsonnow reports the served model repository asrepoinstead ofmodel, distinguishing it frombase(the model family) andservice.model(what the endpoint serves it as).dataset: randomis rejected in preset configurations; omitdatasetto request synthetic prompts instead.- The
--debugflag 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 #4170
- Always show replica IP in
dstack gateway -vby @jvstme in #4172 - Document that idle_duration requires a nodes range by @r4victor in #4173
- Fix Run.logs() returning nothing for a finished run by @r4victor in #4176
- [Docs] Removed
namefromNode groupsexamples; plus few minor edits by @peterschmidt85 in #4178 - Don't add duplicate keys while provision SSH instance by @un-def in #4179
- [Blog] Presets: a toolkit for agent-based inference optimization by @peterschmidt85 in #4171
- [Blog] Tighten the presets post intro by @peterschmidt85 in #4180
- [Blog] Rewrite the presets post's compound learning section by @peterschmidt85 in #4181
- Make
GatewayReplicaModel.backend_idrequired by @jvstme in #4183 - Rename service replica groups to groups and support IP interpolation by @Bihan in #4177
- Add
GatewayReplicaModel.nameby @jvstme in #4184 - Fix
dstack apply --ssh-identityby @un-def in #4191 - Write preset traces by default and add the dstack-presets skill by @peterschmidt85 in #4192
- docs: fix two typos by @vaibhav8a in #4195
- [UI] Move SSH keys into the Settings tab on the user page by @peterschmidt85 in #4193
- [Docs] Service groups and Replica IP interpolation by @Bihan in #4185
- [shim] Commit task state changes via TaskStorage.Modify() by @un-def in #4200
- [Presets] Support for
dstack preset pushanddstack preset pullby @peterschmidt85 in #4194 - Keep the machine awake during preset creation by @r4victor in #4205
- [shim] Rework Run() into Start() and complete tasks in the background by @un-def in #4203
- [shim] Mark authorized_keys entries added by the shim by @un-def in #4206
- Add Seeweb GPU backend by @massaindustries in #4070
- Fix Seeweb test for gpuhunt 0.1.30 by @peterschmidt85 in #4207
- [Presets] Make a preset workload state the requested dataset by @peterschmidt85 in #4201
- Fix events client backward compatibility by @jvstme in #4209
- Drop AI Assistance Notice requirement by @r4victor in #4213
- Add gateway replica events by @jvstme in #4212
- Add compatibility guidance to
AGENTS.mdby @jvstme in #4210 - Fix case-sensitive fleet and run spec intersection by @r4victor in #4215
- [shim] Fix flaky Docker tests by @un-def in #4216
- [shim] Adjust log levels and messages by @un-def in #4217
- [shim] Fix GPU ownership of restored tasks by @un-def in #4218
- [shim] Persist task state to clean up tasks after a restart by @un-def in #4220
- Support AWS gateways with ALB without certificate by @jvstme in #4219
- Support in-place update for service
gatewayby @jvstme in #4221
New contributors
- @vaibhav8a made their first contribution in #4195
- @massaindustries made their first contribution in #4070
Full changelog: 0.21.2...0.21.3