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