Releases: dstackai/dstack
0.20.6
Server deployment
Memory optimization
This release reduces peak server memory usage. Previously, memory grew with the total number of instances ever submitted; this is now fixed. We recommend upgrading if memory usage increases over time.
Logs storage
Fluent Bit + Elasticsearch/OpenSearch
Run logs can now be stored in your own log storage via Fluent Bit. At the same time, dstack can now read run logs from Elasticsearch/OpenSearch (to display in the UI and CLI), if Fluent Bit ships the logs there.
See the docs for more details.
Fleets
Since 0.20, dstack requires at least one fleet to be created before you can submit any runs. To make this easier, we’ve simplified default fleet creation during project setup in the UI:
In addition, if your project doesn’t have a fleet, the UI will prompt you to create one.
What's Changed
- Hotfix. Fixed generation fleet fields in project forms by @olgenn in #3486
- Add missing Box imports by @r4victor in #3485
- Use the same metrics endpoint label for 404 requests by @r4victor in #3455
- Refactoring Inspect page by @olgenn in #3457
- Migrate from Slurm by @peterschmidt85 in #3454
- [Internal]: Handle GitHub API errors in
release_notes.pyby @jvstme in #3463 - Display
InstanceAvailability.NO_BALANCEin CLI by @jvstme in #3460 - Do not return
NO_BALANCEto older clients by @jvstme in #3462 - Optimize job submissions loading by @r4victor in #3466
- [CLI] Add
--memoryoption toapplyandofferby @un-def in #3461 - [runner] Rework and fix user processing by @un-def in #3456
- Optimize fleet instances db queries by @r4victor in #3467
- Kubernetes: adjust offer GPU count by @un-def in #3469
- Add missing job status change event for scaling by @jvstme in #3465
- Fix
find_optimal_fleet_with_offerslog message by @un-def in #3470 - Fix missing instance lock in delete_fleets by @r4victor in #3471
- Optimize list and get fleets by @r4victor in #3472
- feat(logging): add fluent-bit log shipping by @DragonStuff in #3431
- Adjust fluent-bit logging integration by @r4victor in #3478
- Emit events for instance status changes by @jvstme in #3477
- [runner] Restore
--home-diroption as no-op by @un-def in #3480 - [UI] Default fleet in project wizard by @olgenn in #3464
- Support shared AWS compute caches by @r4victor in #3483
- [UI] Minor re-order in the sidebar by @peterschmidt85 in #3484
Full changelog: 0.20.3...0.20.6
0.20.5
0.20.4
Warning
Be sure to update to 0.20.6, which includes important fixes.
What's changed
- Use the same metrics endpoint label for 404 requests by @r4victor in #3455
- Refactoring Inspect page by @olgenn in #3457
- Migrate from Slurm by @peterschmidt85 in #3454
- [Internal]: Handle GitHub API errors in
release_notes.pyby @jvstme in #3463 - Display
InstanceAvailability.NO_BALANCEin CLI by @jvstme in #3460 - Do not return
NO_BALANCEto older clients by @jvstme in #3462 - Optimize job submissions loading by @r4victor in #3466
- [CLI] Add
--memoryoption toapplyandofferby @un-def in #3461 - [runner] Rework and fix user processing by @un-def in #3456
- Optimize fleet instances db queries by @r4victor in #3467
- Kubernetes: adjust offer GPU count by @un-def in #3469
- Add missing job status change event for scaling by @jvstme in #3465
- Fix
find_optimal_fleet_with_offerslog message by @un-def in #3470 - Fix missing instance lock in delete_fleets by @r4victor in #3471
- Optimize list and get fleets by @r4victor in #3472
- feat(logging): add fluent-bit log shipping by @DragonStuff in #3431
- Adjust fluent-bit logging integration by @r4victor in #3478
- Emit events for instance status changes by @jvstme in #3477
- [runner] Restore
--home-diroption as no-op by @un-def in #3480 - [UI] Default fleet in project wizard by @olgenn in #3464
- Support shared AWS compute caches by @r4victor in #3483
- [UI] Minor re-order in the sidebar by @peterschmidt85 in #3484
Full changelog: 0.20.3...0.20.4
0.20.3
Dev environments
Windsurf IDE
Dev environments now support Windsurf as a first-class IDE option alongside VSCode and Cursor.
type: dev-environment
ide: windsurf
repos:
- https://github.com/dstackai/dstack
resources:
gpu: 24GB..:1dstack provisions an instance for your dev environment and seamlessly connects your local Windsurf editor to it.
Troubleshooting
Runs/fleets/volumes/gateways JSON via CLI
You can now inspect the full JSON state of runs, fleets, volumes, and gateways using these CLI commands:
$ dstack run get <name> --json
$ dstack fleet get <name> --json
$ dstack volume get <name> --json
$ dstack gateway get <name> --jsonRuns/fleets JSON via UI
The UI includes new "Inspect" tabs with read-only JSON viewers for runs and fleets, making it easier to debug and understand resource states.
What's changed
- Adjust kubernetes gpu matching for RTX5090 by @r4victor in #3440
- [runner] Fix MPI hostfile by @un-def in #3441
- [Crusoe] Minor edits by @peterschmidt85 in #3448
- [Dev environments] Support windsurf IDE by @peterschmidt85 in #3444
- Add
processing instancedebug log message by @jvstme in #3450 - [runner] Decouple Server and Executor by @un-def in #3447
- [Feature] Allow to see JSON state of runs/volumes/fleets/gateways via CLI/UI by @peterschmidt85 in #3445
Full Changelog: 0.20.2...0.20.3
0.20.2
What's Changed
- Fix TestRemoveDanglingTasks by @un-def in #3426
- [runner] Configure and start sshd by @un-def in #3421
- Resolve url for dstack login by @r4victor in #3427
- [shim] Fix DockerRunner tests by @un-def in #3429
- Remove httpx duplicated in dev deps by @r4victor in #3433
- [UX] Better "No fleets" messages; plus updated
Troubleshootingguide by @peterschmidt85 in #3428 - [runner] Streamline authorized_keys management by @un-def in #3435
- Change /dstack/venv ownership to the current user by @un-def in #3437
- [UX] Add an API that returns projects that lack active fleets by @peterschmidt85 in #3425
- Make no fleet notifications dismissible by @r4victor in #3439
Full Changelog: 0.20.1...0.20.2
0.20.1
CLI
No-fleets warning
Since the last major release, fleets are required before submitting runs. This update makes that requirement explicit in the CLI.
When a run is submitted for a project that has no fleets, the CLI now shows a dedicated warning. The run status has also been updated in both the CLI and UI to No fleets instead of No offers.
This removes ambiguity around failed runs that previously appeared as No offers.
dstack login
If you're using dstack Sky or dstack Enterprise, you can now authenticate the CLI using a new command, dstack login, instead of manually providing a token.
dstack Sky supports authentication via GitHub. dstack Enterprise supports SSO with providers such as Okta, Microsoft Entra ID, and Google.
Services
Service configurations now support gateway: true.
For services that require gateway features (such as auto-scaling, custom domains, WebSockets, etc), this property makes the requirement explicit. When set, dstack ensures a default gateway is present.
dstack-shim
In addition to the dstack-runner auto-update mechanism introduced in 0.20.0, dstack-shim now also supports auto-updating.
See contributing/RUNNER-AND-SHIM.md for details.
What's changed
- [Docs] Reflect the 0.20 changes related to
working_dirandrepo_dirby @peterschmidt85 in #3356 - [Docs]: Fix environment variables reference layout by @jvstme in #3396
- Add more events about users and projects by @jvstme in #3390
- Implement shim auto-update by @un-def in #3395
- [Fleets] Updated error message and docs by @peterschmidt85 in #3377
- [Blog] dstack 0.20 GA: Fleet-first UX and other important changes by @peterschmidt85 in #3401
- [runner] Get container cgroup path from procfs by @un-def in #3402
- [Internal] Add an index for user email by @peterschmidt85 in #3409
- Don't send
asyncio.CancelledErrorto Sentry by @un-def in #3404 - [Internal] Allow passing
AnyActortoupdate_userby @peterschmidt85 in #3410 - Replace
Instance.termination_reasonvalues with codes by @peterschmidt85 in #3187 - [Docs] Added the
Lambdaexample underClustersby @peterschmidt85 in #3407 - [runner] Revamp
main.goby @un-def in #3411 - Was implemented Event list for job, run and fleet by @olgenn in #3392
- Fix event target type rendering in server logs by @jvstme in #3414
- Support
gateway: truein service configurations by @jvstme in #3413 - Implement
dstack logincommand and CLI OAuth flow by @r4victor in #3415 - Allow users to delete their only project by @jvstme in #3416
- Indicate deleted actors and projects in Events API by @jvstme in #3422
- [UX] Make "No fleets" run status more explicit #3405 by @peterschmidt85 in #3406
- Bump
gpuhunt==0.1.16by @r4victor in #3423
Full changelog: 0.20.0...0.20.1
0.20.0
dstack 0.20 is a major release that brings significant improvements and introduces a number of breaking changes. Read below for the most important ones. For migration notes, please refer to the migration guide.
Fleets
dstack previously had two different ways to provision instances for runs: using a fleet configuration or using automatic fleet provisioning on run apply. To unify the UX, dstack no longer creates fleets automatically.
Fleets must now be created explicitly before submitting runs. This gives users full control over the provisioning lifecycle. If you don't need any limits on instance provisioning (as was the case with auto-created fleets), you can create a single elastic fleet for all runs:
type: fleet
name: default-fleet
nodes: 0..Note that multi-node tasks require fleets with placement: cluster, which provides the best possible connectivity. You will need a separate fleet for each cluster.
Note
To keep the old behavior with auto-created fleets, set the DSTACK_FF_AUTOCREATED_FLEETS_ENABLED environment variable.
Runs
Working directory
Previously, the working_dir property had complicated semantics: it defaulted to /workflow, but for tasks and services without commands, the image's working directory was used instead.
This has now been simplified: working_dir always defaults to the image's working directory. The working directory of the default dstack images is now set to /dstack/run.
Repo directory
Working with repos is now more explicit and intuitive. First, dstack now only sets up repos that are explicitly defined in run configurations via repos; repos initialized with dstack init are not set up unless specified:
type: dev-environment
ide: vscode
repos:
# Clone the repo in the configuration's dir into `working_dir`
- .Second, repos[].path now defaults to working_dir (".") instead of /workflow.
Third, cloning a repo into a non-empty directory now raises an error so that mistakes are not silently ignored. The previous behavior of skipping cloning can be specified explicitly with if_exists: skip:
type: dev-environment
ide: vscode
repos:
- local_path: .
path: /my_volume/repo
if_exists: skipEvents
dstack now stores important events—such as resource CRUD operations, status changes, and other information crucial for auditing and debugging. Users can view events using the dstack event CLI command or in the UI.
$ dstack event
[2025-12-11 15:05:20] [👤admin] [run clever-cheetah-1] Run submitted. Status: SUBMITTED
[2025-12-11 15:05:20] [job clever-cheetah-1-0-0] Job created on run submission. Status: SUBMITTED
[2025-12-11 15:05:26] [job clever-cheetah-1-0-0, instance cloud-fleet-0] Job assigned to instance. Instance status: BUSY (1/1 blocks busy)CLI
JSON output
The dstack ps and dstack gateway commands now support --format json / --json arguments that print results in JSON instead of plaintext:
$ dstack ps --json
{
"project": "main",
"runs": [
{
"id": "5f2e08b5-2098-4064-86c7-0efe0eb84970",
"project_name": "main",
"user": "admin",
"fleet": {
"id": "9598d5db-67d8-4a2e-bdd2-842ab93b2f2e",
"name": "cloud-fleet"
},
...
}
]
}Verda (formerly Datacrunch)
The datacrunch backend has been renamed to verda, following the company's rebranding.
projects:
- name: main
backends:
- type: verda
creds:
type: api_key
client_id: xfaHBqYEsArqhKWX-e52x3HH7w8T
client_secret: B5ZU5Qx9Nt8oGMlmMhNI3iglK8bjMhagTbylZy4WzncZe39995f7Vxh8
Gateways
Gateway configurations now support an optional instance_type property that allows overriding the default gateway instance type:
type: gateway
name: example-gateway
backend: aws
region: eu-west-1
instance_type: t3.large
domain: example.comCurrently instance_type is supported for aws and gcp backends.
All breaking changes
- Fleets are no longer created automatically on run apply and have to be created explicitly before submitting runs.
- The run's
working_dirnow always defaults to the image's working directory instead of/workflow. The working directory ofdstackdefault images is now/dstack/run. repos[].pathnow defaults toworking_dir(".") instead of/workflow.- Dropped implicitly loaded repos; repos must be specified via
reposconfiguration property. - Cloning a repo into a non-empty directory now raises an error. This can be changed by setting
if_exists: skip. - Dropped CLI commands
dstack config,dstack stats, anddstack gateway create. - Dropped Python API
RunCollectionmethodsRunCollection.get_plan(),RunCollection.exec_plan(), andRunCollection.submit(). - Dropped local repos support:
dstack init --localanddstack.api.LocalRepo. - Dropped Azure deprecated VM series Dsv3 and Esv4.
- Dropped legacy server environment variables
DSTACK_SERVER_METRICS_TTL_SECONDSandDSTACK_FORCE_BRIDGE_NETWORK.
Deprecations
- Deprecated the API endpoint
/api/project/{project_name}/fleets/createin favor of/api/project/{project_name}/fleets/apply. - Deprecated
repo_dirargument inRunCollection.get_run_plan()in favor ofrepos[].path.
What's Changed
- Update alembic pin by @r4victor in #3331
- [Internal] Bump golangci-lint to v2 by @un-def in #3336
- Add RELEASE.md by @r4victor in #3334
- Implement runner auto-update by @un-def in #3333
- [Feature]: Add JSON output option for CLI commands by @peterschmidt85 in #3335
- [Docs] Make Kapa.ai a sidebar (styling update) by @peterschmidt85 in #3338
- [Docs] Fleet-related improvements by @peterschmidt85 in #3339
- [UI] Run Wizard. Added docker, python and repos fields by @olgenn in #3252
- Make autocreated fleets opt-in by @r4victor in #3342
- Add
repos[].if_existsrun configuration option by @un-def in #3341 - Clean up 0.19 compatibility code by @r4victor in #3347
- [Breaking]: Drop deprecated
RunCollectionmethods by @jvstme in #3340 - Events emission framework and API by @jvstme in #3325
- Drop legacy server environment variables by @un-def in #3349
- Drop legacy working/repo dirs where possible by @un-def in #3348
- refactor: just remove 3 duplicated lines in 1 .py file by @immanuwell in #3350
- Drop
dstack config,dstack stats,dstack gateway createby @r4victor in #3351 - Drop hardcoded Hot Aisle VM specs by @jvstme in #3239
- [Docs]: Fix TensorDock still present in reference by @jvstme in #3321
- [Blog] How Toffee streamlines inference and cut GPU costs with
dstackby @peterschmidt85 in #3345 - Drop config.yml->repos and LocalRepo support by @un-def in #3352
- [chore]: Fix Alembic
path_separatorwarning by @jvstme in #3353 - Clean up low- and high-level API clients by @un-def in #3355
- Add
EventTarget.project_nameby @jvstme in #3362 - [runner] Chown repo dir by @un-def in #3364
- Add tini to server Docker images by @un-def in #3357
- Set WORKDIR in base Docker images by @un-def in #3358
- #3309 events UI by @olgenn in #3361
- Pass state param to github callback by @r4victor in #3366
- Add the
dstack eventcommand for viewing events by @jvstme in #3365 - [Internal] Packer: apt-upgrade.sh: autoaccept conffiles changes by @un-def in #3367
- Bump base_image to 0.12 by @un-def in #3368
- Restore
RunSpec.working_dirfield by @un-def in #3371 - Drop
DSTACK_FF_EVENTSby @jvstme in #3372 - Change field order in
dstack eventby @jvstme in #3373 - Add more events by @jvstme in #3369
- [Verda] Rename the
datacrunchbackend toverdaby @peterschmidt85 in #3359 - [Docs] Added Migration guide (for the upcoming 0.20) by @peterschmidt85 in #3374
- Set pyright typeCheckingMode by @r4victor in #3379
- Run frontend-pre-commit only on frontend files by @r4victor in #3380
- [Docs] Add
Crusoeexample underClustersby @peterschmidt85 in #3381 - Allow customizing gateway instance type by @jvstme in #3384
- [Docs] Merge GCP clusters examples by @peterschmidt85 in #337...
0.20.0rc1
dstack 0.20 is a major upcoming release that brings significant improvements and introduces a number of breaking changes. Read below for the most important ones.
Note
You're encouraged to test 0.20rc1 in the staging environment, share your feedback, and ensure you're ready to upgrade before the release goes GA (planned for December 17).
uv tool install "dstack[all]==0.20rc1"For migration notes, please refer to the migration guide.
Fleets
dstack previously had two different ways to provision instances for runs: using a fleet configuration or using automatic fleet provisioning on run apply. To unify the UX, dstack no longer creates fleets automatically.
Fleets must now be created explicitly before submitting runs. This gives users full control over the provisioning lifecycle. If you don't need any limits on instance provisioning (as was the case with auto-created fleets), you can create a single elastic fleet for all runs:
type: fleet
name: default-fleet
nodes: 0..Note that multi-node tasks require fleets with placement: cluster, which provides the best possible connectivity. You will need a separate fleet for each cluster.
Note
To keep the old behavior with auto-created fleets, set the DSTACK_FF_AUTOCREATED_FLEETS_ENABLED environment variable.
Runs
Working directory
Previously, the working_dir property had complicated semantics: it defaulted to /workflow, but for tasks and services without commands, the image's working directory was used instead.
This has now been simplified: working_dir always defaults to the image's working directory. The working directory of the default dstack images is now set to /dstack/run.
Repo directory
Working with repos is now more explicit and intuitive. First, dstack now only sets up repos that are explicitly defined in run configurations via repos; repos initialized with dstack init are not set up unless specified:
type: dev-environment
ide: vscode
repos:
# Clone the repo in the configuration's dir into `working_dir`
- .Second, repos[].path now defaults to working_dir (".") instead of /workflow.
Third, cloning a repo into a non-empty directory now raises an error so that mistakes are not silently ignored. The previous behavior of skipping cloning can be specified explicitly with if_exists: skip:
type: dev-environment
ide: vscode
repos:
- local_path: .
path: /my_volume/repo
if_exists: skipEvents
dstack now stores important events—such as resource CRUD operations, status changes, and other information crucial for auditing and debugging. Users can view events using the dstack event CLI command or in the UI.
$ dstack event
[2025-12-11 15:05:20] [👤admin] [run clever-cheetah-1] Run submitted. Status: SUBMITTED
[2025-12-11 15:05:20] [job clever-cheetah-1-0-0] Job created on run submission. Status: SUBMITTED
[2025-12-11 15:05:26] [job clever-cheetah-1-0-0, instance cloud-fleet-0] Job assigned to instance. Instance status: BUSY (1/1 blocks busy)CLI
JSON output
The dstack ps and dstack gateway commands now support --format json / --json arguments that print results in JSON instead of plaintext:
$ dstack ps --json
{
"project": "main",
"runs": [
{
"id": "5f2e08b5-2098-4064-86c7-0efe0eb84970",
"project_name": "main",
"user": "admin",
"fleet": {
"id": "9598d5db-67d8-4a2e-bdd2-842ab93b2f2e",
"name": "cloud-fleet"
},
...
}
]
}Verda (formerly Datacrunch)
The datacrunch backend has been renamed to verda, following the company's rebranding.
projects:
- name: main
backends:
- type: verda
creds:
type: api_key
client_id: xfaHBqYEsArqhKWX-e52x3HH7w8T
client_secret: B5ZU5Qx9Nt8oGMlmMhNI3iglK8bjMhagTbylZy4WzncZe39995f7Vxh8
All breaking changes
- Fleets are no longer created automatically on run apply and have to be created explicitly before submitting runs.
- The run's
working_dirnow always defaults to the image's working directory instead of/workflow. The working directory ofdstackdefault images is now/dstack/run. repos[].pathnow defaults toworking_dir(".") instead of/workflow.- Dropped implicitly loaded repos; repos must be specified via
reposconfiguration property. - Cloning a repo into a non-empty directory now raises an error. This can be changed by setting
if_exists: skip. - Dropped CLI commands
dstack config,dstack stats, anddstack gateway create. - Dropped Python API
RunCollectionmethodsRunCollection.get_plan(),RunCollection.exec_plan(), andRunCollection.submit(). - Dropped local repos support:
dstack init --localanddstack.api.LocalRepo. - Dropped Azure deprecated VM series Dsv3 and Esv4.
- Dropped legacy server environment variables
DSTACK_SERVER_METRICS_TTL_SECONDSandDSTACK_FORCE_BRIDGE_NETWORK.
Deprecations
- Deprecated the API endpoint
/api/project/{project_name}/fleets/createin favor of/api/project/{project_name}/fleets/apply. - Deprecated
repo_dirargument inRunCollection.get_run_plan()in favor ofrepos[].path.
What's changed
- Update alembic pin by @r4victor in #3331
- [Internal] Bump golangci-lint to v2 by @un-def in #3336
- Add RELEASE.md by @r4victor in #3334
- Implement runner auto-update by @un-def in #3333
- [Feature]: Add JSON output option for CLI commands by @peterschmidt85 in #3335
- [Docs] Make Kapa.ai a sidebar (styling update) by @peterschmidt85 in #3338
- [Docs] Fleet-related improvements by @peterschmidt85 in #3339
- [UI] Run Wizard. Added docker, python and repos fields by @olgenn in #3252
- Make autocreated fleets opt-in by @r4victor in #3342
- Add
repos[].if_existsrun configuration option by @un-def in #3341 - Clean up 0.19 compatibility code by @r4victor in #3347
- [Breaking]: Drop deprecated
RunCollectionmethods by @jvstme in #3340 - Events emission framework and API by @jvstme in #3325
- Drop legacy server environment variables by @un-def in #3349
- Drop legacy working/repo dirs where possible by @un-def in #3348
- refactor: just remove 3 duplicated lines in 1 .py file by @immanuwell in #3350
- Drop
dstack config,dstack stats,dstack gateway createby @r4victor in #3351 - Drop hardcoded Hot Aisle VM specs by @jvstme in #3239
- [Docs]: Fix TensorDock still present in reference by @jvstme in #3321
- [Blog] How Toffee streamlines inference and cut GPU costs with
dstackby @peterschmidt85 in #3345 - Drop config.yml->repos and LocalRepo support by @un-def in #3352
- [chore]: Fix Alembic
path_separatorwarning by @jvstme in #3353 - Clean up low- and high-level API clients by @un-def in #3355
- Add
EventTarget.project_nameby @jvstme in #3362 - [runner] Chown repo dir by @un-def in #3364
- Add tini to server Docker images by @un-def in #3357
- Set WORKDIR in base Docker images by @un-def in #3358
- #3309 events UI by @olgenn in #3361
- Pass state param to github callback by @r4victor in #3366
- Add the
dstack eventcommand for viewing events by @jvstme in #3365 - [Internal] Packer: apt-upgrade.sh: autoaccept conffiles changes by @un-def in #3367
- Bump base_image to 0.12 by @un-def in #3368
- Restore
RunSpec.working_dirfield by @un-def in #3371 - Drop
DSTACK_FF_EVENTSby @jvstme in #3372 - Change field order in
dstack eventby @jvstme in #3373 - Add more events by @jvstme in #3369
- [Verda] Rename the
datacrunchbackend toverdaby @peterschmidt85 in #3359
New contributors
- @immanuwell made their first contribution in #3350
Full changelog: 0.19.40...0.20.0rc1
0.19.40
0.19.39
This release includes several important bug fixes, performance improvements, and updated documentation.
Documentation
Contributing
External contributors can now build the dstack documentation locally!
Previously, this wasn’t possible because dstack relied on the premium MKDocs Material Insider theme. Since the maintainers of MKDocs Material recently made the full edition free, we've updated the repository accordingly.
To help contributors get started, we've added a new guide: contributing/DOCS.md.
We welcome and encourage community contributions - whether that's reporting issues or submitting pull requests.
/llms.txt
As more users rely on LLMs to interact with tools, we've added support for /llms.txt to help guide models using dstack.
You can now use:
These files help LLMs better understand how dstack works and enable them to generate more accurate commands, configurations, and answers.
AGENTS.md
We’ve also added AGENTS.md to help modern AI agents automatically understand how to interact with the repository and tooling.
Warning
Be sure to update to 0.19.40, which includes an additional important fix.
What's changed
- [Experimental] Added
LEGACY_REPO_DIRfeature flag (to drop the legacy repo dir) by @un-def in #3305 - [UX] Minor improvement for
dstack serverby @peterschmidt85 in #3308 - [Bug] Fix
LEGACY_REPO_DIR_DISABLEDfeature flag by @un-def in #3314 - [Docs] Add
sglang_routerdetails in examples, gateway and refs by @Bihan in #3313 - [Docs] Add
llms.txtandllms-full.txtby @peterschmidt85 in #3312 - Assert not authenticated 401 by @r4victor in #3318
- [Performance] Optimize per fleet offers by @r4victor in #3316
- [Docs] Add
AGENTS.mdby @r4victor in #3319 - [Docs] Generate external links CSS decoration automatically by @peterschmidt85 in #3320
- [Blog] SGLang router integration and disaggregated inference roadmap by @peterschmidt85 in #3323
- [Bug] Implement users soft-deletion by @r4victor in #3326
- [Bug] Fix gateway router field backward compatibility by @Bihan in #3327
Full changelog: 0.19.38...0.19.39