diff --git a/README.md b/README.md index 016091186..348fb4f8d 100644 --- a/README.md +++ b/README.md @@ -88,9 +88,9 @@ Configuration is updated at ~/.dstack/config.yml -### Install AI agent skills +### Install agent skills -Install [skills](https://skills.sh/dstackai/dstack/dstack) to help AI agents use the `dstack` CLI and edit configuration files. +Install [`dstack` skills](https://skills.sh/dstackai/dstack/dstack) to help AI agents use the CLI and edit configuration files. ```shell $ npx skills add dstackai/dstack diff --git a/docs/assets/images/kubernetes-logo-original.svg b/docs/assets/images/kubernetes-logo-original.svg new file mode 100644 index 000000000..882b02096 --- /dev/null +++ b/docs/assets/images/kubernetes-logo-original.svg @@ -0,0 +1,90 @@ + + + + + Kubernetes logo with no border + + + + + + image/svg+xml + + Kubernetes logo with no border + "kubectl" is pronounced "kyoob kuttel" + + + + + + + + + + diff --git a/docs/assets/images/kubernetes-logo.svg b/docs/assets/images/kubernetes-logo.svg index 882b02096..140c74aab 100644 --- a/docs/assets/images/kubernetes-logo.svg +++ b/docs/assets/images/kubernetes-logo.svg @@ -1,90 +1,16 @@ - - - - - Kubernetes logo with no border - - - - - - image/svg+xml - - Kubernetes logo with no border - "kubectl" is pronounced "kyoob kuttel" - - - - - - - - - + + + Logo Kubernetes Streamline Icon: https://streamlinehq.com + + + + + + + + + + + + diff --git a/docs/assets/images/nebius-logo-original.svg b/docs/assets/images/nebius-logo-original.svg new file mode 100644 index 000000000..a305697ac --- /dev/null +++ b/docs/assets/images/nebius-logo-original.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/docs/assets/images/nebius-logo.svg b/docs/assets/images/nebius-logo.svg index a305697ac..55a25a6b2 100644 --- a/docs/assets/images/nebius-logo.svg +++ b/docs/assets/images/nebius-logo.svg @@ -1,11 +1,14 @@ - - - - + + + + + + + diff --git a/docs/assets/stylesheets/extra.css b/docs/assets/stylesheets/extra.css index 96bd24b96..fcde5e2e7 100644 --- a/docs/assets/stylesheets/extra.css +++ b/docs/assets/stylesheets/extra.css @@ -1277,7 +1277,7 @@ html .md-footer-meta.md-typeset a:is(:focus,:hover) { padding-right: 22px; } - .md-tabs__item:nth-child(1), .md-tabs__item:nth-child(4) { + .md-tabs__item:nth-child(1) { display: none; } @@ -1491,6 +1491,30 @@ html .md-footer-meta.md-typeset a:is(:focus,:hover) { .md-typeset .tabbed-set { margin: 0 -.8rem 0 -0.8rem; + overflow-x: clip; + } + + .md-typeset .tabbed-set > .tabbed-labels { + display: flex; + flex-wrap: nowrap; + width: 100%; + max-width: 100%; + overflow-x: auto; + overflow-y: hidden; + -webkit-overflow-scrolling: touch; + box-sizing: border-box; + } + + .md-typeset .tabbed-set > .tabbed-labels > label { + flex: 0 0 auto; + white-space: nowrap; + } + + .md-typeset .tabbed-set > .tabbed-content, + .md-typeset .tabbed-set > .tabbed-content > .tabbed-block { + max-width: 100%; + min-width: 0; + box-sizing: border-box; } .md-typeset div[editor-title] code { @@ -1499,8 +1523,27 @@ html .md-footer-meta.md-typeset a:is(:focus,:hover) { } .md-typeset div[editor-title] { - margin-left: -0.8rem; - margin-right: -0.8rem; + width: 100vw; + max-width: 100vw; + margin-left: calc(50% - 50vw); + margin-right: calc(50% - 50vw); + } + + .md-typeset div[editor-title] .highlight, + .md-typeset div[editor-title] pre, + .md-typeset div[editor-title] pre > code { + max-width: 100%; + min-width: 0; + box-sizing: border-box; + } + + .md-typeset div[editor-title] .highlight { + margin: 0; + } + + .md-typeset div[editor-title] pre { + overflow-x: auto; + -webkit-overflow-scrolling: touch; } [dir=ltr] .md-typeset :is(.admonition,details) { @@ -1511,8 +1554,41 @@ html .md-footer-meta.md-typeset a:is(:focus,:hover) { background: -webkit-linear-gradient(45deg, rgba(0, 42, 255, 0.1), rgb(0 114 255 / 1%), rgba(0, 42, 255, 0.05)) !important; } + [dir=ltr] .md-typeset details pre, + [dir=ltr] .md-typeset details blockquote, + [dir=ltr] .md-typeset details :is(.admonition,details, .termy) { + margin-left: 0 !important; + margin-right: 0 !important; + } + + [dir=ltr] .md-typeset details > :is(.md-typeset__scrollwrap,p,h4,h3,.tabbed-set,ul):not(.admonition-title,summary) { + padding-left: 0 !important; + padding-right: 0 !important; + } + + [dir=ltr] .md-typeset details :is(.md-typeset__scrollwrap,.highlight,.termy,div[editor-title],.tabbed-set,.md-typeset__table) { + width: calc(100% + 1.6rem); + max-width: calc(100% + 1.6rem); + margin-left: -0.8rem !important; + margin-right: -0.8rem !important; + box-sizing: border-box; + } + + [dir=ltr] .md-typeset details :is(pre,.md-typeset__scrollwrap,.tabbed-labels,.tabbed-content,.highlight,.termy,.md-typeset__table) { + max-width: 100%; + min-width: 0; + box-sizing: border-box; + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } + + [dir=ltr] .md-typeset details > .tabbed-set { + margin-left: -0.8rem !important; + margin-right: -0.8rem !important; + } + [dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels { - margin-left: 0.8rem; + margin-left: 0; padding-left: 0; } } @@ -1539,7 +1615,7 @@ html .md-footer-meta.md-typeset a:is(:focus,:hover) { .md-typeset.md-banner__inner a { color: var(--md-default-bg-color); /* border-bottom: 1.5px dotted; */ - font-weight: 600; + font-weight: 500; } .md-typeset.md-banner__inner .md-banner__button svg { diff --git a/docs/assets/stylesheets/landing.css b/docs/assets/stylesheets/landing.css index 824b0c632..7801d0345 100644 --- a/docs/assets/stylesheets/landing.css +++ b/docs/assets/stylesheets/landing.css @@ -121,13 +121,18 @@ margin-right: -4px; } -.tx-landing .highlight { +.tx-landing span.highlight { display: inline-block; border-radius: 0; padding: 1px 5px; border: 0.5px solid rgba(0, 0, 0, 0.33); } +.tx-landing .nowrap-token { + display: inline-block; + white-space: nowrap; +} + /*.tx-landing__hero_text p { font-size: 0.95rem; }*/ @@ -362,6 +367,18 @@ vertical-align: middle; } +.md-typeset.md-banner__inner .icon { + display: inline-block; + width: 12.5px; + height: 12.5px; + transition: opacity .2s ease,transform .2s ease; +} + +.md-typeset.md-banner__inner a:hover .icon { + transform: translateX(3px) +} + + .md-typeset .md-button .icon, .md-typeset .md-post__action .icon { display: inline-block; @@ -877,9 +894,24 @@ margin-bottom: 7vw; } +.tx-landing__major_feature .section { + display: flex; + flex-direction: column; +} + @media screen and (min-width: 76.1875em) { .tx-landing__major_feature .section { - display: flex; + flex-direction: row; + } +} + +@media screen and (max-width: 76.1875em) { + .tx-landing__major_feature .section .block.large { + order: 2; + } + + .tx-landing__major_feature .section .block:not(.large) { + order: 1; } } @@ -888,12 +920,14 @@ width: 100%; } -.tx-landing__major_feature .block.margin.right { - margin-right: 50px; -} +@media screen and (min-width: 76.1875em) { + .tx-landing__major_feature .block.margin.right { + margin-right: 50px; + } -.tx-landing__major_feature .block.margin.left { - margin-left: 50px; + .tx-landing__major_feature .block.margin.left { + margin-left: 50px; + } } .tx-landing__major_feature .block.large { @@ -910,12 +944,13 @@ color: #e37cff; } -#get-started-code-snippet[data-termynal] { +#get-started-code-snippet[data-termynal], +#get-started-claude-snippet[data-termynal] { font-size: 14px !important; } /*.tx-landing__trusted_by*/ [data-termynal] { - font-size: 15px; + font-size: 14px; } .tx-landing__trusted_by .termy { @@ -1020,6 +1055,130 @@ width: 600px } +.code-carousel__slides { + position: relative; + display: grid; +} + +.code-carousel__slide { + grid-area: 1 / 1; + display: none; +} + +.code-carousel__slide.active { + display: block; +} + +.code-carousel__slide > [data-termynal], +.code-carousel__slide[data-termynal] { + margin: 0 !important; +} + +.code-carousel .code-carousel__slide[editor-title] pre { + margin: 0; +} + +.code-carousel .code-carousel__slide[editor-title] pre > code { + font-size: 14px; + padding-top: 70px; +} + +@media screen and (max-width: 44.9375em) { + .tx-landing__major_feature .block.large { + width: 100%; + } + + .code-carousel { + width: 100vw; + max-width: 100vw; + margin-left: calc(50% - 50vw); + margin-right: calc(50% - 50vw); + min-width: 0; + } + + .code-carousel__slides, + .code-carousel__slide, + .code-carousel .code-carousel__slide[editor-title], + .code-carousel .code-carousel__slide[editor-title] .highlight, + .code-carousel .code-carousel__slide[editor-title] pre, + .code-carousel .code-carousel__slide[editor-title] pre > code, + .code-carousel .code-carousel__slide > [data-termynal], + .code-carousel .code-carousel__slide[data-termynal] { + max-width: 100%; + min-width: 0; + box-sizing: border-box; + } + + .code-carousel .code-carousel__slide[editor-title] .highlight { + margin: 0; + } + + .code-carousel .code-carousel__slide[editor-title] pre, + .code-carousel .code-carousel__slide > [data-termynal], + .code-carousel .code-carousel__slide[data-termynal] { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } + + .code-carousel .code-carousel__slide[editor-title] { + margin-left: 0 !important; + margin-right: 0 !important; + } +} + +.code-carousel__dots { + display: flex; + justify-content: center; + gap: 8px; + margin-top: 12px; +} + +.code-carousel__dot { + width: 10px; + height: 10px; + display: block; + flex: 0 0 auto; + border-radius: 50%; + background: transparent; + border: 0.5px solid #000; + box-sizing: border-box; + cursor: pointer; +} + +.code-carousel__dot.active { + border-color: #000; + background: #000; +} + +.code-carousel__dot:hover { + border-color: #000; +} + +.tx-landing [editor-title] pre { + visibility: hidden; +} + +.tx-landing [editor-title] .highlight pre { + visibility: visible; +} + +.supported_clouds_inline { + display: flex; + flex-wrap: wrap; + align-items: center; + gap: 12px; + margin-bottom: 1rem; +} + +.supported_clouds_inline a { + display: inline-flex; + align-items: center; +} + +.supported_clouds_inline a img { + filter: brightness(0); +} + .supported_clouds { display: grid; flex-wrap: wrap; diff --git a/docs/blog/posts/agentic-orchestration.md b/docs/blog/posts/agentic-orchestration.md index 7c7236bf4..71ad35e87 100644 --- a/docs/blog/posts/agentic-orchestration.md +++ b/docs/blog/posts/agentic-orchestration.md @@ -4,6 +4,8 @@ date: 2026-03-11 description: "Agentic engineering pulls compute discovery, provisioning, scheduling, and observability into the execution loop. Infrastructure orchestration is becoming an agent skill." slug: agentic-orchestration image: https://dstack.ai/static-assets/static-assets/images/agentic-orchestration.png +categories: + - Changelog --- # Infrastructure orchestration is an agent skill diff --git a/docs/docs/installation.md b/docs/docs/installation.md index 959cf89ce..d555f0873 100644 --- a/docs/docs/installation.md +++ b/docs/docs/installation.md @@ -195,9 +195,9 @@ Configuration is updated at ~/.dstack/config.yml This configuration is stored in `~/.dstack/config.yml`. -## Install AI agent skills +## Install agent skills -Install [skills](https://skills.sh/dstackai/dstack/dstack) to help AI agents use the `dstack` CLI and edit configuration files. +Install [`dstack` skills](https://skills.sh/dstackai/dstack/dstack) to help AI agents use the CLI and edit configuration files.
diff --git a/docs/docs/quickstart.md b/docs/docs/quickstart.md index 19331b578..4cdecae5e 100644 --- a/docs/docs/quickstart.md +++ b/docs/docs/quickstart.md @@ -6,7 +6,7 @@ description: Quick guide to creating fleets and submitting runs # Quickstart !!! info "Prerequsites" - Before using `dstack`, ensure you've [installed](installation.md) the server and the CLI. + Before using `dstack`, ensure you've [installed](installation.md) the server, CLI, and agent skills. ## Create a fleet diff --git a/docs/index.md b/docs/index.md index 53b5aaa46..799fbe2cb 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,6 +1,6 @@ --- template: home.html -title: AI container orchestration for AI teams +title: Agentic orchestration for AI infrastructure hide: - navigation - toc diff --git a/docs/overrides/home.html b/docs/overrides/home.html index a9aec887a..34762eb7d 100644 --- a/docs/overrides/home.html +++ b/docs/overrides/home.html @@ -17,31 +17,269 @@ - + {% endblock %} @@ -50,12 +288,12 @@
-

Open-source GPU-native orchestration

+

Agentic orchestration

- dstack enables AI teams to provision GPUs and - orchestrate containerized workloads across clouds, Kubernetes, or bare-metal clusters — - increasing GPU utilization while reducing vendor lock-in. + dstack is an open-source control plane for agents and engineers to provision compute and run training, inference, and sandboxes across + NVIDIA, AMD, + TPU, and Tenstorrent GPUs—on clouds, Kubernetes, and bare-metal clusters.

@@ -82,21 +320,28 @@

Open-source

- Run development, distributed training, and high-throughput inference. + Finally, an orchestration stack that doesn’t suck.
-

A unified control plane for GPU orchestration

+

A unified control plane for compute orchestration

- Managing AI infrastructure requires efficient GPU orchestration tightly integrated with open-source training and - inference frameworks. + Managing AI infrastructure requires fine-grained primitives for compute provisioning, + with native integration across GPU vendors, clouds, and open-source frameworks.

- dstack provides a unified control plane—so workloads stay portable, reproducible, and infrastructure remains interchangeable. + dstack is a unified control plane for provisioning + clusters and running training, inference, and sandboxes across clouds, Kubernetes, + and bare-metal clusters. +

+ +

+ It’s built for containerized workloads and designed for both engineers and agents. + No Kubernetes or Slurm hassle required.

@@ -118,65 +363,63 @@

A unified control plane for GPU orchestration

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
-
-

Native integration with GPU clouds

+
+

Provision compute in any GPU cloud

+ +
+ + + + + + + + + + + + +
+

- dstack natively integrates with leading GPU clouds for fast, efficient provisioning. + dstack provisions GPU VMs directly through cloud APIs—no Kubernetes needed.

- +

- It can provision and manage GPU VMs directly through cloud APIs, or operate through Kubernetes when required. + If you already have a Kubernetes cluster, dstack can manage it too. +

+ +

+ Once a backend fleet is created, dstack will let you run + dev environments, tasks, and services on this fleet.

@@ -196,28 +439,24 @@

Native integration with GPU clouds

-

Easy to use with on-prem clusters

+

Bring your existing GPU clusters

- If you already run Kubernetes on-prem, connect your cluster to dstack using the Kubernetes backend. + Have bare-metal servers or pre-provisioned VMs? Use SSH fleets to connect them to dstack.

- For bare-metal servers or VMs without Kubernetes, use SSH fleets to orchestrate GPUs directly. + Just provide SSH credentials and host addresses, and dstack creates an SSH fleet.

- +

- - SSH fleets - - - - + Once created, dstack will let you run + dev environments, tasks, and services on this fleet. +

- - Kubernetes +

+ + SSH fleets Easy to use with on-prem clusters

- +
@@ -238,19 +504,50 @@

Easy to use with on-prem clusters

- +
-

Dev environments

+

Run development environments

- Before training or deploying models, ML engineers need interactive GPU access to experiment and debug. + If you or your agent need a development environment with a GPU, let dstack create you a dev environment.

-

dstack's dev environments let you connect desktop IDEs such as VS +

If you plan to work with it yourself, you can access it using your desktop IDE such as VS Code, Cursor, and - Windsurf directly to cloud or on-prem GPUs. + Windsurf. dstack apply prints both the IDE URL and SSH command.

@@ -267,10 +564,10 @@

Dev environments

-

Single-node & distributed tasks

+

Run training or batch jobs at any scale

- Run training or batch workloads on a single GPU, or scale to multi-GPU and multi-node clusters using simple task configurations. + Run training or batch workloads on a single GPU, or scale to multi-GPU and multi-node clusters using simple task configurations. dstack automates cluster provisioning, resource allocation, and job scheduling.

@@ -288,8 +585,42 @@

Single-node & distributed tasks

- +
@@ -297,20 +628,54 @@

Single-node & distributed tasks

- +
-

Scalable model inference

+

Run high-performance model inference

With dstack, you can deploy models as secure, - auto-scaling, OpenAI-compatible endpoints, integrating with top open-source serving frameworks. + auto-scaling, OpenAI-compatible endpoints, integrating with top open-source serving frameworks + such as SGLang, vLLM, + TensorRT-LLM, or any other.

- dstack supports disaggregated prefill/decode and cache-aware routing, providing + dstack enables Disaggregated Prefill/Decode and cache-aware routing, providing production-grade, optimized inference.

@@ -331,107 +696,6 @@

Scalable model inference

-
-
-

Loved by world-class AI teams

- -
-
-
- -
-

Wah Loon Keng

- -

Sr. AI Engineer @Electronic Arts

- -

- With dstack, AI researchers at EA can spin up and scale experiments without touching - infrastructure. It supports everything from quick prototyping to multi-node training on any cloud. -

-
- -
-
- -
-

Aleksandr Movchan

- -

ML Engineer @Mobius Labs

- -

- Thanks to dstack, my team can quickly tap into affordable - GPUs and streamline our workflows - from testing and development to full-scale application deployment. -

-
- -
-
- -
-

Alvaro Bartolome

- -

ML Engineer @Argilla

- -

- With dstack it's incredibly easy to define a configuration - within a - repository - and run it without worrying about GPU availability. It lets you focus on - data and your research. -

-
- -
-
- -
-

Park Chansung

- -

ML Researcher @ETRI

- -

- Thanks to dstack, I can effortlessly access the top GPU - options across - different clouds, - saving me time and money while pushing my AI work forward. -

-
- -
-
- -
-

Eckart Burgwedel

- -

CEO @Uberchord

- -

- With dstack, running LLMs on a cloud GPU is as - easy as running a local Docker container. - It combines the ease of Docker with the auto-scaling capabilities of K8S. -

-
- -
-
- -
-

Peter Hill

- -

Co-Founder @CUDO Compute

- -

- dstack simplifies infrastructure provisioning and AI - development. - If your team is on the lookout for an AI platform, I - wholeheartedly recommend dstack. -

-
-
-
-
-

FAQ

@@ -564,6 +828,107 @@

FAQ

+
+
+

Trusted by thousands of engineers across 100+ AI-first companies

+ +
+
+
+ +
+

Wah Loon Keng

+ +

Sr. AI Engineer @Electronic Arts

+ +

+ With dstack, AI researchers at EA can spin up and scale experiments without touching + infrastructure. It supports everything from quick prototyping to multi-node training on any cloud. +

+
+ +
+
+ +
+

Aleksandr Movchan

+ +

ML Engineer @Mobius Labs

+ +

+ Thanks to dstack, my team can quickly tap into affordable + GPUs and streamline our workflows + from testing and development to full-scale application deployment. +

+
+ +
+
+ +
+

Alvaro Bartolome

+ +

ML Engineer @Argilla

+ +

+ With dstack it's incredibly easy to define a configuration + within a + repository + and run it without worrying about GPU availability. It lets you focus on + data and your research. +

+
+ +
+
+ +
+

Park Chansung

+ +

ML Researcher @ETRI

+ +

+ Thanks to dstack, I can effortlessly access the top GPU + options across + different clouds, + saving me time and money while pushing my AI work forward. +

+
+ +
+
+ +
+

Eckart Burgwedel

+ +

CEO @Uberchord

+ +

+ With dstack, running LLMs on a cloud GPU is as + easy as running a local Docker container. + It combines the ease of Docker with the auto-scaling capabilities of K8S. +

+
+ +
+
+ +
+

Peter Hill

+ +

Co-Founder @CUDO Compute

+ +

+ dstack simplifies infrastructure provisioning and AI + development. + If your team is on the lookout for an AI platform, I + wholeheartedly recommend dstack. +

+
+
+
+
+


@@ -575,10 +940,12 @@

Get started in minutes