Repository navigation
Comparing changes
Open a pull request
base repository: dstackai/dstack
base: 0.22.1
head repository: dstackai/dstack
compare: 0.22.2
- 20 commits
- 156 files changed
- 9 contributors
Commits on Sep 21, 2026
-
Refactor dstack for dstack Factory extension (#4303)
* Parametrize register_routes with the statics package Lets extending servers reuse the statics mount and 404 handler instead of copying them. * Rename the factory UI flavor to enterprise * Add register_plugin extension point Lets extending servers register plugins that survive load_plugins, which replaces the plugin list from the server config. * Read the active Alembic config on each migration invocation * Add Factory UI flavor and shared provider-aware login
Configuration menu - View commit details
-
Copy full SHA for c7945c5 - Browse repository at this point
Copy the full SHA c7945c5View commit details
Commits on Sep 22, 2026
-
[Website] Updated product pages (#4304)
* [Website] Update dstack Sky page * [Website] Enable React Router transition flag * [Website] Use thinner product selection outline * [Website] Align product links and docs hover states * [Website] Add product popup hover feedback * [Docs] Open dstack Sky in a new tab * [Website] Clarify dstack Sky hero description * [Website] Swap dstack Sky hero and marketplace titles * [Website] Refine dstack Sky marketplace heading * [Website] Shorten dstack Sky hero description * [Website] Align dstack Sky metadata and product copy * [Website] Refine hero copy and Get started links * [Website] Add dstack Factory landing page * [Website] Trim contributor notes --------- Co-authored-by: Andrey Cheptsov <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 3c0d048 - Browse repository at this point
Copy the full SHA 3c0d048View commit details
Commits on Sep 24, 2026
-
Fix GCP
a3-edgegpu-8ganda3-highgpu-8g(#4307)Upgrade the COS image used for these instance types to the currently [recommended](https://docs.cloud.google.com/compute/docs/gpus/gpudirect#create-high-edge-instances) `cos-121-lts` family that comes with a GLIBC version (2.37) compatible with `dstack-shim`.
Configuration menu - View commit details
-
Copy full SHA for 40772a9 - Browse repository at this point
Copy the full SHA 40772a9View commit details -
Fix errors in service router worker sync (#4305)
* Fixed two `DetachedInstanceError` due to missing `RunModel.run_name` and `JobModel.job_name`. * Fixed `Could not fetch server_info for worker ...: ReadError('')` logged as an error with a traceback, repeating until the worker is ready. An SSH tunnel to a port nobody listens on yet fails with `httpx.ReadError`, so this is the normal startup path. Both `_probe_http_worker()` and `_get_router_workers()` now catch `httpx.RequestError` and log it at the debug level. Also: * `_get_router_workers()` returns `None` instead of `[]` when the response cannot be read. `[]` means "the router has no workers", so an unexpected status, an unparsable body, or a missing `workers` key made the sync re-register every worker. * Bare `except Exception` clauses are replaced with the exceptions actually expected, so a programming error is no longer reported as an unready replica. `sync_router_workers_for_run_model()` logs such errors itself instead of letting them escape to the pipeline worker, which leaves the sync row locked until the lock expires. * `_get_worker()` takes the replica address instead of two pre-built URLs, and each probe builds the URL it registers the worker under. `_get_http_worker()`, `_get_grpc_worker()`, and `_discover_grpc_server_info()` are folded into loops over the connection modes and the runtime types to probe. Fixes: #4300Configuration menu - View commit details
-
Copy full SHA for 39b28c2 - Browse repository at this point
Copy the full SHA 39b28c2View commit details -
Configuration menu - View commit details
-
Copy full SHA for e3705ce - Browse repository at this point
Copy the full SHA e3705ceView commit details -
Configuration menu - View commit details
-
Copy full SHA for fdfce0a - Browse repository at this point
Copy the full SHA fdfce0aView commit details
Commits on Sep 25, 2026
-
Configuration menu - View commit details
-
Copy full SHA for 7160f6b - Browse repository at this point
Copy the full SHA 7160f6bView commit details -
Don't require probes to pass in router worker sync (#4313)
The sync only picked up router and worker jobs with `JobModel.ready`, i.e. with all probes passed. A router probe that depends on registered workers, such as `/health_generate`, never passed, since workers are only registered once the router is picked up, so the service deadlocked. The sync now takes all running jobs, filtered by `job_num == 0` instead. Workers are registered once the sync's own check (`/server_info` or `GetServerInfo`) reports them ready, so `probes` can no longer delay worker registration. As probes are configured per service, not per replica group, such gating only worked when the router and workers share the transport and API. The `job_num == 0` condition is a no-op for now, as services don't support multi-node replicas. Previously, it was implied by `ready`, which is only set for the first node. Fixes: #4310 Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 229f535 - Browse repository at this point
Copy the full SHA 229f535View commit details
Commits on Sep 28, 2026
-
Co-authored-by: Andrey Cheptsov <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 9204e15 - Browse repository at this point
Copy the full SHA 9204e15View commit details -
OCI: resolve availability domains from the configured compartment (#4309
) Co-authored-by: Jvst Me <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 8d9559a - Browse repository at this point
Copy the full SHA 8d9559aView commit details
Commits on Sep 29, 2026
-
Sync workers with every running router (#4320)
During a rolling deployment, the replacement router runs alongside the old one, but the worker sync only picked the first running router job, which is always the old one. The replacement had no workers until the old router was scaled down and could not serve requests routed to it. The sync now reads the workers of every running router, probes the workers once, and updates each router that is out of sync, so an unreachable router no longer blocks the others. Router tunnels are no longer held while workers are probed, which may take minutes: each router is read first, and connected to again only if it needs an update, re-reading its workers before applying the changes. Also: * `_Worker` is renamed back to `_TargetWorker`, its fields are typed after SMG's `WorkerSpec`, and `_add_worker_to_router()` sends it as the `POST /workers` body as is. Fixes: #4315 Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 6e36024 - Browse repository at this point
Copy the full SHA 6e36024View commit details -
Restore model probe for service routers (#4322)
Since #4270, a router replica of a service with `model` and no `probes` was probed with `GET /health` instead of the chat completions request. The latter deadlocked: the router only answers it once workers are registered, and the worker sync skipped routers that were not ready. #4313 dropped the readiness check from the sync, so this deadlock is gone. `/health` passes before the router has any workers. In a rolling deployment, the replacement router was considered ready, and the old one was scaled down, before the replacement could serve requests. Now that #4320 syncs workers with every running router, the replacement passes the chat completions probe once it has workers. Workers behind a router still get no default probe, as they may not serve HTTP at all (gRPC workers). With a Dynamo router, a router rolling deployment now waits for the replacement indefinitely instead of scaling down the old router, as workers stay attached to the old router's etcd/NATS. Such deployments were broken before as well and are to be fixed separately. Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for f3de2e5 - Browse repository at this point
Copy the full SHA f3de2e5View commit details -
[Presets] Update system_prompt for router usage (#4294)
* [Presets] Update system_prompt.md for router usage * Resolve Review Comments * Require router on cluster fleets with a CPU-only instance --------- Co-authored-by: Bihan Rana
Configuration menu - View commit details
-
Copy full SHA for 85886c4 - Browse repository at this point
Copy the full SHA 85886c4View commit details -
Configuration menu - View commit details
-
Copy full SHA for e7eb5f0 - Browse repository at this point
Copy the full SHA e7eb5f0View commit details -
[UI] Fix job metrics tab (#4324)
Previously, all jobs displayed metrics for replica_num=0
Configuration menu - View commit details
-
Copy full SHA for a3496d2 - Browse repository at this point
Copy the full SHA a3496d2View commit details
Commits on Sep 30, 2026
-
Configuration menu - View commit details
-
Copy full SHA for deac309 - Browse repository at this point
Copy the full SHA deac309View commit details -
Apply DSTACK_SERVICE_CLIENT_TIMEOUT to gateway nginx and app (#4327)
* Apply DSTACK_SERVICE_CLIENT_TIMEOUT to gateway nginx and app The server now passes the timeout to gateways on service and entrypoint registration. The default is raised from 60 to 300 seconds to match the previous nginx timeout. * Fix docstrings * Clean up tests
Configuration menu - View commit details
-
Copy full SHA for 878efad - Browse repository at this point
Copy the full SHA 878efadView commit details -
* Add Daytona backend * Shorten Daytona volume documentation * Validate Daytona API key permissions Document required permissions and remove redundant Daytona tests. * Pin gpuhunt 0.1.31 * Clarify Daytona volume sharing * Clarify Daytona volume documentation * Clean up Daytona docs, timeouts, and tests --------- Co-authored-by: Andrey Cheptsov <[email protected]>
Configuration menu - View commit details
-
Copy full SHA for 1284826 - Browse repository at this point
Copy the full SHA 1284826View commit details
Commits on Oct 1, 2026
-
Pin Nebius spot price at provisioning time (#4328)
Starting October 8, Nebius is introducing Dynamic Spot pricing for preemptible VMs. The price can change for existing instances during their lifetime. To prevent the price from increasing above the one `dstack` shows, `dstack` now caps the price at its current value at provisioning time using a pricing policy. If the price grows above the cap, the instance is interrupted by Nebius. The actual price may still drop below the one `dstack` shows. Preemptible L40S is still sold at a flat rate and is exempt from pricing policies. Full support for Nebius Dynamic Spot pricing (tracking the current price and showing it in `dstack`, user-specified caps, etc.) may be added later upon request.
Configuration menu - View commit details
-
Copy full SHA for 4faf0ba - Browse repository at this point
Copy the full SHA 4faf0baView commit details -
Add OCI
experimental_instance_typessetting (#4329)Add an OCI backend setting that accepts a list of shape names to allow provisioning in addition to the standard supported instance families. Only works for shapes included in `dstack`'s pricing catalog (`gpuhunt`). This setting can be used to test various shapes that were not yet tested internally at `dstack`. ```yaml experimental_instance_types: [BM.GPU.RTXPRO.8] ```
Configuration menu - View commit details
-
Copy full SHA for 70c2616 - Browse repository at this point
Copy the full SHA 70c2616View commit details
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff 0.22.1...0.22.2