tag:github.com,2008:https://github.com/dstackai/dstack-enterprise/releases Release notes from dstack-enterprise 2025-07-02T11:12:37Z tag:github.com,2008:Repository/805347278/0.19.25-v1 2025-08-20T16:11:54Z 0.19.25-v1 <h2>Migration guide</h2> <div class="markdown-alert markdown-alert-warning"><p class="markdown-alert-title"><svg class="octicon octicon-alert mr-2" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path></svg>Warning</p><p>This update requires stopping all <code>dstack</code> server replicas before deploying, due to database schema changes.<br> Make sure no replicas from the previous version and the new version run at the same time.</p> </div> <h2>CLI</h2> <h3><code>dstack offer --group-by</code></h3> <p>The <code>dstack offer</code> command can now display aggregated information about available offers. For example, to see what GPUs are available in different clouds, use <code>--group-by gpu</code>.</p> <div class="highlight highlight-source-shell notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="&gt; dstack offer --group-by gpu # GPU SPOT $/GPU BACKENDS 1 T4:16GB:1..8 spot, on-demand 0.1037..1.3797 gcp, aws 2 L4:24GB:1..8 spot, on-demand 0.1829..2.1183 gcp, aws 3 P100:16GB:1..4 spot, on-demand 0.2115..2.4043 gcp, oci 4 V100:16GB:1..8 spot, on-demand 0.3152..4.234 gcp, aws, oci, lambda 5 A10G:22GB:1..8 spot, on-demand 0.3623..2.5845 aws 6 L40S:44GB:1..8 spot, on-demand 0.6392..4.7095 aws 7 A100:40GB:1..16 spot, on-demand 0.6441..4.0496 gcp, aws, oci, lambda 8 A10:24GB:1..4 on-demand 0.75..2 oci, lambda 9 H100:80GB:1..8 spot, on-demand 1.079..15.7236 gcp, aws, lambda 10 A100:80GB:1..8 spot, on-demand 1.2942..5.7077 gcp, aws, lambda"><pre><span class="pl-k">&gt;</span> dstack offer --group-by gpu <span class="pl-c"><span class="pl-c">#</span> GPU SPOT $/GPU BACKENDS </span> 1 T4:16GB:1..8 spot, on-demand 0.1037..1.3797 gcp, aws 2 L4:24GB:1..8 spot, on-demand 0.1829..2.1183 gcp, aws 3 P100:16GB:1..4 spot, on-demand 0.2115..2.4043 gcp, oci 4 V100:16GB:1..8 spot, on-demand 0.3152..4.234 gcp, aws, oci, lambda 5 A10G:22GB:1..8 spot, on-demand 0.3623..2.5845 aws 6 L40S:44GB:1..8 spot, on-demand 0.6392..4.7095 aws 7 A100:40GB:1..16 spot, on-demand 0.6441..4.0496 gcp, aws, oci, lambda 8 A10:24GB:1..4 on-demand 0.75..2 oci, lambda 9 H100:80GB:1..8 spot, on-demand 1.079..15.7236 gcp, aws, lambda 10 A100:80GB:1..8 spot, on-demand 1.2942..5.7077 gcp, aws, lambda</pre></div> <p>Refer to the <a href="https://dstack.ai/docs/reference/cli/dstack/offer/#grouping-offers" rel="nofollow">docs</a> for information about the available aggregations.</p> <h2>Deprecations</h2> <ul> <li>Local repos are now deprecated. If you need to deliver a local directory or file to a run, use <a href="https://dstack.ai/docs/concepts/dev-environments/#files" rel="nofollow"><code>files</code></a> instead. If the run doesn't require a repo, use <code>dstack apply --no-repo</code>. <a href="https://dstack.ai/docs/concepts/repos/" rel="nofollow">Remote repos</a> remain the recommended way to deliver Git repos to runs.</li> </ul> <h2>What's changed</h2> <ul> <li>[Internal] Replace enums with strings in the DB, <code>JobSubmission.termination_reason</code>, and <code>Run.termination_reason</code> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/r4victor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/r4victor">@r4victor</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3296042599" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2949" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2949/hovercard" href="https://github.com/dstackai/dstack/pull/2949">dstackai/dstack#2949</a></li> <li>[Internal] Fix macOS build for shim by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/un-def/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/un-def">@un-def</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3300833143" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2958" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2958/hovercard" href="https://github.com/dstackai/dstack/pull/2958">dstackai/dstack#2958</a></li> <li>[Bug] Increase the secrets max character length by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/james-boydell/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/james-boydell">@james-boydell</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3310287731" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2971" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2971/hovercard" href="https://github.com/dstackai/dstack/pull/2971">dstackai/dstack#2971</a></li> <li>[Internal] Introduce <code>InstanceAvailability.NO_BALANCE</code> (for external integrations) by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/peterschmidt85/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/peterschmidt85">@peterschmidt85</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3313662971" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2975" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2975/hovercard" href="https://github.com/dstackai/dstack/pull/2975">dstackai/dstack#2975</a></li> <li>[Bug]: Cannot manage secrets in UI as project admin by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/olgenn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/olgenn">@olgenn</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3311295720" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2972" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2972/hovercard" href="https://github.com/dstackai/dstack/pull/2972">dstackai/dstack#2972</a></li> <li>[Bug] Fix <code>DCGMWrapperInterface</code> nil check in shim by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/un-def/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/un-def">@un-def</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3317882580" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2980" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2980/hovercard" href="https://github.com/dstackai/dstack/pull/2980">dstackai/dstack#2980</a></li> <li>Document Deployment-compatible migrations by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/r4victor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/r4victor">@r4victor</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3321336625" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2987" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2987/hovercard" href="https://github.com/dstackai/dstack/pull/2987">dstackai/dstack#2987</a></li> <li>[Bug]: Server Docker image fails because of Unable to locate package … by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/peterschmidt85/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/peterschmidt85">@peterschmidt85</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3318315824" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2983" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2983/hovercard" href="https://github.com/dstackai/dstack/pull/2983">dstackai/dstack#2983</a></li> <li>Only register service replicas after probes pass by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jvstme/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jvstme">@jvstme</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3320181256" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2986" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2986/hovercard" href="https://github.com/dstackai/dstack/pull/2986">dstackai/dstack#2986</a></li> <li>[Changelog] Introducing service probes by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/peterschmidt85/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/peterschmidt85">@peterschmidt85</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3322188951" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2988" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2988/hovercard" href="https://github.com/dstackai/dstack/pull/2988">dstackai/dstack#2988</a></li> <li>Deprecate local repos by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/un-def/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/un-def">@un-def</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3318893837" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2984" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2984/hovercard" href="https://github.com/dstackai/dstack/pull/2984">dstackai/dstack#2984</a></li> <li>Support elastic fleets by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/r4victor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/r4victor">@r4victor</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3309170812" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2967" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2967/hovercard" href="https://github.com/dstackai/dstack/pull/2967">dstackai/dstack#2967</a></li> <li>fix typo config.yml.md by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jspablo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jspablo">@jspablo</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3325902268" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2991" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2991/hovercard" href="https://github.com/dstackai/dstack/pull/2991">dstackai/dstack#2991</a></li> <li>Check if kapa.ai can also be integrated into dstack Sky #296 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/olgenn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/olgenn">@olgenn</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3325015122" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2990" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2990/hovercard" href="https://github.com/dstackai/dstack/pull/2990">dstackai/dstack#2990</a></li> <li>Typo in URLs by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mashcroft3/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mashcroft3">@mashcroft3</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3330415130" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2995" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2995/hovercard" href="https://github.com/dstackai/dstack/pull/2995">dstackai/dstack#2995</a></li> <li>[shim] Fix <code>DCGMWrapperInterface</code> nil check (bis) by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/un-def/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/un-def">@un-def</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3333551647" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/3001" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/3001/hovercard" href="https://github.com/dstackai/dstack/pull/3001">dstackai/dstack#3001</a></li> <li>The logs section is too short in the UI by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/olgenn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/olgenn">@olgenn</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3324937807" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2989" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2989/hovercard" href="https://github.com/dstackai/dstack/pull/2989">dstackai/dstack#2989</a></li> <li>[Feature]: Allow <code>dstack offer</code> to aggregate GPU information by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/peterschmidt85/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/peterschmidt85">@peterschmidt85</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3326446231" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2992" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2992/hovercard" href="https://github.com/dstackai/dstack/pull/2992">dstackai/dstack#2992</a></li> <li>[Internal]: CI refactoring by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jvstme/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jvstme">@jvstme</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3337278663" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/3006" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/3006/hovercard" href="https://github.com/dstackai/dstack/pull/3006">dstackai/dstack#3006</a></li> <li>Update examples by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/un-def/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/un-def">@un-def</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3337665436" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/3007" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/3007/hovercard" href="https://github.com/dstackai/dstack/pull/3007">dstackai/dstack#3007</a></li> <li>Minor CLI fixes by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/peterschmidt85/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/peterschmidt85">@peterschmidt85</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3338313106" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/3008" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/3008/hovercard" href="https://github.com/dstackai/dstack/pull/3008">dstackai/dstack#3008</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/mashcroft3/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/mashcroft3">@mashcroft3</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3330415130" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2995" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2995/hovercard" href="https://github.com/dstackai/dstack/pull/2995">dstackai/dstack#2995</a></li> </ul> <p><strong>Full changelog</strong>: <a class="commit-link" href="https://github.com/dstackai/dstack/compare/0.19.23...0.19.25">dstackai/dstack@<tt>0.19.23...0.19.25</tt></a></p> jvstme tag:github.com,2008:Repository/805347278/0.19.23-v1 2025-08-08T15:44:24Z 0.19.23-v1 <h2>Major bug-fixes</h2> <ul> <li>This release resolves an issue introduced in 0.19.22 that caused instance provisioning to fail consistently for certain instance types.</li> </ul> <h2>Backends</h2> <h3>Nebius</h3> <p>The <a href="https://dstack.ai/docs/concepts/backends/#nebius" rel="nofollow"><code>nebius</code></a> backend now supports spot instances and the NVIDIA B200 GPU.</p> <div class="highlight highlight-source-shell notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="&gt; dstack offer -b nebius --spot # BACKEND RESOURCES PRICE 1 nebius (eu-north1) cpu=16 mem=200GB disk=100GB H100:80GB:1 (spot) $1.25 2 nebius (eu-north1) cpu=16 mem=200GB disk=100GB H200:141GB:1 (spot) $1.45 3 nebius (eu-west1) cpu=16 mem=200GB disk=100GB H200:141GB:1 (spot) $1.45 4 nebius (us-central1) cpu=16 mem=200GB disk=100GB H200:141GB:1 (spot) $1.45 5 nebius (eu-north1) cpu=128 mem=1600GB disk=100GB H100:80GB:8 (spot) $10 6 nebius (eu-north1) cpu=128 mem=1600GB disk=100GB H200:141GB:8 (spot) $11.6 7 nebius (eu-west1) cpu=128 mem=1600GB disk=100GB H200:141GB:8 (spot) $11.6 8 nebius (us-central1) cpu=128 mem=1600GB disk=100GB H200:141GB:8 (spot) $11.6 &gt; dstack offer -b nebius --gpu 8:b200 # BACKEND RESOURCES PRICE 1 nebius (us-central1) cpu=160 mem=1792GB disk=100GB B200:180GB:8 $44"><pre><span class="pl-k">&gt;</span> dstack offer -b nebius --spot <span class="pl-c"><span class="pl-c">#</span> BACKEND RESOURCES PRICE </span> 1 nebius (eu-north1) cpu=16 mem=200GB disk=100GB H100:80GB:1 (spot) <span class="pl-smi">$1</span>.25 2 nebius (eu-north1) cpu=16 mem=200GB disk=100GB H200:141GB:1 (spot) <span class="pl-smi">$1</span>.45 3 nebius (eu-west1) cpu=16 mem=200GB disk=100GB H200:141GB:1 (spot) <span class="pl-smi">$1</span>.45 4 nebius (us-central1) cpu=16 mem=200GB disk=100GB H200:141GB:1 (spot) <span class="pl-smi">$1</span>.45 5 nebius (eu-north1) cpu=128 mem=1600GB disk=100GB H100:80GB:8 (spot) <span class="pl-smi">$1</span>0 6 nebius (eu-north1) cpu=128 mem=1600GB disk=100GB H200:141GB:8 (spot) <span class="pl-smi">$1</span>1.6 7 nebius (eu-west1) cpu=128 mem=1600GB disk=100GB H200:141GB:8 (spot) <span class="pl-smi">$1</span>1.6 8 nebius (us-central1) cpu=128 mem=1600GB disk=100GB H200:141GB:8 (spot) <span class="pl-smi">$1</span>1.6 <span class="pl-k">&gt;</span> dstack offer -b nebius --gpu 8:b200 <span class="pl-c"><span class="pl-c">#</span> BACKEND RESOURCES PRICE </span> 1 nebius (us-central1) cpu=160 mem=1792GB disk=100GB B200:180GB:8 <span class="pl-smi">$4</span>4</pre></div> <h2>What's changed</h2> <ul> <li>Fix <code>dstack-shim</code> release build by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jvstme/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jvstme">@jvstme</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3303798473" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2964" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2964/hovercard" href="https://github.com/dstackai/dstack/pull/2964">dstackai/dstack#2964</a></li> <li>[Nebius] Support spot instances and B200 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/peterschmidt85/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/peterschmidt85">@peterschmidt85</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3303885472" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2965" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2965/hovercard" href="https://github.com/dstackai/dstack/pull/2965">dstackai/dstack#2965</a></li> </ul> <p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/dstackai/dstack/compare/0.19.22...0.19.23">dstackai/dstack@<tt>0.19.22...0.19.23</tt></a></p> jvstme tag:github.com,2008:Repository/805347278/0.19.22-v1 2025-08-08T15:54:01Z 0.19.22-v1 <div class="markdown-alert markdown-alert-warning"><p class="markdown-alert-title"><svg class="octicon octicon-alert mr-2" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path></svg>Warning</p><p>When updating, make sure to install <a href="https://github.com/dstackai/dstack-enterprise/releases/tag/0.19.23-v1">0.19.23-v1</a>, the latest bug-fix release.</p> </div> <h2>Services</h2> <h3>Probes</h3> <p>You can now configure HTTP probes to check the health of your service.</p> <div class="highlight highlight-source-yaml notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="type: service name: my-service port: 80 image: my-app:latest probes: - type: http url: /health interval: 15s"><pre><span class="pl-ent">type</span>: <span class="pl-s">service</span> <span class="pl-ent">name</span>: <span class="pl-s">my-service</span> <span class="pl-ent">port</span>: <span class="pl-c1">80</span> <span class="pl-ent">image</span>: <span class="pl-s">my-app:latest</span> <span class="pl-ent">probes</span>: - <span class="pl-ent">type</span>: <span class="pl-s">http</span> <span class="pl-ent">url</span>: <span class="pl-s">/health</span> <span class="pl-ent">interval</span>: <span class="pl-c1">15s</span></pre></div> <p>Probe statuses are displayed in <code>dstack ps --verbose</code> and are considered during <a href="https://dstack.ai/docs/concepts/services/#rolling-deployment" rel="nofollow">rolling deployments</a>. This enables you to deploy new versions of your service with zero downtime.</p> <div class="highlight highlight-source-shell notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="&gt; dstack ps --verbose NAME BACKEND STATUS PROBES SUBMITTED my-service deployment=1 running 11 mins ago replica=0 job=0 deployment=0 aws (us-west-2) running ✓ 11 mins ago replica=1 job=0 deployment=1 aws (us-west-2) running × 1 min ago"><pre><span class="pl-k">&gt;</span> dstack ps --verbose NAME BACKEND STATUS PROBES SUBMITTED my-service deployment=1 running 11 mins ago replica=0 job=0 deployment=0 aws (us-west-2) running ✓ 11 mins ago replica=1 job=0 deployment=1 aws (us-west-2) running × 1 min ago</pre></div> <p>Learn more about probes in the <a href="https://dstack.ai/docs/concepts/services/#probes" rel="nofollow">docs</a>.</p> <h2>Accelerators</h2> <h3>NVIDIA GPU health checks</h3> <p><code>dstack</code> now monitors NVIDIA GPU health using <a href="https://docs.nvidia.com/datacenter/dcgm/latest/user-guide/feature-overview.html#background-health-checks" rel="nofollow">DCGM background health checks</a>:</p> <div class="highlight highlight-source-shell notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="&gt; dstack fleet FLEET INSTANCE BACKEND RESOURCES PRICE STATUS CREATED my-fleet 0 aws (us-east-1) T4:16GB:1 $0.526 idle 11 mins ago 1 aws (us-east-1) T4:16GB:1 $0.526 idle (warning) 11 mins ago 2 aws (us-east-1) T4:16GB:1 $0.526 idle (failure) 11 mins ago"><pre><span class="pl-k">&gt;</span> dstack fleet FLEET INSTANCE BACKEND RESOURCES PRICE STATUS CREATED my-fleet 0 aws (us-east-1) T4:16GB:1 <span class="pl-smi">$0</span>.526 idle 11 mins ago 1 aws (us-east-1) T4:16GB:1 <span class="pl-smi">$0</span>.526 idle (warning) 11 mins ago 2 aws (us-east-1) T4:16GB:1 <span class="pl-smi">$0</span>.526 idle (failure) 11 mins ago</pre></div> <p>In this example, the first instance is healthy, the second has a non-fatal issue and can still be used, and the last has a fatal error that makes it inoperable.</p> <div class="markdown-alert markdown-alert-note"><p class="markdown-alert-title"><svg class="octicon octicon-info mr-2" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z"></path></svg>Note</p><p>GPU health checks are supported on AWS (except with custom <code>os_images</code>), Azure (except for A10 GPUs), GCP, and OCI, as well as SSH fleet instances with DCGM installed and configured for background health checks. To use GPU health checks, re-create the fleets that were created before 0.19.22.</p> </div> <h3>Tenstorrent Galaxy</h3> <p><code>dstack</code> now supports <a href="https://tenstorrent.com/hardware/galaxy" rel="nofollow">Tenstorrent Galaxy</a> cards via SSH fleets.</p> <h2>Backends</h2> <h3>Hot Aisle</h3> <p>This release features an integration with <a href="https://hotaisle.xyz/" rel="nofollow">Hot Aisle</a>, a cloud provider that offers on-demand access to AMD MI300x GPUs at competitive prices.</p> <div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="&gt; dstack offer -b hotaisle # BACKEND RESOURCES INSTANCE TYPE PRICE 1 hotaisle (us-michigan-1) cpu=13 mem=224GB disk=12288GB MI300X:192GB:1 1x MI300X 13x Xeon Platinum 8470 $1.99 2 hotaisle (us-michigan-1) cpu=8 mem=224GB disk=12288GB MI300X:192GB:1 1x MI300X 8x Xeon Platinum 8470 $1.99"><pre class="notranslate"><code>&gt; dstack offer -b hotaisle # BACKEND RESOURCES INSTANCE TYPE PRICE 1 hotaisle (us-michigan-1) cpu=13 mem=224GB disk=12288GB MI300X:192GB:1 1x MI300X 13x Xeon Platinum 8470 $1.99 2 hotaisle (us-michigan-1) cpu=8 mem=224GB disk=12288GB MI300X:192GB:1 1x MI300X 8x Xeon Platinum 8470 $1.99 </code></pre></div> <p>Refer to the <a href="https://dstack.ai/docs/concepts/backends/#hot-aisle" rel="nofollow">docs</a> for instructions on configuring the <code>hotaisle</code> backend in your <code>dstack</code> project.</p> <h2>CLI</h2> <h3>Reading configurations from stdin</h3> <p><code>dstack apply</code> can now read configurations from stdin using the <code>-y -f -</code> flags. This allows configuration files to be parameterized in arbitrary ways:</p> <div class="highlight highlight-source-shell notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="&gt; cat .dstack/volume.dstack.yml type: volume name: my-vol backend: aws region: us-east-1 size: $VOL_SIZE &gt; export VOL_SIZE=50 &gt; envsubst '$VOL_SIZE' &lt; .dstack/volume.dstack.yml | dstack apply -y -f -"><pre><span class="pl-k">&gt;</span> cat .dstack/volume.dstack.yml type: volume name: my-vol backend: aws region: us-east-1 size: <span class="pl-smi">$VOL_SIZE</span> <span class="pl-k">&gt;</span> <span class="pl-k">export</span> VOL_SIZE=50 <span class="pl-k">&gt;</span> envsubst <span class="pl-s"><span class="pl-pds">'</span>$VOL_SIZE<span class="pl-pds">'</span></span> <span class="pl-k">&lt;</span> .dstack/volume.dstack.yml <span class="pl-k">|</span> dstack apply -y -f -</pre></div> <h3>Debug logs</h3> <p>The <code>dstack</code> CLI now saves debug logs to the <code>~/.dstack/logs/cli/</code> directory. These logs can be useful for troubleshooting failed commands or submitting bug reports.</p> <h2>UI</h2> <h3>Secrets</h3> <p>The project settings page now has a section to manage <a href="https://dstack.ai/docs/concepts/secrets/" rel="nofollow">secrets</a>.</p> <a target="_blank" rel="noopener noreferrer" href="https://private-user-images.githubusercontent.com/36324149/475718658-48d42027-56f5-4b7e-a750-caab5fab176a.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NTU3MzQ0MzgsIm5iZiI6MTc1NTczNDEzOCwicGF0aCI6Ii8zNjMyNDE0OS80NzU3MTg2NTgtNDhkNDIwMjctNTZmNS00YjdlLWE3NTAtY2FhYjVmYWIxNzZhLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTA4MjAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwODIwVDIzNTUzOFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWU2MmY3NWE1NGYyMGE3ZTgwZDkwMzQ2ZWQ0YTBjZTM0NGQzY2QxZTc1ZTg4NWRhODU5OWVmNTNjYmRjMzdjZGUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.Tg60m8mR1eOgeWnLV0LUwDmUng85ZFzZDyarG0-CdO0"><img width="500" alt="ui-secrets" src="https://private-user-images.githubusercontent.com/36324149/475718658-48d42027-56f5-4b7e-a750-caab5fab176a.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NTU3MzQ0MzgsIm5iZiI6MTc1NTczNDEzOCwicGF0aCI6Ii8zNjMyNDE0OS80NzU3MTg2NTgtNDhkNDIwMjctNTZmNS00YjdlLWE3NTAtY2FhYjVmYWIxNzZhLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTA4MjAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwODIwVDIzNTUzOFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWU2MmY3NWE1NGYyMGE3ZTgwZDkwMzQ2ZWQ0YTBjZTM0NGQzY2QxZTc1ZTg4NWRhODU5OWVmNTNjYmRjMzdjZGUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.Tg60m8mR1eOgeWnLV0LUwDmUng85ZFzZDyarG0-CdO0" content-type-secured-asset="image/png" style="max-width: 100%;"></a> <h3>Logs improvements</h3> <p>The UI can now optionally display timestamps in front of each message in run logs. This can be a lifesaver when debugging runs that write log messages without built-in timestamps.</p> <a target="_blank" rel="noopener noreferrer" href="https://private-user-images.githubusercontent.com/36324149/475718754-8b8998df-a80c-4a72-afea-bb27bff80a1c.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NTU3MzQ0MzgsIm5iZiI6MTc1NTczNDEzOCwicGF0aCI6Ii8zNjMyNDE0OS80NzU3MTg3NTQtOGI4OTk4ZGYtYTgwYy00YTcyLWFmZWEtYmIyN2JmZjgwYTFjLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTA4MjAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwODIwVDIzNTUzOFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTEwNzdhNzM3ZDg5MjY0NDUwYzZmNzcxYjY2MjI4ZGNiMDJlNTM0MTUyYzk5NDEyYjMyNzY2YWE1YzQxOWJiMTYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.KiAEMXvmBDnSsuXSw3sWkc9lvrZHuwPPoMkebn18y9s"><img width="500" alt="ui-logs-maybe" src="https://private-user-images.githubusercontent.com/36324149/475718754-8b8998df-a80c-4a72-afea-bb27bff80a1c.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NTU3MzQ0MzgsIm5iZiI6MTc1NTczNDEzOCwicGF0aCI6Ii8zNjMyNDE0OS80NzU3MTg3NTQtOGI4OTk4ZGYtYTgwYy00YTcyLWFmZWEtYmIyN2JmZjgwYTFjLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTA4MjAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwODIwVDIzNTUzOFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTEwNzdhNzM3ZDg5MjY0NDUwYzZmNzcxYjY2MjI4ZGNiMDJlNTM0MTUyYzk5NDEyYjMyNzY2YWE1YzQxOWJiMTYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.KiAEMXvmBDnSsuXSw3sWkc9lvrZHuwPPoMkebn18y9s" content-type-secured-asset="image/png" style="max-width: 100%;"></a> <p>Additionally, if the <code>dstack</code> server is configured to use <a href="https://dstack.ai/docs/guides/server-deployment/#logs-storage" rel="nofollow">external log storage</a>, such as AWS CloudWatch or GCP Logging, a button will appear in the UI to view the logs in that storage system.</p> <h2>What's changed</h2> <ul> <li>[Feature]: Add UI for managing Secrets #2882 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/olgenn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/olgenn">@olgenn</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3237023884" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2911" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2911/hovercard" href="https://github.com/dstackai/dstack/pull/2911">dstackai/dstack#2911</a></li> <li>[Blog]: Benchmarking AMD GPUs: bare-metal, VMs by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/peterschmidt85/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/peterschmidt85">@peterschmidt85</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3252658041" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2924" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2924/hovercard" href="https://github.com/dstackai/dstack/pull/2924">dstackai/dstack#2924</a></li> <li>[Feature]: Implement reading apply configuration from stdin by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/r4victor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/r4victor">@r4victor</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3282744937" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2938" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2938/hovercard" href="https://github.com/dstackai/dstack/pull/2938">dstackai/dstack#2938</a></li> <li>Fix precommit by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/olgenn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/olgenn">@olgenn</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3281821656" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2936" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2936/hovercard" href="https://github.com/dstackai/dstack/pull/2936">dstackai/dstack#2936</a></li> <li>Fix gateway docs URL by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jspablo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jspablo">@jspablo</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3287542607" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2941" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2941/hovercard" href="https://github.com/dstackai/dstack/pull/2941">dstackai/dstack#2941</a></li> <li>[Feature]: Service probes by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jvstme/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jvstme">@jvstme</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3258104620" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2927" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2927/hovercard" href="https://github.com/dstackai/dstack/pull/2927">dstackai/dstack#2927</a></li> <li>Return logs <code>external_url</code> for AWS and GCP by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/r4victor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/r4victor">@r4victor</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3291783559" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2944" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2944/hovercard" href="https://github.com/dstackai/dstack/pull/2944">dstackai/dstack#2944</a></li> <li>[Feature]: Default CLI log level is DEBUG; WARNING and above go to STDOUT, DEBUG logs to a file by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/peterschmidt85/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/peterschmidt85">@peterschmidt85</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3283799710" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2940" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2940/hovercard" href="https://github.com/dstackai/dstack/pull/2940">dstackai/dstack#2940</a></li> <li>[Feature]: Support for Tenstorrent Galaxy by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/peterschmidt85/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/peterschmidt85">@peterschmidt85</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3288744125" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2943" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2943/hovercard" href="https://github.com/dstackai/dstack/pull/2943">dstackai/dstack#2943</a></li> <li>Disallow duplicate project members by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/r4victor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/r4victor">@r4victor</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3292739226" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2945" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2945/hovercard" href="https://github.com/dstackai/dstack/pull/2945">dstackai/dstack#2945</a></li> <li>[Feature]: If GCP logging or AWS Cloudwatch logging is configured, show link in the UI to the log stream by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/olgenn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/olgenn">@olgenn</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3293922448" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2948" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2948/hovercard" href="https://github.com/dstackai/dstack/pull/2948">dstackai/dstack#2948</a></li> <li>Specify <code>sentry-sdk[fastapi]&gt;=2.27.0</code> to fix missing <code>SamplingContext</code> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/r4victor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/r4victor">@r4victor</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3296058587" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2950" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2950/hovercard" href="https://github.com/dstackai/dstack/pull/2950">dstackai/dstack#2950</a></li> <li>[Feature]: Showing timestamp for logs by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/olgenn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/olgenn">@olgenn</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3281869474" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2937" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2937/hovercard" href="https://github.com/dstackai/dstack/pull/2937">dstackai/dstack#2937</a></li> <li>[Landing]: Highlight dstack Sky + CTA improvements by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/peterschmidt85/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/peterschmidt85">@peterschmidt85</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3293491139" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2947" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2947/hovercard" href="https://github.com/dstackai/dstack/pull/2947">dstackai/dstack#2947</a></li> <li>Fix Lambda backend instance unreachable after dstack server restart by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Bihan/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Bihan">@Bihan</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3292881893" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2946" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2946/hovercard" href="https://github.com/dstackai/dstack/pull/2946">dstackai/dstack#2946</a></li> <li>Fix configuring CLI logging on Python 3.9/3.10 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jvstme/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jvstme">@jvstme</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3297482238" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2953" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2953/hovercard" href="https://github.com/dstackai/dstack/pull/2953">dstackai/dstack#2953</a></li> <li>[Feature]: Add NVIDIA GPU passive health checks by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/un-def/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/un-def">@un-def</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3297409451" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2952" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2952/hovercard" href="https://github.com/dstackai/dstack/pull/2952">dstackai/dstack#2952</a></li> <li>Fix <code>_check_instance</code> log spam by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/un-def/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/un-def">@un-def</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3299653511" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2956" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2956/hovercard" href="https://github.com/dstackai/dstack/pull/2956">dstackai/dstack#2956</a></li> <li>Add more probe request configuration options by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jvstme/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jvstme">@jvstme</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3299556339" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2955" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2955/hovercard" href="https://github.com/dstackai/dstack/pull/2955">dstackai/dstack#2955</a></li> <li>[Feature]: Add Hot Aisle backend by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Bihan/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Bihan">@Bihan</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3276118147" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2935" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2935/hovercard" href="https://github.com/dstackai/dstack/pull/2935">dstackai/dstack#2935</a></li> <li>[Internal]: Fix release workflow by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jvstme/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jvstme">@jvstme</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3301104998" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2959" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2959/hovercard" href="https://github.com/dstackai/dstack/pull/2959">dstackai/dstack#2959</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jspablo/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jspablo">@jspablo</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3287542607" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2941" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2941/hovercard" href="https://github.com/dstackai/dstack/pull/2941">dstackai/dstack#2941</a></li> </ul> <p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/dstackai/dstack/compare/0.19.21...0.19.22">dstackai/dstack@<tt>0.19.21...0.19.22</tt></a></p> jvstme tag:github.com,2008:Repository/805347278/0.19.17-v1 2025-07-02T12:21:35Z 0.19.17-v1 <h2>Single Sign-On via Google</h2> <p><code>dstack</code> Enterprise now supports Single Sign-On via <a href="https://developers.google.com/identity/gsi/web/guides/overview" rel="nofollow">Google</a>. When Google integration is configured, the <code>dstack</code> login page will display the <strong>Sign in with Google</strong> button. See the <a href="https://github.com/dstackai/dstack-enterprise/blob/main/docs/google.md">Google integration guide</a> for more information.</p> <p><a target="_blank" rel="noopener noreferrer" href="https://private-user-images.githubusercontent.com/2131407/461517647-044c0ae1-0f6c-45a7-a5f6-a43691cd75da.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NTU3MzQ0MzgsIm5iZiI6MTc1NTczNDEzOCwicGF0aCI6Ii8yMTMxNDA3LzQ2MTUxNzY0Ny0wNDRjMGFlMS0wZjZjLTQ1YTctYTVmNi1hNDM2OTFjZDc1ZGEucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI1MDgyMCUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNTA4MjBUMjM1NTM4WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9MmUwOGMxNjNhYWQxMzQxYWQxMGZmNjI5NDEyNDRhMjZmZjc5ZThjOTlmYzJmZGY2NWFmNjlmM2E2NjAzNDNkOSZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QifQ.RT69_TsL_w-WsN-UlKXGzVj6HooIekarjX4PgRz9v8A"><img src="https://private-user-images.githubusercontent.com/2131407/461517647-044c0ae1-0f6c-45a7-a5f6-a43691cd75da.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NTU3MzQ0MzgsIm5iZiI6MTc1NTczNDEzOCwicGF0aCI6Ii8yMTMxNDA3LzQ2MTUxNzY0Ny0wNDRjMGFlMS0wZjZjLTQ1YTctYTVmNi1hNDM2OTFjZDc1ZGEucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI1MDgyMCUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNTA4MjBUMjM1NTM4WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9MmUwOGMxNjNhYWQxMzQxYWQxMGZmNjI5NDEyNDRhMjZmZjc5ZThjOTlmYzJmZGY2NWFmNjlmM2E2NjAzNDNkOSZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QifQ.RT69_TsL_w-WsN-UlKXGzVj6HooIekarjX4PgRz9v8A" alt="image" content-type-secured-asset="image/png" style="max-width: 100%;"></a></p> <h2>Secrets</h2> <p><code>dstack</code> gets support for <strong>secrets</strong> that allow centralized management of sensitive values such as API keys and credentials. They are project-scoped, managed by project admins, and can be referenced in run configurations to pass sensitive values to runs in a secure manner. Example:</p> <div class="highlight highlight-source-shell notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="$ dstack secret set my_secret some_secret_value OK"><pre>$ dstack secret <span class="pl-c1">set</span> my_secret some_secret_value OK</pre></div> <div class="highlight highlight-source-yaml notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="type: task nodes: 1 name: test-secrets env: - MY_SECRET=${{ secrets.my_secret }} commands: - echo $MY_SECRET"><pre><span class="pl-ent">type</span>: <span class="pl-s">task</span> <span class="pl-ent">nodes</span>: <span class="pl-c1">1</span> <span class="pl-ent">name</span>: <span class="pl-s">test-secrets</span> <span class="pl-ent">env</span>: - <span class="pl-s">MY_SECRET=${{ secrets.my_secret }}</span> <span class="pl-ent">commands</span>: - <span class="pl-s">echo $MY_SECRET</span></pre></div> <div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="$ dstack apply -f .dstack/confs/task.dstack.yaml Submit the run test-task? [y/n]: y NAME BACKEND RESOURCES PRICE STATUS SUBMITTED test-task aws cpu=2 mem=8GB $0.107 running 10:48 (eu-west-1) disk=100GB test-secrets provisioning completed (running) some_secret_value Exited (0)"><pre class="notranslate"><code>$ dstack apply -f .dstack/confs/task.dstack.yaml Submit the run test-task? [y/n]: y NAME BACKEND RESOURCES PRICE STATUS SUBMITTED test-task aws cpu=2 mem=8GB $0.107 running 10:48 (eu-west-1) disk=100GB test-secrets provisioning completed (running) some_secret_value Exited (0) </code></pre></div> <p>For more details on secrets, check out the <a href="https://dstack.ai/docs/concepts/secrets/" rel="nofollow">docs</a>.</p> <h2>Files</h2> <p>By default, <code>dstack</code> automatically mounts the <a href="https://dstack.ai/docs/concepts/repos/" rel="nofollow">repo</a> directory where you ran <code>dstack init</code> to any run configuration.</p> <p>However, in some cases, you may not want to mount the entire directory (e.g., if it’s too large), or you might want to mount files outside of it. In such cases, you can use the <a href="https://dstack.ai/docs/reference/dstack.yml/dev-environment/#files" rel="nofollow"><code>files</code></a> property.</p> <div class="highlight highlight-source-yaml notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="type: task name: trl-sft files: - .:examples # Maps the directory where `.dstack.yml` to `/workflow/examples` - ~/.ssh/id_rsa # Maps `~/.ssh/id_rsa` to `/root/.ssh/id_rsa` python: 3.12 env: - HF_TOKEN - HF_HUB_ENABLE_HF_TRANSFER=1 - MODEL=Qwen/Qwen2.5-0.5B - DATASET=stanfordnlp/imdb commands: - uv pip install trl - | trl sft \ --model_name_or_path $MODEL --dataset_name $DATASET --num_processes $DSTACK_GPUS_PER_NODE resources: gpu: H100:1"><pre><span class="pl-ent">type</span>: <span class="pl-s">task</span> <span class="pl-ent">name</span>: <span class="pl-s">trl-sft</span> <span class="pl-ent">files</span>: - <span class="pl-s">.:examples </span><span class="pl-c"><span class="pl-c">#</span> Maps the directory where `.dstack.yml` to `/workflow/examples`</span> - <span class="pl-s">~/.ssh/id_rsa </span><span class="pl-c"><span class="pl-c">#</span> Maps `~/.ssh/id_rsa` to `/root/.ssh/id_rsa`</span> <span class="pl-ent">python</span>: <span class="pl-c1">3.12</span> <span class="pl-ent">env</span>: - <span class="pl-s">HF_TOKEN</span> - <span class="pl-s">HF_HUB_ENABLE_HF_TRANSFER=1</span> - <span class="pl-s">MODEL=Qwen/Qwen2.5-0.5B</span> - <span class="pl-s">DATASET=stanfordnlp/imdb</span> <span class="pl-ent">commands</span>: - <span class="pl-s">uv pip install trl</span> - <span class="pl-s">| </span> <span class="pl-s"> trl sft \</span> <span class="pl-s"> --model_name_or_path $MODEL --dataset_name $DATASET</span> <span class="pl-s"> --num_processes $DSTACK_GPUS_PER_NODE</span> <span class="pl-s"></span> <span class="pl-s"></span><span class="pl-ent">resources</span>: <span class="pl-ent">gpu</span>: <span class="pl-s">H100:1</span></pre></div> <div class="markdown-alert markdown-alert-warning"><p class="markdown-alert-title"><svg class="octicon octicon-alert mr-2" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path></svg>Warning</p><p>If you have existing fleets, it's recommended to re-create them after upgrading to version 0.19.17. Otherwise, there is a risk that these instances won't be able to execute jobs if if a run uses <code>files</code>.</p> </div> <h2>Services</h2> <h3>Rolling deployment</h3> <p>Rolling deployments introduced in <a href="https://github.com/dstackai/dstack/releases/tag/0.19.15">0.19.15</a> are now supported when deploying new commits or branches from a Git repo, or when changes are made to the repo contents or files listed in the <code>files</code> section.</p> <p>Additionally, <code>dstack apply</code> now displays a full list of detected changes:</p> <div class="highlight highlight-source-shell notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="$ dstack apply -f my-service.dstack.yml Active run my-service already exists. Detected changes that can be updated in-place: - Repo state (branch, commit, or other) - File archives - Configuration properties: - env - files Update the run? [y/n]:"><pre>$ dstack apply -f my-service.dstack.yml Active run my-service already exists. Detected changes that can be updated in-place: - Repo state (branch, commit, or other) - File archives - Configuration properties: - env - files Update the run<span class="pl-k">?</span> [y/n]:</pre></div> <p>Even when a rolling deployment isn't possible, the list of changes is still shown — making it easier to identify which changes are preventing the deployment from proceeding in-place.</p> <h2>What's changed</h2> <ul> <li>[Bug]: Docker In Docker does not work with AMD by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/peterschmidt85/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/peterschmidt85">@peterschmidt85</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3180088065" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2849" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2849/hovercard" href="https://github.com/dstackai/dstack/pull/2849">dstackai/dstack#2849</a></li> <li>[Feature] Add <code>files</code> property to run configurations by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/un-def/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/un-def">@un-def</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3179772030" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2848" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2848/hovercard" href="https://github.com/dstackai/dstack/pull/2848">dstackai/dstack#2848</a></li> <li>[Feature] Implement project secrets by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/r4victor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/r4victor">@r4victor</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3187774133" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2854" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2854/hovercard" href="https://github.com/dstackai/dstack/pull/2854">dstackai/dstack#2854</a></li> <li>[Internal] Support fleet configurations for the local backend by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jvstme/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jvstme">@jvstme</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3188044494" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2856" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2856/hovercard" href="https://github.com/dstackai/dstack/pull/2856">dstackai/dstack#2856</a></li> <li>[Services] Rolling deployments for repo updates by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jvstme/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jvstme">@jvstme</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3187441603" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2853" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2853/hovercard" href="https://github.com/dstackai/dstack/pull/2853">dstackai/dstack#2853</a></li> <li>[Internal] Fix package dependency direction by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jvstme/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jvstme">@jvstme</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3188261725" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2859" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2859/hovercard" href="https://github.com/dstackai/dstack/pull/2859">dstackai/dstack#2859</a></li> <li>[Internal] Rolling deployments for <code>files</code> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jvstme/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jvstme">@jvstme</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3189935745" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2862" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2862/hovercard" href="https://github.com/dstackai/dstack/pull/2862">dstackai/dstack#2862</a></li> <li>[Internal] Support the local backend with the in-server proxy by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jvstme/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jvstme">@jvstme</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3188117111" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2858" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2858/hovercard" href="https://github.com/dstackai/dstack/pull/2858">dstackai/dstack#2858</a></li> <li>[Docs] Added <code>Files</code> documentation by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/peterschmidt85/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/peterschmidt85">@peterschmidt85</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3193021564" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2866" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2866/hovercard" href="https://github.com/dstackai/dstack/pull/2866">dstackai/dstack#2866</a></li> <li>[Bug] Fix <code>~</code> expansion in <code>files</code> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/un-def/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/un-def">@un-def</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3192963866" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2865" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2865/hovercard" href="https://github.com/dstackai/dstack/pull/2865">dstackai/dstack#2865</a></li> <li>[Feature] Allow in-place update for more run properties by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jvstme/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jvstme">@jvstme</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3194862265" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2867" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2867/hovercard" href="https://github.com/dstackai/dstack/pull/2867">dstackai/dstack#2867</a></li> </ul> <p><strong>Full changelog</strong>: <a class="commit-link" href="https://github.com/dstackai/dstack/compare/0.19.16...0.19.17">dstackai/dstack@<tt>0.19.16...0.19.17</tt></a></p> un-def tag:github.com,2008:Repository/805347278/0.19.21-v1 2025-07-29T08:31:11Z 0.19.21-v1 <h2>Runs</h2> <h3>Scheduled runs</h3> <p>Runs get a new <code>schedule</code> property that allows starting runs periodically by specifying a cron expression:</p> <div class="highlight highlight-source-yaml notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="type: task nodes: 1 schedule: cron: &quot;*/15 * * * *&quot; commands: - ..."><pre><span class="pl-ent">type</span>: <span class="pl-s">task</span> <span class="pl-ent">nodes</span>: <span class="pl-c1">1</span> <span class="pl-ent">schedule</span>: <span class="pl-ent">cron</span>: <span class="pl-s"><span class="pl-pds">"</span>*/15 * * * *<span class="pl-pds">"</span></span> <span class="pl-ent">commands</span>: - <span class="pl-s">...</span></pre></div> <p><code>dstack</code> will start a scheduled run at <code>cron</code> times unless the run is already running. It can then be stopped manually to prevent it from starting again. Learn more about scheduled runs in the <a href="https://dstack.ai/docs/concepts/tasks/#schedule" rel="nofollow">docs</a>.</p> <h2>CLI</h2> <h3>Startup time</h3> <p>The CLI startup time was significantly improved up to 4 times by optimizing Python imports.</p> <h2>Server</h2> <h3>Optimized DB queries</h3> <p>We optimized DB queries issues by the <code>dstack</code> server. This improves API response times and decreases the load on the DB, which was previously noticeable on small Postgres instances.</p> <h2>What's Changed</h2> <ul> <li>Support scheduled runs by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/r4victor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/r4victor">@r4victor</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3242711442" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2914" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2914/hovercard" href="https://github.com/dstackai/dstack/pull/2914">dstackai/dstack#2914</a></li> <li>Autoset UTC timezone for datetimes loaded from the db by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/r4victor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/r4victor">@r4victor</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3251254359" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2922" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2922/hovercard" href="https://github.com/dstackai/dstack/pull/2922">dstackai/dstack#2922</a></li> <li>Refactor backends module to avoid importing deps on models import by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/r4victor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/r4victor">@r4victor</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3251898372" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2923" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2923/hovercard" href="https://github.com/dstackai/dstack/pull/2923">dstackai/dstack#2923</a></li> <li>Optimize db queries by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/r4victor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/r4victor">@r4victor</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3259600796" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2928" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2928/hovercard" href="https://github.com/dstackai/dstack/pull/2928">dstackai/dstack#2928</a></li> <li>Optimize db queries (part 2) by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/r4victor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/r4victor">@r4victor</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3262675340" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2929" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2929/hovercard" href="https://github.com/dstackai/dstack/pull/2929">dstackai/dstack#2929</a></li> <li>[UI] Add justfile to build frontend by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/peterschmidt85/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/peterschmidt85">@peterschmidt85</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3221906000" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2897" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2897/hovercard" href="https://github.com/dstackai/dstack/pull/2897">dstackai/dstack#2897</a></li> <li>Fix project loading in _check_instance() by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/r4victor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/r4victor">@r4victor</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3269139038" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2931" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2931/hovercard" href="https://github.com/dstackai/dstack/pull/2931">dstackai/dstack#2931</a></li> <li>Set up background tasks Sentry tracing by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/r4victor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/r4victor">@r4victor</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3272284614" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2932" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2932/hovercard" href="https://github.com/dstackai/dstack/pull/2932">dstackai/dstack#2932</a></li> </ul> <p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/dstackai/dstack/compare/0.19.20...0.19.21">dstackai/dstack@<tt>0.19.20...0.19.21</tt></a></p> r4victor tag:github.com,2008:Repository/805347278/0.19.20-v1 2025-07-21T12:36:10Z 0.19.20-v1 <h2>User interface</h2> <h3>Logs</h3> <p>This is a hotfix release addressing three major issues related to the UI:</p> <ul> <li>The UI didn’t display newer AWS CloudWatch logs if there was a long gap between old and new logs.</li> <li>Logs received before the 19th appeared as base64-encoded in the UI. The UI now includes a button to decode them automatically.</li> <li>Logs were loaded from start to end, which made viewing very slow for long runs.</li> </ul> <div class="markdown-alert markdown-alert-note"><p class="markdown-alert-title"><svg class="octicon octicon-info mr-2" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z"></path></svg>Note</p><p>The dstack logs CLI command may still be affected by the issues above. However, it’s less critical and will be addressed separately.</p> </div> <h2>What's changed</h2> <ul> <li>[chore]: Drop duplicate utility <code>split_chunks</code> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jvstme/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jvstme">@jvstme</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3239494911" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2912" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2912/hovercard" href="https://github.com/dstackai/dstack/pull/2912">dstackai/dstack#2912</a></li> <li>[backends/CloudRift] Fixed issue with terminating inactive instance by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/6erun/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/6erun">@6erun</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3246748618" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2918" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2918/hovercard" href="https://github.com/dstackai/dstack/pull/2918">dstackai/dstack#2918</a></li> <li>Expose GPU metrics collected by runner as Prometheus metrics by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/un-def/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/un-def">@un-def</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3243635589" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2916" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2916/hovercard" href="https://github.com/dstackai/dstack/pull/2916">dstackai/dstack#2916</a></li> <li>[UI] Query logs using descending by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/peterschmidt85/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/peterschmidt85">@peterschmidt85</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3243496669" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2915" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2915/hovercard" href="https://github.com/dstackai/dstack/pull/2915">dstackai/dstack#2915</a></li> <li>[UI] Fix logs loading #2892 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/olgenn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/olgenn">@olgenn</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3248321049" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2920" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2920/hovercard" href="https://github.com/dstackai/dstack/pull/2920">dstackai/dstack#2920</a></li> </ul> <p><strong>Full changelog</strong>: <a class="commit-link" href="https://github.com/dstackai/dstack/compare/0.19.19...0.19.20">dstackai/dstack@<tt>0.19.19...0.19.20</tt></a></p> r4victor tag:github.com,2008:Repository/805347278/0.19.19-v1 2025-07-17T05:59:26Z 0.19.19-v1 <h2>Fleets</h2> <h3>SSH fleets in-place updates</h3> <p>You can now add and remove instances in SSH fleets without recreating the entire fleet.</p> <div class="highlight highlight-source-yaml notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="type: fleet name: ssh-fleet ssh_config: user: dstack identity_file: ~/.ssh/dstack hosts: - 10.0.0.1 - 10.0.0.2"><pre><span class="pl-ent">type</span>: <span class="pl-s">fleet</span> <span class="pl-ent">name</span>: <span class="pl-s">ssh-fleet</span> <span class="pl-ent">ssh_config</span>: <span class="pl-ent">user</span>: <span class="pl-s">dstack</span> <span class="pl-ent">identity_file</span>: <span class="pl-s">~/.ssh/dstack</span> <span class="pl-ent">hosts</span>: - <span class="pl-s">10.0.0.1</span> - <span class="pl-s">10.0.0.2</span></pre></div> <div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="$ dstack apply -f fleet.dstack.yml ... Fleet ssh-fleet does not exist yet. Create the fleet? [y/n]: y ... FLEET INSTANCE BACKEND RESOURCES PRICE STATUS CREATED ssh-fleet 0 ssh (remote) cpu=4 mem=4GB disk=30GB $0 idle 09:08 1 ssh (remote) cpu=2 mem=4GB disk=30GB $0 idle 09:08"><pre class="notranslate"><code>$ dstack apply -f fleet.dstack.yml ... Fleet ssh-fleet does not exist yet. Create the fleet? [y/n]: y ... FLEET INSTANCE BACKEND RESOURCES PRICE STATUS CREATED ssh-fleet 0 ssh (remote) cpu=4 mem=4GB disk=30GB $0 idle 09:08 1 ssh (remote) cpu=2 mem=4GB disk=30GB $0 idle 09:08 </code></pre></div> <p>Then, if you update the <code>hosts</code> configuration property to</p> <div class="highlight highlight-source-yaml notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content=" hosts: #- 10.0.0.1 # removed - 10.0.0.2 - 10.0.0.3 # added"><pre> <span class="pl-ent">hosts</span>: <span class="pl-c"><span class="pl-c">#</span>- 10.0.0.1 # removed</span> - <span class="pl-s">10.0.0.2</span> - <span class="pl-s">10.0.0.3 </span><span class="pl-c"><span class="pl-c">#</span> added</span></pre></div> <p>and apply the same configuration again, the fleet will be updated in-place, meaning that you don't need to stop runs on the fleet instances if they are not affected by the changes (in this example, it's okay if the instance <code>1</code> is currenty busy, you can still apply the configuration).</p> <div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="$ dstack apply -f fleet.dstack.yml ... Found fleet ssh-fleet. Configuration changes detected. Update the fleet in-place? [y/n]: y ... FLEET INSTANCE BACKEND RESOURCES PRICE STATUS CREATED ssh-fleet 1 ssh (remote) cpu=2 mem=4GB disk=30GB $0 idle 09:08 2 ssh (remote) cpu=8 mem=4GB disk=30GB $0 idle 09:12"><pre class="notranslate"><code>$ dstack apply -f fleet.dstack.yml ... Found fleet ssh-fleet. Configuration changes detected. Update the fleet in-place? [y/n]: y ... FLEET INSTANCE BACKEND RESOURCES PRICE STATUS CREATED ssh-fleet 1 ssh (remote) cpu=2 mem=4GB disk=30GB $0 idle 09:08 2 ssh (remote) cpu=8 mem=4GB disk=30GB $0 idle 09:12 </code></pre></div> <div class="markdown-alert markdown-alert-note"><p class="markdown-alert-title"><svg class="octicon octicon-info mr-2" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z"></path></svg>Note</p><p>For in-place updates it's only allowed to add and/or remove instances, the root configuration and configurations of hosts that are not changed must not be changed, otherwise the full fleet recreation is triggered, as before. This restriction may be lifted in the future.</p> </div> <h2>Volumes</h2> <h3>Automatic cleanup of unused volumes</h3> <p>The volume configuration gets a new <code>auto_cleanup_duration</code> property:</p> <div class="highlight highlight-source-yaml notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="type: volume name: my-volume backend: aws region: eu-west-1 availability_zone: eu-west-1a auto_cleanup_duration: 1h"><pre><span class="pl-ent">type</span>: <span class="pl-s">volume</span> <span class="pl-ent">name</span>: <span class="pl-s">my-volume</span> <span class="pl-ent">backend</span>: <span class="pl-s">aws</span> <span class="pl-ent">region</span>: <span class="pl-s">eu-west-1</span> <span class="pl-ent">availability_zone</span>: <span class="pl-s">eu-west-1a</span> <span class="pl-ent">auto_cleanup_duration</span>: <span class="pl-c1">1h</span></pre></div> <p>The volume will be automatically deleted after it's not being used for the specified duration.</p> <h2>Logs</h2> <h3>Browsable, queryable, and searchable logs</h3> <p><code>dstack</code> now stores run logs in plaintext, which were previously base64-encoded. This allows you to use the configured log storage, be it AWS CloudWatch or GCP Logging, to browse and query <code>dstack</code> run logs.</p> <div class="markdown-alert markdown-alert-note"><p class="markdown-alert-title"><svg class="octicon octicon-info mr-2" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z"></path></svg>Note</p><p>Logs generated before this release will be shown as base64-encoded in the UI and CLI after the update.</p> </div> <h2>Server</h2> <h3>Faster API response times</h3> <p>The <code>dstack</code> server API has been optimized to serialize json responses faster. The API endpoints are up to 2x faster than before.</p> <h2>Benchmarks</h2> <h3>Benchmarking AMD GPUs: bare-metal, containers, partitions</h3> <p><a href="https://dstack.ai/blog/benchmark-amd-containers-and-partitions/" rel="nofollow">Our new benchmark</a> explores two important areas for optimizing AI workloads on AMD GPUs: First, do containers introduce a performance penalty for network-intensive tasks compared to a bare-metal setup? Second, how does partitioning a powerful GPU like the MI300X affect its real-world performance for different types of AI workloads?</p> <h2>What's Changed</h2> <ul> <li>[Internal] Some runner tests fail on macOS by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/peterschmidt85/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/peterschmidt85">@peterschmidt85</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3208886156" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2879" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2879/hovercard" href="https://github.com/dstackai/dstack/pull/2879">dstackai/dstack#2879</a></li> <li>Introduce job_submissions_limit for /api/runs/list by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/r4victor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/r4victor">@r4victor</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3212093916" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2883" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2883/hovercard" href="https://github.com/dstackai/dstack/pull/2883">dstackai/dstack#2883</a></li> <li>Speed up json serialization with orjson and custom FastAPI responses by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/r4victor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/r4victor">@r4victor</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3209131710" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2880" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2880/hovercard" href="https://github.com/dstackai/dstack/pull/2880">dstackai/dstack#2880</a></li> <li>[Docs]: Service rolling deployments by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jvstme/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jvstme">@jvstme</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3198379037" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2870" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2870/hovercard" href="https://github.com/dstackai/dstack/pull/2870">dstackai/dstack#2870</a></li> <li>Do not lose <code>provisioning</code> gateways on restart by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jvstme/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jvstme">@jvstme</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3217134846" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2887" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2887/hovercard" href="https://github.com/dstackai/dstack/pull/2887">dstackai/dstack#2887</a></li> <li>Add/remove SSH instances via in-place update by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/un-def/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/un-def">@un-def</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3212257021" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2884" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2884/hovercard" href="https://github.com/dstackai/dstack/pull/2884">dstackai/dstack#2884</a></li> <li>[Docs]: Add example of setting a PostgreSQL URL by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jvstme/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jvstme">@jvstme</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3218756142" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2888" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2888/hovercard" href="https://github.com/dstackai/dstack/pull/2888">dstackai/dstack#2888</a></li> <li>[Blog] Added new changelog by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/peterschmidt85/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/peterschmidt85">@peterschmidt85</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3219873491" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2891" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2891/hovercard" href="https://github.com/dstackai/dstack/pull/2891">dstackai/dstack#2891</a></li> <li>Fix job_submissions_limit backward compatibility by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/r4victor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/r4victor">@r4victor</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3221652457" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2894" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2894/hovercard" href="https://github.com/dstackai/dstack/pull/2894">dstackai/dstack#2894</a></li> <li>Fix run and job status_message calculation by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/r4victor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/r4victor">@r4victor</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3218857541" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2889" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2889/hovercard" href="https://github.com/dstackai/dstack/pull/2889">dstackai/dstack#2889</a></li> <li>Fix 500 errors when requesting file logs by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/r4victor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/r4victor">@r4victor</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3221791792" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2896" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2896/hovercard" href="https://github.com/dstackai/dstack/pull/2896">dstackai/dstack#2896</a></li> <li>Rolling deployments for <code>port</code> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jvstme/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jvstme">@jvstme</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3220895716" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2893" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2893/hovercard" href="https://github.com/dstackai/dstack/pull/2893">dstackai/dstack#2893</a></li> <li>[Feature] Strip ANSI codes from run logs and store them as plain text instead of bytes by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/peterschmidt85/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/peterschmidt85">@peterschmidt85</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3203819284" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2876" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2876/hovercard" href="https://github.com/dstackai/dstack/pull/2876">dstackai/dstack#2876</a></li> <li>[Feature]: Add ability to disable background processing and only run Web UI and API server #2901 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/james-boydell/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/james-boydell">@james-boydell</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3229208648" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2902" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2902/hovercard" href="https://github.com/dstackai/dstack/pull/2902">dstackai/dstack#2902</a></li> <li>[shim] Don't check image downloaded size by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/un-def/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/un-def">@un-def</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3229535541" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2903" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2903/hovercard" href="https://github.com/dstackai/dstack/pull/2903">dstackai/dstack#2903</a></li> <li>Fix rolling deployment migration locking by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/r4victor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/r4victor">@r4victor</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3231273867" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2904" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2904/hovercard" href="https://github.com/dstackai/dstack/pull/2904">dstackai/dstack#2904</a></li> <li>feat: add volume idle duration cleanup feature (#2497) by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/haydnli-shopify/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/haydnli-shopify">@haydnli-shopify</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3172969336" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2842" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2842/hovercard" href="https://github.com/dstackai/dstack/pull/2842">dstackai/dstack#2842</a></li> <li>[Blog] Benchmarking AMD GPUs: bare-metal, containers, partitions by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/peterschmidt85/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/peterschmidt85">@peterschmidt85</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3232543106" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2905" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2905/hovercard" href="https://github.com/dstackai/dstack/pull/2905">dstackai/dstack#2905</a></li> <li>Fix /users/list by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/r4victor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/r4victor">@r4victor</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3234566157" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2908" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2908/hovercard" href="https://github.com/dstackai/dstack/pull/2908">dstackai/dstack#2908</a></li> <li>Return logs in base64 for backward compatibility by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/r4victor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/r4victor">@r4victor</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3235706136" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2910" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2910/hovercard" href="https://github.com/dstackai/dstack/pull/2910">dstackai/dstack#2910</a></li> </ul> <p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/dstackai/dstack/compare/0.19.18...0.19.19">dstackai/dstack@<tt>0.19.18...0.19.19</tt></a></p> r4victor tag:github.com,2008:Repository/805347278/0.19.18-v1 2025-07-09T09:59:49Z 0.19.18-v1 <h2>Server</h2> <h3>Optimized resources processing</h3> <p>This release includes major improvements that allow the dstack server process more resources quickly. It also allows scaling processing rates of one server replica to take advantage of big Postgres instances by setting the <code>DSTACK_SERVER_BACKGROUND_PROCESSING_FACTOR</code> environment variable.</p> <p>The result is:</p> <ul> <li>Faster processing rates: provisioning 100 runs on SQLite with default settings went from ~5m to ~2m.</li> <li>Better scaling: provisioning additional 100 runs is even quicker due to warm cache. Before, it was slower than the first 100 runs.</li> <li>Ability to process more runs per server replica: provisioning 300 runs on Postgres with <code>DSTACK_SERVER_BACKGROUND_PROCESSING_FACTOR=4</code> is ~4m.</li> </ul> <p>For more details on scaling backgraound processing rates, see the <a href="https://dstack.ai/docs/guides/server-deployment/#server-limits" rel="nofollow">Server deployment guide</a>.</p> <h2>Backends</h2> <h3>Private GCP gateways</h3> <p>It's now possible to create GCP gateways without public IPs:</p> <div class="highlight highlight-source-yaml notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="type: gateway name: example domain: gateway.example.com backend: gcp region: europe-west9 public_ip: false certificate: null"><pre><span class="pl-ent">type</span>: <span class="pl-s">gateway</span> <span class="pl-ent">name</span>: <span class="pl-s">example</span> <span class="pl-ent">domain</span>: <span class="pl-s">gateway.example.com</span> <span class="pl-ent">backend</span>: <span class="pl-s">gcp</span> <span class="pl-ent">region</span>: <span class="pl-s">europe-west9</span> <span class="pl-ent">public_ip</span>: <span class="pl-c1">false</span> <span class="pl-ent">certificate</span>: <span class="pl-c1">null</span></pre></div> <p>Note that configuring HTTPS certificates for private GCP gateways is not yet supported, so you need to specify <code>certificate: null</code>.</p> <h2>What's Changed</h2> <ul> <li>Ignore SSH keys when calculating fleet conf diff by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/un-def/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/un-def">@un-def</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3196280089" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2869" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2869/hovercard" href="https://github.com/dstackai/dstack/pull/2869">dstackai/dstack#2869</a></li> <li>[Blog] Refactoring by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/peterschmidt85/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/peterschmidt85">@peterschmidt85</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3199034505" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2873" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2873/hovercard" href="https://github.com/dstackai/dstack/pull/2873">dstackai/dstack#2873</a></li> <li>Implemented fronted precommit linting by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/olgenn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/olgenn">@olgenn</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3195886283" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2868" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2868/hovercard" href="https://github.com/dstackai/dstack/pull/2868">dstackai/dstack#2868</a></li> <li>Support processing more resources per replica by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/r4victor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/r4victor">@r4victor</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3198630246" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2871" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2871/hovercard" href="https://github.com/dstackai/dstack/pull/2871">dstackai/dstack#2871</a></li> <li>Use uvloop by default by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/r4victor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/r4victor">@r4victor</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3201513324" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2874" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2874/hovercard" href="https://github.com/dstackai/dstack/pull/2874">dstackai/dstack#2874</a></li> <li>Add server profiling by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/r4victor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/r4victor">@r4victor</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3201610061" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2875" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2875/hovercard" href="https://github.com/dstackai/dstack/pull/2875">dstackai/dstack#2875</a></li> <li>Fix NVIDIA container toolkit bug in all backends by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jvstme/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jvstme">@jvstme</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3207790996" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2877" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2877/hovercard" href="https://github.com/dstackai/dstack/pull/2877">dstackai/dstack#2877</a></li> <li>Private GCP gateways by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jvstme/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jvstme">@jvstme</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3210301559" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2881" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2881/hovercard" href="https://github.com/dstackai/dstack/pull/2881">dstackai/dstack#2881</a></li> <li>Switch to <code>e2-medium</code> for GCP gateways by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jvstme/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jvstme">@jvstme</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3215011870" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2886" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2886/hovercard" href="https://github.com/dstackai/dstack/pull/2886">dstackai/dstack#2886</a></li> </ul> <p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/dstackai/dstack/compare/0.19.17...0.19.18">dstackai/dstack@<tt>0.19.17...0.19.18</tt></a></p> r4victor tag:github.com,2008:Repository/805347278/0.19.16-v1 2025-06-26T11:24:56Z 0.19.16-v1 <h2>Docker</h2> <h3>Docker in Docker</h3> <p>Using Docker in a run configuration is now much easier. Just set <code>docker</code> to <code>true</code>:</p> <div class="highlight highlight-source-yaml notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="type: task name: docker-nvidia-smi docker: true commands: - docker run --gpus all nvidia/cuda:12.3.0-base-ubuntu22.04 nvidia-smi resources: gpu: 1"><pre><span class="pl-ent">type</span>: <span class="pl-s">task</span> <span class="pl-ent">name</span>: <span class="pl-s">docker-nvidia-smi</span> <span class="pl-ent">docker</span>: <span class="pl-c1">true</span> <span class="pl-ent">commands</span>: - <span class="pl-s">docker run --gpus all nvidia/cuda:12.3.0-base-ubuntu22.04 nvidia-smi</span> <span class="pl-ent">resources</span>: <span class="pl-ent">gpu</span>: <span class="pl-c1">1</span></pre></div> <p>This works with all run configuration types and supports both AMD and NVIDIA GPUs. It’s especially useful if you want to use the docker CLI in your commands—for example, to build Docker images.</p> <p>The <code>docker</code> property is supported on all backends except vastai, runpod, and kubernetes, and is fully supported on SSH fleets as well.</p> <h2>Backends</h2> <h3>CloudRift</h3> <p>The <a href="https://cloudrift.ai/" rel="nofollow">CloudRift</a> team has added support for their GPU cloud, which can now be used with <code>dstack</code>.</p> <p>To configure it, use a CloudRift API key in the backend configuration:</p> <div class="highlight highlight-source-yaml notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="projects: - name: main backends: - type: cloudrift creds: type: api_key api_key: rift_2prgY1d0laOrf2BblTwx2B2d1zcf1zIp4tZYpj5j88qmNgz38pxNlpX3vAo"><pre><span class="pl-ent">projects</span>: - <span class="pl-ent">name</span>: <span class="pl-s">main</span> <span class="pl-ent">backends</span>: - <span class="pl-ent">type</span>: <span class="pl-s">cloudrift</span> <span class="pl-ent">creds</span>: <span class="pl-ent">type</span>: <span class="pl-s">api_key</span> <span class="pl-ent">api_key</span>: <span class="pl-s">rift_2prgY1d0laOrf2BblTwx2B2d1zcf1zIp4tZYpj5j88qmNgz38pxNlpX3vAo</span></pre></div> <p>CloudRift offers competitive on-demand GPU pricing, with more GPUs and regions coming soon.</p> <div class="highlight highlight-source-shell notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="dstack apply -f examples/.dstack.yml -b cloudrift # BACKEND RESOURCES INSTANCE TYPE PRICE 1 cloudrift (us-east-nc-nr-1) cpu=16 mem=100GB disk=1000GB RTX5090:32GB:1 rtx59-16c-nr.1 $0.65"><pre>dstack apply -f examples/.dstack.yml -b cloudrift <span class="pl-c"><span class="pl-c">#</span> BACKEND RESOURCES INSTANCE TYPE PRICE</span> 1 cloudrift (us-east-nc-nr-1) cpu=16 mem=100GB disk=1000GB RTX5090:32GB:1 rtx59-16c-nr.1 <span class="pl-smi">$0</span>.65</pre></div> <p>If you encounter any issues with this backend, please report them.</p> <h2>Server</h2> <h3>Public projects</h3> <p>You can now create public projects that any user on the server can join or leave without approval. Previously, all projects were private, and adding new members required manual action by an admin or manager—a step that’s redundant in high-trust environments.</p> <p>Admins can change a project’s visibility at any time in the project settings.</p> <h3>Metrics</h3> <p>The server exports new Prometheus metrics:</p> <ul> <li><code>dstack_submit_to_provision_duration_seconds</code>: Time from when a run has been submitted and first job provisioning</li> <li><code>dstack_pending_runs_total</code>: Total number of pending runs</li> </ul> <h2>What's changed</h2> <ul> <li>[Feature]: Property filter on Fleets, Models, Volumes pages by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/olgenn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/olgenn">@olgenn</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3162462582" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2824" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2824/hovercard" href="https://github.com/dstackai/dstack/pull/2824">dstackai/dstack#2824</a></li> <li>[Bug]: Run/job status in UI/CLI is shown as <code>provisioning</code> instead of <code>pulling</code> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/peterschmidt85/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/peterschmidt85">@peterschmidt85</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3166135695" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2834" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2834/hovercard" href="https://github.com/dstackai/dstack/pull/2834">dstackai/dstack#2834</a></li> <li>[chore]: Fix annotation in <code>update_service_desired_replica_count</code> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jvstme/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jvstme">@jvstme</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3170729320" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2840" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2840/hovercard" href="https://github.com/dstackai/dstack/pull/2840">dstackai/dstack#2840</a></li> <li>Add CloudRift backend by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/6erun/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/6erun">@6erun</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3126040767" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2771" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2771/hovercard" href="https://github.com/dstackai/dstack/pull/2771">dstackai/dstack#2771</a></li> <li>Fix Postgres deadlocks by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/r4victor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/r4victor">@r4victor</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3174904467" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2843" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2843/hovercard" href="https://github.com/dstackai/dstack/pull/2843">dstackai/dstack#2843</a></li> <li>[UX] Simplify the use of Docker inside containers #2468 by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/peterschmidt85/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/peterschmidt85">@peterschmidt85</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3165092333" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2828" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2828/hovercard" href="https://github.com/dstackai/dstack/pull/2828">dstackai/dstack#2828</a></li> <li>[Docs] Update docs and examples to reflect the <code>docker</code> property by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/peterschmidt85/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/peterschmidt85">@peterschmidt85</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3165841965" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2831" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2831/hovercard" href="https://github.com/dstackai/dstack/pull/2831">dstackai/dstack#2831</a></li> <li>Add support for Tenstorrent n300 GPUs by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/peterschmidt85/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/peterschmidt85">@peterschmidt85</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3164233308" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2827" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2827/hovercard" href="https://github.com/dstackai/dstack/pull/2827">dstackai/dstack#2827</a></li> <li>[Feature]: Property filter on Instances page by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/olgenn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/olgenn">@olgenn</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3164147280" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2826" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2826/hovercard" href="https://github.com/dstackai/dstack/pull/2826">dstackai/dstack#2826</a></li> <li>[UI] Allow to hide the Tour panel by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/olgenn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/olgenn">@olgenn</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3154718596" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2816" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2816/hovercard" href="https://github.com/dstackai/dstack/pull/2816">dstackai/dstack#2816</a></li> <li>Pr3 add join leave UI buttons by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/haydnli-shopify/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/haydnli-shopify">@haydnli-shopify</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3140657807" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2795" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2795/hovercard" href="https://github.com/dstackai/dstack/pull/2795">dstackai/dstack#2795</a></li> <li>Health metrics (Part 2) by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Nadine-H/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Nadine-H">@Nadine-H</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3140907724" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2796" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2796/hovercard" href="https://github.com/dstackai/dstack/pull/2796">dstackai/dstack#2796</a></li> <li>[Bug]: Use a unique token for log pagination instead of a timestamp by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/peterschmidt85/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/peterschmidt85">@peterschmidt85</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3176624930" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2845" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2845/hovercard" href="https://github.com/dstackai/dstack/pull/2845">dstackai/dstack#2845</a></li> <li>Fix update project required permissions by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/r4victor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/r4victor">@r4victor</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3178632011" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2846" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2846/hovercard" href="https://github.com/dstackai/dstack/pull/2846">dstackai/dstack#2846</a></li> </ul> <h2>New contributors</h2> <ul> <li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/6erun/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/6erun">@6erun</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3126040767" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2771" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2771/hovercard" href="https://github.com/dstackai/dstack/pull/2771">dstackai/dstack#2771</a></li> </ul> <p><strong>Full changelog</strong>: <a class="commit-link" href="https://github.com/dstackai/dstack/compare/0.19.15...0.19.16">dstackai/dstack@<tt>0.19.15...0.19.16</tt></a></p> r4victor tag:github.com,2008:Repository/805347278/0.19.15-v1 2025-06-19T20:50:18Z 0.19.15-v1 <h2>Services</h2> <h3>Rolling deployments</h3> <p>This update introduces rolling deployments, which help avoid downtime when deploying new versions of your <a href="https://dstack.ai/docs/concepts/services/" rel="nofollow">services</a>.</p> <p>When you apply an updated service configuration, <code>dstack</code> will gradually replace old service replicas with new ones. You can track the progress in the <code>dstack apply</code> output — the <code>deployment</code> number will be lower for old replicas and higher for new ones.</p> <div class="highlight highlight-source-shell notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="&gt; dstack apply -f my-service.dstack.yml Active run my-service already exists. Detected configuration changes that can be updated in-place: ['image', 'env', 'commands'] Update the run? [y/n]: y ⠋ Launching my-service... NAME BACKEND RESOURCES PRICE STATUS SUBMITTED my-service deployment=1 running 11 mins ago replica=0 job=0 deployment=0 aws (us-west-2) cpu=2 mem=1GB disk=100GB (spot) $0.0026 terminating 11 mins ago replica=1 job=0 deployment=1 aws (us-west-2) cpu=2 mem=1GB disk=100GB (spot) $0.0026 running 1 min ago"><pre><span class="pl-k">&gt;</span> dstack apply -f my-service.dstack.yml Active run my-service already exists. Detected configuration changes that can be updated in-place: [<span class="pl-s"><span class="pl-pds">'</span>image<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>env<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>commands<span class="pl-pds">'</span></span>] Update the run<span class="pl-k">?</span> [y/n]: y ⠋ Launching my-service... NAME BACKEND RESOURCES PRICE STATUS SUBMITTED my-service deployment=1 running 11 mins ago replica=0 job=0 deployment=0 aws (us-west-2) cpu=2 mem=1GB disk=100GB (spot) <span class="pl-smi">$0</span>.0026 terminating 11 mins ago replica=1 job=0 deployment=1 aws (us-west-2) cpu=2 mem=1GB disk=100GB (spot) <span class="pl-smi">$0</span>.0026 running 1 min ago</pre></div> <p>Currently, the following service configuration properties can be updated using rolling deployments: <code>resources</code>, <code>volumes</code>, <code>image</code>, <code>user</code>, <code>privileged</code>, <code>entrypoint</code>, <code>python</code>, <code>nvcc</code>, <code>single_branch</code>, <code>env</code>, <code>shell</code>, and <code>commands</code>.</p> <p>Future releases will allow updating more properties and deploying new git repo commits.</p> <h2>Clusters</h2> <h3>Updated default Docker images</h3> <p>If you don't specify a custom <code>image</code> in the run configuration, <code>dstack</code> uses its default images. These images have been improved for cluster environments and now include <code>mpirun</code> and NCCL tests. Additionally, if you are running on AWS EFA-capable instances, <code>dstack</code> will now automatically select an image with the appropriate EFA drivers. See our <a href="https://dstack.ai/examples/clusters/efa/" rel="nofollow">new AWS EFA guide</a> for more details.</p> <h2>Server</h2> <h3>Health metrics</h3> <p>The <code>dstack</code> server now exports some operational Prometheus metrics that allow to monitor its health. If you are running your own production-grade <code>dstack</code> server installation, refer to the <a href="https://dstack.ai/docs/guides/metrics/#server-health-metrics" rel="nofollow">metrics docs</a> for details.</p> <h2>What's changed</h2> <ul> <li>Set logsWaitDuration to 5m by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/r4victor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/r4victor">@r4victor</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3139583105" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2794" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2794/hovercard" href="https://github.com/dstackai/dstack/pull/2794">dstackai/dstack#2794</a></li> <li>Add health metrics (Part 1) by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/Nadine-H/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/Nadine-H">@Nadine-H</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3122299198" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2760" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2760/hovercard" href="https://github.com/dstackai/dstack/pull/2760">dstackai/dstack#2760</a></li> <li>Add public projects by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/haydnli-shopify/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/haydnli-shopify">@haydnli-shopify</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3121723690" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2759" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2759/hovercard" href="https://github.com/dstackai/dstack/pull/2759">dstackai/dstack#2759</a></li> <li>Fix is_public allowing null by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/r4victor/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/r4victor">@r4victor</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3142908707" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2798" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2798/hovercard" href="https://github.com/dstackai/dstack/pull/2798">dstackai/dstack#2798</a></li> <li>Retry on <code>VOLUME_ERROR</code> and <code>INSTANCE_UNREACHABLE</code> by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jvstme/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jvstme">@jvstme</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3151049624" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2805" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2805/hovercard" href="https://github.com/dstackai/dstack/pull/2805">dstackai/dstack#2805</a></li> <li>Rework default Docker images by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/peterschmidt85/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/peterschmidt85">@peterschmidt85</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3146742514" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2799" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2799/hovercard" href="https://github.com/dstackai/dstack/pull/2799">dstackai/dstack#2799</a></li> <li>Fix volume error status message by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jvstme/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jvstme">@jvstme</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3152168857" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2806" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2806/hovercard" href="https://github.com/dstackai/dstack/pull/2806">dstackai/dstack#2806</a></li> <li>[Docs] Added EFA example by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/peterschmidt85/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/peterschmidt85">@peterschmidt85</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3157657539" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2820" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2820/hovercard" href="https://github.com/dstackai/dstack/pull/2820">dstackai/dstack#2820</a></li> <li>[Bug]: Empty spaces on User Details page by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/olgenn/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/olgenn">@olgenn</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3154575675" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2815" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2815/hovercard" href="https://github.com/dstackai/dstack/pull/2815">dstackai/dstack#2815</a></li> <li>Rolling deployment for services by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jvstme/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jvstme">@jvstme</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3159910714" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2821" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2821/hovercard" href="https://github.com/dstackai/dstack/pull/2821">dstackai/dstack#2821</a></li> <li>Fix building <code>dstack</code> package by <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jvstme/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jvstme">@jvstme</a> in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3161093195" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2823" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2823/hovercard" href="https://github.com/dstackai/dstack/pull/2823">dstackai/dstack#2823</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/haydnli-shopify/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/haydnli-shopify">@haydnli-shopify</a> made their first contribution in <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="3121723690" data-permission-text="Title is private" data-url="https://github.com/dstackai/dstack/issues/2759" data-hovercard-type="pull_request" data-hovercard-url="/dstackai/dstack/pull/2759/hovercard" href="https://github.com/dstackai/dstack/pull/2759">dstackai/dstack#2759</a></li> </ul> <p><strong>Full Changelog</strong>: <a class="commit-link" href="https://github.com/dstackai/dstack/compare/0.19.13...0.19.15">dstackai/dstack@<tt>0.19.13...0.19.15</tt></a></p> jvstme