Server
SSH pool
The server now keeps a pool of reusable SSH connections to instances, enabled by default. Previously, the server opened a fresh SSH connection for every operation against an instance. Reusing pooled connections removes this per-operation overhead and delivers a significant performance boost — runs, dev environments, and services become noticeably more responsive, especially on servers managing many instances.
The SSH pool is on by default and requires no configuration. If needed, you can opt out by setting the DSTACK_SERVER_SSH_POOL_DISABLED environment variable:
DSTACK_SERVER_SSH_POOL_DISABLED=1
Faster run listing
The /api/runs/list endpoint has been optimized to load jobs more efficiently. Listing runs — including in the UI and via dstack ps — is now faster, particularly for projects with a large number of runs.
Backends
AWS
Capacity Reservations
dstack now applies the tenancy of an EC2 On-Demand Capacity Reservation when launching instances into it. Because a Capacity Reservation only accepts instances whose attributes — instance type, platform, Availability Zone, and tenancy — match the reservation, this ensures instances with a dedicated tenancy reservation launch correctly instead of being rejected.
What's changed
- Enable server SSH pool by default by @r4victor in #3981
- Use
uv pip install ipykernelfor dev environments by @r4victor in #3982 - Refactor/shared replica tunnel by @Bihan in #3978
- Document the
instancesrun configuration property by @peterschmidt85 in #3989 - Fix Azure backend with azure-mgmt-resource 26 by @peterschmidt85 in #3988
- Optimize
/api/runs/list jobloading by @peterschmidt85 in #3986 - Apply Capacity Reservation tenancy to AWS instance launch by @james-boydell in #3992
Full changelog: 0.20.25...0.20.26