Repository navigation
Backends
Orphaned resources
In rare cases, a dstack bug or server crash can leave provisioned resources orphaned. This release adds automatic detection and optional cleanup for the aws, azure, gcp, nebius, and runpod backends. Resources are identified by their cloud tags or names and matched against the project's provisioning records.
By default, detection runs in report mode: it writes logs, emits events, and reports orphaned resources to Sentry if DSTACK_SENTRY_DSN is configured.
$ dstack event --since 1d
[2026-10-29 16:25:03] [instance my-fleet-2] Orphaned resources found in aws/eu-central-1,
provider_ref q4rd28b3wm8y, instance id i-0047e4040282e969c:
instance i-0047e4040282e969c (t3.medium, running)Detection and cleanup cover cloud instances and their attached resources, such as IPs and disks. Support for volumes and gateways is on the roadmap.
To delete orphaned resources automatically, set DSTACK_SERVER_ORPHAN_CLEANUP_MODE=delete. Future releases will make delete the default.
UI
Offers
GPU and CPU offers are now grouped by availability, keeping unavailable capacity separate. Per-GPU VRAM reporting has also been corrected.
The Offers page now shows both on-demand and spot offers by default. Displayed prices are rounded to at most two decimal places.
Events
In dstack Factory and Sky, the global Events page now supports relative and absolute date/time filters. Click Recorded At to switch between newest-first and oldest-first order.
Sorting is also available on resource Events tabs in open-source dstack.
Deprecations
-
The
DSTACK_ROUTER_INTERNAL_IPenvironment variable, whichdstacksets for replicas of services that use adynamorouter, is deprecated in favor of${{ groups[i].replicas[j].IP_ADDRESS }}. The new interpolation can reference any replica in the service, including the router. The variable may be removed as early as the next release.# Before - export ETCD_ENDPOINTS=http://$DSTACK_ROUTER_INTERNAL_IP:2379 # After, if the router is the first group - export ETCD_ENDPOINTS=http://${{ groups[0].replicas[0].IP_ADDRESS }}:2379
Documentation
Services
The NVIDIA Dynamo example now runs etcd as a separate replica group, so the router no longer hosts etcd and NATS.
Docker registry
The Private registry section now also explains how to use registry_auth with public registries to reduce rate-limit errors through higher limits for authenticated users.
What's changed
- Add orphan cleanup for cloud resources by @r4victor in #4401
- Support orphaned resources cleanup for RunPod by @r4victor in #4404
- [Docs] Rework Dynamo docs around a dedicated etcd group by @un-def in #4402
- [CLI] Write logs, errors and warnings to stderr by @un-def in #4405
- Support orphaned resources cleanup for GCP by @r4victor in #4408
- Use sys.exit() instead of exit() in CLI by @un-def in #4409
- Support orphaned resources cleanup for Azure by @r4victor in #4410
- Fix Ctrl+C handling in CLI by @un-def in #4411
- Support orphaned resources cleanup for Nebius by @r4victor in #4412
- [Docs]:
registry_authfor higher rate limits by @jvstme in #4414 - Check backends with pyright by @r4victor in #4416
- [runner] Keep sshd alive until the runner stops it by @un-def in #4417
- [UI]: Fix filters changed mid-load by @jvstme in #4421
- Check core tests with pyright by @r4victor in #4418
- Check all tests with pyright by @r4victor in #4424
- Mirror source layout in tests by @r4victor in #4426
- Scope runner pull, metrics and stop to the job submission by @un-def in #4425
- Kubernetes: set job pod's restartPolicy to Never by @un-def in #4428
- [UI]: Add order toggle to events tables by @jvstme in #4431
- [UI]: Add time range filter to the Events page by @jvstme in #4432
- Fix unexpected service scaling upon submission by @jvstme in #4433
- Fix unit tests with older
openaiby @jvstme in #4437 - Fix unit tests with older
azure-mgmt-computeby @jvstme in #4435 - Group offers by availability and improve offer display by @peterschmidt85 in #4429
- Bump python-multipart>=0.0.31 by @peterschmidt85 in #4422
- Update gpuhunt to 0.1.35 by @peterschmidt85 in #4438
- Fix unavailable offers merging into available groups by @peterschmidt85 in #4440
Full changelog: 0.22.5...0.22.6