diff --git a/README.md b/README.md index b1e616f1b9..3a9f91bae6 100644 --- a/README.md +++ b/README.md @@ -23,18 +23,20 @@ It streamlines development, training, and inference, and is compatible with any `dstack` supports `NVIDIA`, `AMD`, `Google TPU`, and `Tenstorrent` accelerators out of the box. ## Latest news ✨ -- [2026/04] [dstack 0.20.17: PD disaggregation, Kubernetes volumes](https://github.com/dstackai/dstack/releases/tag/0.20.17) -- [2026/04] [dstack 0.20.16: Performance, SSH proxy](https://github.com/dstackai/dstack/releases/tag/0.20.16) -- [2026/03] [dstack 0.20.13: Exports, Templates](https://github.com/dstackai/dstack/releases/tag/0.20.13) -- [2026/02] [dstack 0.20.12: Crusoe](https://github.com/dstackai/dstack/releases/tag/0.20.12) -- [2026/02] [dstack 0.20.8: Skills](https://github.com/dstackai/dstack/releases/tag/0.20.8) -- [2025/12] [dstack 0.20.0: Fleet-first UX, Events, and more](https://github.com/dstackai/dstack/releases/tag/0.20.0) +- [2026/08] [dstack 0.21.0: Pydantic v2, Gateway replicas](https://github.com/dstackai/dstack/releases/tag/0.21.0) +- [2026/07] [dstack 0.20.29: Presets — agent-driven inference optimization (experimental)](https://dstack.ai/docs/concepts/presets/) +- [2026/07] [dstack 0.20.27: Slurm backend](https://github.com/dstackai/dstack/releases/tag/0.20.27) +- [2026/05] [dstack 0.20.21: Kubernetes multiple clusters](https://github.com/dstackai/dstack/releases/tag/0.20.21) +- [2026/05] [dstack 0.20.20: NVIDIA Dynamo integration](https://github.com/dstackai/dstack/releases/tag/0.20.20) +- [2026/04] [dstack 0.20.17: Kubernetes volumes](https://github.com/dstackai/dstack/releases/tag/0.20.17) +- [2026/02] [dstack 0.20.10: PD disaggregation support](https://github.com/dstackai/dstack/releases/tag/0.20.10) +- [2026/01] [dstack 0.20.7: Replica groups](https://github.com/dstackai/dstack/releases/tag/0.20.7) ## How does it work? - - + + ### Launch the server @@ -101,11 +103,12 @@ AI agents like Claude, Codex, and Cursor can now create and manage fleets and su `dstack` supports the following configurations: -* [Fleets](https://dstack.ai/docs/concepts/fleets) — for managing cloud and on-prem clusters -* [Dev environments](https://dstack.ai/docs/concepts/dev-environments) — for interactive development using a desktop IDE -* [Tasks](https://dstack.ai/docs/concepts/tasks) — for scheduling jobs (incl. distributed jobs) or running web apps -* [Services](https://dstack.ai/docs/concepts/services) — for deployment of models and web apps (with auto-scaling and authorization) -* [Volumes](https://dstack.ai/docs/concepts/volumes) — for managing persisted volumes +* [Fleets](https://dstack.ai/docs/concepts/fleets) — Provision and manage clusters across clouds, Kubernetes, and on-prem +* [Dev environments](https://dstack.ai/docs/concepts/dev-environments) — Launch dev environments to be accessed by agents or from your IDE +* [Tasks](https://dstack.ai/docs/concepts/tasks) — Run training, batch or other jobs across a single node or clusters +* [Services](https://dstack.ai/docs/concepts/services) — Deploy model inference as secure and scalable endpoints +* [Presets](https://dstack.ai/docs/concepts/presets) — Agent-driven inference optimization (experimental) +* [Volumes](https://dstack.ai/docs/concepts/volumes) — Managing instance and network volumes for persisting data Configuration can be defined as YAML files within your repo. diff --git a/mkdocs.yml b/mkdocs.yml index efde929f51..89cd591efc 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -297,9 +297,9 @@ nav: - Dev environments: docs/concepts/dev-environments.md - Tasks: docs/concepts/tasks.md - Services: docs/concepts/services.md - - Volumes: docs/concepts/volumes.md + - Presets: docs/concepts/presets.md - More: - - Presets: docs/concepts/presets.md + - Volumes: docs/concepts/volumes.md - Gateways: docs/concepts/gateways.md - Secrets: docs/concepts/secrets.md - Projects: docs/concepts/projects.md diff --git a/mkdocs/assets/images/arch-logos/amd.webp b/mkdocs/assets/images/arch-logos/amd.webp deleted file mode 100644 index a53f88bfc5..0000000000 Binary files a/mkdocs/assets/images/arch-logos/amd.webp and /dev/null differ diff --git a/mkdocs/assets/images/arch-logos/aws.svg b/mkdocs/assets/images/arch-logos/aws.svg deleted file mode 100644 index 80192a12d8..0000000000 --- a/mkdocs/assets/images/arch-logos/aws.svg +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - diff --git a/mkdocs/assets/images/arch-logos/deepseek.svg b/mkdocs/assets/images/arch-logos/deepseek.svg deleted file mode 100644 index 3c9d00e9b0..0000000000 --- a/mkdocs/assets/images/arch-logos/deepseek.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/mkdocs/assets/images/arch-logos/docker.svg b/mkdocs/assets/images/arch-logos/docker.svg deleted file mode 100644 index dfbafd12bb..0000000000 --- a/mkdocs/assets/images/arch-logos/docker.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/mkdocs/assets/images/arch-logos/gcp.svg b/mkdocs/assets/images/arch-logos/gcp.svg deleted file mode 100644 index b8478f1f93..0000000000 --- a/mkdocs/assets/images/arch-logos/gcp.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/mkdocs/assets/images/arch-logos/glm.svg b/mkdocs/assets/images/arch-logos/glm.svg deleted file mode 100644 index 0638057dbb..0000000000 --- a/mkdocs/assets/images/arch-logos/glm.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/mkdocs/assets/images/arch-logos/huggingface.svg b/mkdocs/assets/images/arch-logos/huggingface.svg deleted file mode 100644 index cab717b750..0000000000 --- a/mkdocs/assets/images/arch-logos/huggingface.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - Huggingface Streamline Icon: https://streamlinehq.com - - Hugging Face - - diff --git a/mkdocs/assets/images/arch-logos/kimi.svg b/mkdocs/assets/images/arch-logos/kimi.svg deleted file mode 100644 index 8f95bd7fc8..0000000000 --- a/mkdocs/assets/images/arch-logos/kimi.svg +++ /dev/null @@ -1 +0,0 @@ -Kimi diff --git a/mkdocs/assets/images/arch-logos/kubernetes.svg b/mkdocs/assets/images/arch-logos/kubernetes.svg deleted file mode 100644 index 140c74aab4..0000000000 --- a/mkdocs/assets/images/arch-logos/kubernetes.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - Logo Kubernetes Streamline Icon: https://streamlinehq.com - - - - - - - - - - - - - diff --git a/mkdocs/assets/images/arch-logos/lambda.svg b/mkdocs/assets/images/arch-logos/lambda.svg deleted file mode 100644 index 6143f02db0..0000000000 --- a/mkdocs/assets/images/arch-logos/lambda.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/mkdocs/assets/images/arch-logos/meta.svg b/mkdocs/assets/images/arch-logos/meta.svg deleted file mode 100644 index ac4cdd3f5a..0000000000 --- a/mkdocs/assets/images/arch-logos/meta.svg +++ /dev/null @@ -1,19 +0,0 @@ - - -Logo of Meta Platforms -- Graphic created by Detmar Owen - - - - - - - - - - - - - - - - diff --git a/mkdocs/assets/images/arch-logos/nebius.svg b/mkdocs/assets/images/arch-logos/nebius.svg deleted file mode 100644 index 55a25a6b2c..0000000000 --- a/mkdocs/assets/images/arch-logos/nebius.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/mkdocs/assets/images/arch-logos/nvidia.svg b/mkdocs/assets/images/arch-logos/nvidia.svg deleted file mode 100644 index 7514d0ed39..0000000000 --- a/mkdocs/assets/images/arch-logos/nvidia.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/mkdocs/assets/images/arch-logos/pytorch.svg b/mkdocs/assets/images/arch-logos/pytorch.svg deleted file mode 100644 index 9dcafc39af..0000000000 --- a/mkdocs/assets/images/arch-logos/pytorch.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - diff --git a/mkdocs/assets/images/arch-logos/qwen.svg b/mkdocs/assets/images/arch-logos/qwen.svg deleted file mode 100644 index 3b4f0ee9d9..0000000000 --- a/mkdocs/assets/images/arch-logos/qwen.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/mkdocs/assets/images/arch-logos/runpod.svg b/mkdocs/assets/images/arch-logos/runpod.svg deleted file mode 100644 index f6fab58239..0000000000 --- a/mkdocs/assets/images/arch-logos/runpod.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/mkdocs/assets/images/arch-logos/sglang.svg b/mkdocs/assets/images/arch-logos/sglang.svg deleted file mode 100644 index a82fa0aeb1..0000000000 --- a/mkdocs/assets/images/arch-logos/sglang.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/mkdocs/assets/images/arch-logos/tenstorrent.svg b/mkdocs/assets/images/arch-logos/tenstorrent.svg deleted file mode 100644 index 570923ae35..0000000000 --- a/mkdocs/assets/images/arch-logos/tenstorrent.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - diff --git a/mkdocs/assets/images/arch-logos/vllm.svg b/mkdocs/assets/images/arch-logos/vllm.svg deleted file mode 100644 index 07eaef09ca..0000000000 --- a/mkdocs/assets/images/arch-logos/vllm.svg +++ /dev/null @@ -1 +0,0 @@ -vLLM diff --git a/mkdocs/assets/stylesheets/cloudscape-docs.css b/mkdocs/assets/stylesheets/cloudscape-docs.css index d7b0fb39f5..298a0f0ee7 100644 --- a/mkdocs/assets/stylesheets/cloudscape-docs.css +++ b/mkdocs/assets/stylesheets/cloudscape-docs.css @@ -2058,163 +2058,23 @@ } /* ===== Architecture diagram (docs index) ===================================== - Ported 1:1 from the new landing's (website/src/components/ - ArchitectureDiagram.tsx + .arch-* in website/src/styles.css). Keep the two in sync — if the - landing diagram changes, update this block AND the HTML in mkdocs/docs/index.md. - Everything is in cqw (resolved against .arch-diagram-wrap) so it scales like the old SVG. - Logos are source SVG/webp used as a currentColor mask → monochrome + theme-adaptive. */ -.arch-diagram-wrap { - container-type: inline-size; + Prebuilt light/dark SVG pair served from the dstackai/static-assets repo + (static-assets/images/dstack-architecture-diagram*.svg), shared with the landing + and the README. The pair swaps with the docs theme. */ +/* `.md-typeset img` (0,1,1) beats a bare `.arch-svg` (0,1,0), so qualify the selectors + to out-specify Material's `img { height: auto; max-width: 100% }`. */ +.md-typeset img.arch-svg { + display: block; width: 100%; max-width: 700px; margin: 1em 0; } -/* The cells' dotted outline is an ; Material's `.md-typeset svg { height:auto; max-width:100% }` - would collapse it, so force it to fill the cell (it's position:absolute inset:0). */ -.md-typeset .arch-dash { - width: 100% !important; - height: 100% !important; - max-width: none !important; -} -.arch-diagram { - display: flex; - flex-direction: column; - gap: 2.66cqw; - width: 100%; - color: var(--cs-text); - --arch-border-width: max(1px, 0.22cqw); - --arch-gradient: var(--cs-text); -} -.arch-dash { - position: absolute; - inset: 0; - width: 100%; - height: 100%; - overflow: visible; - pointer-events: none; -} -.arch-dash rect { - x: 0.25px; - y: 0.25px; - width: calc(100% - 0.5px); - height: calc(100% - 0.5px); - rx: 12px; - fill: none; - stroke: var(--arch-dash-stroke, var(--cs-text)); - stroke-width: 0.5px; - stroke-dasharray: 1 0; - stroke-linecap: butt; -} -.arch-row { - display: grid; - grid-template-columns: 2.54fr 1fr 1fr; - gap: 1.72cqw; -} -.arch-cell { - position: relative; - display: flex; - align-items: center; - gap: 1.55cqw; - min-height: 9.83cqw; - padding: 0 2cqw; - border-radius: 12px; -} -.arch-cell--center { justify-content: center; } -.arch-cell--center .arch-cell__label { white-space: normal; text-align: center; } -.arch-cell--full { min-height: 9.83cqw; } -.arch-cell--gpu { justify-content: space-between; } -.arch-cell--model { grid-column: span 2; justify-content: space-between; } -.arch-cell--hw { justify-content: center; } -.arch-cell--hw > .arch-cell__label { position: absolute; left: 2cqw; } -.arch-cell__label { - font-size: 16px; /* fixed (not cqw-scaled) to match the body text */ - font-weight: 500; - line-height: 1.2; - white-space: nowrap; -} -.arch-orchestration { - display: flex; - flex-direction: column; - align-items: center; - gap: 3cqw; - padding: 3.2cqw 3.2cqw 3.48cqw; - border-radius: 1.6cqw; - background: var(--arch-gradient); - color: var(--cs-bg); -} -.arch-orchestration__title { display: flex; align-items: center; justify-content: space-between; gap: 2cqw; width: 100%; font-size: 16px; font-weight: 500; } -.arch-orchestration__cells { - display: grid; - grid-template-columns: 1fr 1.34fr 1fr 1fr 1fr; - gap: 1.26cqw; - width: 100%; -} -.arch-subcell { - position: relative; - display: flex; - align-items: center; - justify-content: center; - min-height: 5.54cqw; - padding: 0 0.8cqw; - border-radius: 12px; - text-align: center; - font-size: 2.25cqw; - font-weight: 500; - line-height: 1.2; - --arch-dash-stroke: var(--cs-bg); +.md-typeset img.arch-svg--dark { + display: none; } -.arch-logos { - display: inline-flex; - align-items: center; - gap: 1.15cqw; - flex-wrap: nowrap; +[data-md-color-scheme="slate"] .md-typeset img.arch-svg--light { + display: none; } -.arch-logo { - display: inline-block; - background-color: currentColor; - -webkit-mask-repeat: no-repeat; - mask-repeat: no-repeat; - -webkit-mask-position: center; - mask-position: center; - -webkit-mask-size: contain; - mask-size: contain; -} -/* Per-logo height + aspect (from each source's viewBox) + the mask image (relative to this - stylesheet → /assets/images/arch-logos/). */ -.arch-logo--aws { height: 4.05cqw; aspect-ratio: 304 / 182; -webkit-mask-image: url(../images/arch-logos/aws.svg); mask-image: url(../images/arch-logos/aws.svg); } -.arch-logo--gcp { height: 4.55cqw; aspect-ratio: 256 / 206; -webkit-mask-image: url(../images/arch-logos/gcp.svg); mask-image: url(../images/arch-logos/gcp.svg); } -.arch-logo--lambda { height: 4.9cqw; aspect-ratio: 1; -webkit-mask-image: url(../images/arch-logos/lambda.svg); mask-image: url(../images/arch-logos/lambda.svg); } -.arch-logo--nebius { height: 4.6cqw; aspect-ratio: 1; -webkit-mask-image: url(../images/arch-logos/nebius.svg); mask-image: url(../images/arch-logos/nebius.svg); } -.arch-logo--runpod { height: 5.04cqw; aspect-ratio: 120 / 130; -webkit-mask-image: url(../images/arch-logos/runpod.svg); mask-image: url(../images/arch-logos/runpod.svg); } -.arch-logo--kubernetes { height: 4.98cqw; aspect-ratio: 1; -webkit-mask-image: url(../images/arch-logos/kubernetes.svg); mask-image: url(../images/arch-logos/kubernetes.svg); } -.arch-logo--pytorch { height: 5.2cqw; aspect-ratio: 90.3 / 109.1; -webkit-mask-image: url(../images/arch-logos/pytorch.svg); mask-image: url(../images/arch-logos/pytorch.svg); } -.arch-logo--vllm { height: 4.8cqw; aspect-ratio: 1; -webkit-mask-image: url(../images/arch-logos/vllm.svg); mask-image: url(../images/arch-logos/vllm.svg); } -.arch-logo--sglang { height: 4.8cqw; aspect-ratio: 596 / 683; -webkit-mask-image: url(../images/arch-logos/sglang.svg); mask-image: url(../images/arch-logos/sglang.svg); } -.arch-logo--meta { height: 3.7cqw; aspect-ratio: 287.56 / 191; -webkit-mask-image: url(../images/arch-logos/meta.svg); mask-image: url(../images/arch-logos/meta.svg); } -.arch-logo--huggingface { height: 5.1cqw; aspect-ratio: 1; -webkit-mask-image: url(../images/arch-logos/huggingface.svg); mask-image: url(../images/arch-logos/huggingface.svg); } -.arch-logo--nvidia { height: 3.7cqw; aspect-ratio: 271.7 / 179.7; -webkit-mask-image: url(../images/arch-logos/nvidia.svg); mask-image: url(../images/arch-logos/nvidia.svg); } -.arch-logo--amd { height: 4.6cqw; aspect-ratio: 1600 / 1408; -webkit-mask-image: url(../images/arch-logos/amd.webp); mask-image: url(../images/arch-logos/amd.webp); } -.arch-logo--tenstorrent { height: 4.8cqw; aspect-ratio: 170 / 169; -webkit-mask-image: url(../images/arch-logos/tenstorrent.svg); mask-image: url(../images/arch-logos/tenstorrent.svg); } -.arch-logo--tpu { height: 4.2cqw; aspect-ratio: 256 / 206; -webkit-mask-image: url(../images/arch-logos/gcp.svg); mask-image: url(../images/arch-logos/gcp.svg); } -.arch-logo--glm { height: 3.4cqw; aspect-ratio: 19 / 16; -webkit-mask-image: url(../images/arch-logos/glm.svg); mask-image: url(../images/arch-logos/glm.svg); } -.arch-logo--deepseek { height: 4.8cqw; aspect-ratio: 1; transform: translateY(-1px); -webkit-mask-image: url(../images/arch-logos/deepseek.svg); mask-image: url(../images/arch-logos/deepseek.svg); } -.arch-logo--qwen { height: 4.9cqw; aspect-ratio: 1; transform: translateY(1px); -webkit-mask-image: url(../images/arch-logos/qwen.svg); mask-image: url(../images/arch-logos/qwen.svg); } -.arch-logo--kimi { height: 4.3cqw; aspect-ratio: 1; -webkit-mask-image: url(../images/arch-logos/kimi.svg); mask-image: url(../images/arch-logos/kimi.svg); } -.arch-logo--docker { height: 2.8cqw; aspect-ratio: 122.88 / 88.17; -webkit-mask-image: url(../images/arch-logos/docker.svg); mask-image: url(../images/arch-logos/docker.svg); } -/* Reflow to 2-up below ~480px (was 360px): the cell labels are a fixed 16px, so on a narrow - phone the 3-up grid can't shrink them and they overflow — switch to 2-up sooner. */ -@container (max-width: 480px) { - .arch-diagram { gap: 12px; } - .arch-row { grid-template-columns: 1fr 1fr; gap: 8px; } - .arch-row > :first-child { grid-column: 1 / -1; } - .arch-cell { min-height: 52px; padding: 10px 14px; gap: 12px; border-radius: 8px; } - .arch-cell__label { font-size: 16px; white-space: normal; } - .arch-cell--hw { justify-content: space-between; } - .arch-cell--hw > .arch-cell__label { position: static; } - .arch-orchestration { gap: 12px; padding: 16px; border-radius: 12px; } - .arch-orchestration__title { font-size: 15px; } - .arch-orchestration__cells { grid-template-columns: repeat(2, 1fr); gap: 8px; } - .arch-subcell { min-height: 44px; font-size: 13px; border-radius: 7px; } - .arch-logos { gap: 12px; } - .arch-logo { height: 22px !important; } +[data-md-color-scheme="slate"] .md-typeset img.arch-svg--dark { + display: block; } diff --git a/mkdocs/docs/index.md b/mkdocs/docs/index.md index e64a0f264c..a5df3e1fed 100644 --- a/mkdocs/docs/index.md +++ b/mkdocs/docs/index.md @@ -14,10 +14,13 @@ It streamlines development, training, and inference, and is compatible with any ## How does it work? - -
+ +dstack architecture: an orchestration layer between AI frameworks and models on top, and GPU clouds, Kubernetes, on-prem clusters, and hardware below. +dstack architecture: an orchestration layer between AI frameworks and models on top, and GPU clouds, Kubernetes, on-prem clusters, and hardware below. ### Set up the server @@ -27,11 +30,12 @@ It streamlines development, training, and inference, and is compatible with any `dstack` supports the following configurations: -* [Fleets](concepts/fleets.md) — for managing cloud and on-prem clusters -* [Dev environments](concepts/dev-environments.md) — for interactive development using a desktop IDE -* [Tasks](concepts/tasks.md) — for scheduling jobs, incl. distributed ones (or running web apps) -* [Services](concepts/services.md) — for deploying models (or web apps) -* [Volumes](concepts/volumes.md) — for managing network volumes (to persist data) +* [Fleets](concepts/fleets.md) — Provision and manage clusters across clouds, Kubernetes, and on-prem +* [Dev environments](concepts/dev-environments.md) — Launch dev environments to be accessed by agents or from your IDE +* [Tasks](concepts/tasks.md) — Run training, batch or other jobs across a single node or clusters +* [Services](concepts/services.md) — Deploy model inference as secure and scalable endpoints +* [Presets](concepts/presets.md) — Agent-driven inference optimization (experimental) +* [Volumes](concepts/volumes.md) — Managing instance and network volumes for persisting data Configuration can be defined as YAML files within your repo. diff --git a/mkdocs/overrides/main.html b/mkdocs/overrides/main.html index 123b760be8..c5f2b6b225 100644 --- a/mkdocs/overrides/main.html +++ b/mkdocs/overrides/main.html @@ -228,7 +228,7 @@ {% endblock %} {% block announce %} -Infrastructure orchestration is an agent skill +Presets: agent-driven inference optimization {% endblock %} {# Footer is rendered INSIDE .md-content (above, after the article) — NOT as a full-width sibling — diff --git a/website/src/components/ArchitectureDiagram.tsx b/website/src/components/ArchitectureDiagram.tsx index a0abca02c9..f8e60fe1ae 100644 --- a/website/src/components/ArchitectureDiagram.tsx +++ b/website/src/components/ArchitectureDiagram.tsx @@ -7,10 +7,11 @@ import { DashedBorder } from './DashedBorder'; // lives in CSS (.arch-logo--); only the mask image URL is set inline, since it must carry // the runtime base path (asset()). // -// NOTE: This diagram is mirrored in the docs: mkdocs/docs/index.md ("How does it work?") embeds the -// same markup, with the styles ported to mkdocs/assets/stylesheets/cloudscape-docs.css (.arch-*) -// and the logos copied to mkdocs/assets/images/arch-logos/. If you change this component (markup, -// logos, or sizing), update the docs copy too so the two stay in sync. +// NOTE: This component is the SOURCE for the static SVG pair published in +// https://github.com/dstackai/static-assets (static-assets/images/dstack-architecture-diagram*.svg, +// served via https://dstack.ai/static-assets/static-assets/images/) and embedded by the docs +// index ("How does it work?") and the README. If you change this component (markup, logos, or +// sizing), regenerate the SVGs from it and overwrite them in place — the URLs stay stable. type Logo = { key: string; label: string; src?: string; initials?: string }; diff --git a/website/src/components/SiteBanner.tsx b/website/src/components/SiteBanner.tsx index d092e8a4eb..4264ddc216 100644 --- a/website/src/components/SiteBanner.tsx +++ b/website/src/components/SiteBanner.tsx @@ -1,10 +1,10 @@ -import { BLOG_URL } from '../routes'; +import { DOCS_URL } from '../routes'; // Top announcement banner, mirroring the one on the MkDocs docs site. It sits above the top // nav; the two stick to the top together (see .site-header). Update the copy/href here when // the announcement changes. -const BANNER_TEXT = 'Infrastructure orchestration is an agent skill'; -const BANNER_HREF = `${BLOG_URL}/agentic-orchestration/`; +const BANNER_TEXT = 'Presets: agent-driven inference optimization'; +const BANNER_HREF = `${DOCS_URL}/concepts/presets/`; export function SiteBanner() { return (