diff --git a/.gitignore b/.gitignore
index 5e23d33..948d5bb 100644
--- a/.gitignore
+++ b/.gitignore
@@ -22,6 +22,7 @@ docs/community/sigs.md
docs/guide/guide.md
docs/guide/Installation/*.md
docs/guide/InfraProviders/*.md
+docs/usage/**/*.md
# Keep category files for sidebar configuration
!docs/guide/Installation/_category_.json
!docs/guide/InfraProviders/_category_.json
\ No newline at end of file
diff --git a/docusaurus.config.js b/docusaurus.config.js
index 3ad39ee..d585bcc 100644
--- a/docusaurus.config.js
+++ b/docusaurus.config.js
@@ -146,7 +146,7 @@ const config = {
type: "docSidebar",
sidebarId: "structureSidebar",
position: "left",
- label: "What is llm-d?",
+ label: "Architecture",
},
{
type: "docSidebar",
@@ -154,6 +154,12 @@ const config = {
position: "left",
label: "Guides",
},
+ {
+ type: "docSidebar",
+ sidebarId: "usageSidebar",
+ position: "left",
+ label: "Usage",
+ },
{
type: "docSidebar",
sidebarId: "commSidebar",
diff --git a/remote-content/remote-content.js b/remote-content/remote-content.js
index 7fe3247..5946df0 100644
--- a/remote-content/remote-content.js
+++ b/remote-content/remote-content.js
@@ -13,6 +13,9 @@ import componentSources from './remote-sources/architecture/components-generator
// Import guide remote content sources
import guideSources from './remote-sources/guide/guide-generator.js';
+// Import usage remote content sources
+import usageSources from './remote-sources/usage/usage-generator.js';
+
// Import infra providers remote content sources
import infraProviderSources from './remote-sources/infra-providers/infra-providers-generator.js';
@@ -48,6 +51,9 @@ const remoteContentPlugins = [
// Guide remote content sources (docs/guide/)
...guideSources, // Spread all dynamically generated guide sources
+ // Usage remote content sources (docs/usage/)
+ ...usageSources, // Spread all dynamically generated usage sources
+
// Infra Providers remote content sources (docs/infra-providers/)
...infraProviderSources, // Spread all dynamically generated infra provider sources
diff --git a/remote-content/remote-sources/architecture/components-generator.js b/remote-content/remote-sources/architecture/components-generator.js
index 41f8f01..d585050 100644
--- a/remote-content/remote-sources/architecture/components-generator.js
+++ b/remote-content/remote-sources/architecture/components-generator.js
@@ -49,14 +49,16 @@ function generateComponentRemoteSource(config) {
if (filename === 'README.md') {
// Generate clean names without llm-d prefix
const cleanName = name.replace(/^llm-d-/, '');
- const cleanTitle = cleanName.split('-').map(word =>
+
+ // Use custom sidebarLabel from config if provided, otherwise auto-generate
+ const displayLabel = config.sidebarLabel || cleanName.split('-').map(word =>
word.charAt(0).toUpperCase() + word.slice(1)
).join(' ');
return createContentWithSource({
- title: cleanTitle,
+ title: displayLabel,
description,
- sidebarLabel: cleanTitle,
+ sidebarLabel: displayLabel,
sidebarPosition,
filename: 'README.md',
newFilename: `${cleanName}.md`,
@@ -107,7 +109,9 @@ The llm-d ecosystem consists of multiple interconnected components that work tog
sortedComponents.forEach((component) => {
const { repoUrl } = generateRepoUrls(component);
const cleanName = component.name.replace(/^llm-d-/, '');
- const cleanTitle = cleanName.split('-').map(word =>
+
+ // Use custom sidebarLabel if provided, otherwise auto-generate
+ const displayLabel = component.sidebarLabel || cleanName.split('-').map(word =>
word.charAt(0).toUpperCase() + word.slice(1)
).join(' ');
const docLink = `./Components/${cleanName}`;
@@ -117,7 +121,7 @@ The llm-d ecosystem consists of multiple interconnected components that work tog
const versionUrl = `${repoUrl}/releases/tag/${versionTag}`;
const versionLink = `[${versionTag}](${versionUrl})`;
- content += `\n| **[${cleanTitle}](${repoUrl})** | ${component.description} | [${component.org}/${component.name}](${repoUrl}) | ${versionLink} | [View Docs](${docLink}) |`;
+ content += `\n| **[${displayLabel}](${repoUrl})** | ${component.description} | [${component.org}/${component.name}](${repoUrl}) | ${versionLink} | [View Docs](${docLink}) |`;
});
content += `
diff --git a/remote-content/remote-sources/components-data.yaml b/remote-content/remote-sources/components-data.yaml
index d75f185..55f9827 100644
--- a/remote-content/remote-sources/components-data.yaml
+++ b/remote-content/remote-sources/components-data.yaml
@@ -14,43 +14,43 @@ release:
components:
- name: llm-d-inference-scheduler
org: llm-d
+ sidebarLabel: "Inference Scheduler"
description: This scheduler that makes optimized routing decisions for inference requests to the llm-d inference framework.
- category: Core Infrastructure
sidebarPosition: 1
version: v0.3.2
- name: llm-d-modelservice
org: llm-d-incubation
+ sidebarLabel: "Model Service"
description: '`modelservice` is a Helm chart that simplifies LLM deployment on llm-d by declaratively managing Kubernetes resources for serving base models. It enables reproducible, scalable, and tunable model deployments through modular presets, and clean integration with llm-d ecosystem components (including vLLM, Gateway API Inference Extension, LeaderWorkerSet).'
- category: Infrastructure Tools
sidebarPosition: 2
version: llm-d-modelservice-v0.2.10
- name: llm-d-routing-sidecar
org: llm-d
+ sidebarLabel: "Routing Sidecar"
description: A reverse proxy redirecting incoming requests to the prefill worker specified in the x-prefiller-host-port HTTP request header.
- category: Core Infrastructure
sidebarPosition: 3
version: v0.3.0
- name: llm-d-inference-sim
org: llm-d
+ sidebarLabel: "Inference Simulator"
description: A light weight vLLM simulator emulates responses to the HTTP REST endpoints of vLLM.
- category: Development Tools
sidebarPosition: 4
version: v0.6.1
- name: llm-d-infra
org: llm-d-incubation
+ sidebarLabel: "Infrastructure"
description: A helm chart for deploying gateway and gateway related infrastructure assets for llm-d.
- category: Infrastructure Tools
sidebarPosition: 5
version: v1.3.3
- name: llm-d-kv-cache-manager
org: llm-d
+ sidebarLabel: "KV Cache Manager"
description: This repository contains the llm-d-kv-cache-manager, a pluggable service designed to enable KV-Cache Aware Routing and lay the foundation for advanced, cross-node cache coordination in vLLM-based serving platforms.
- category: Core Infrastructure
sidebarPosition: 6
version: v0.3.0
- name: llm-d-benchmark
org: llm-d
+ sidebarLabel: "Benchmark Tools"
description: This repository provides an automated workflow for benchmarking LLM inference using the llm-d stack. It includes tools for deployment, experiment execution, data collection, and teardown across multiple environments and deployment styles.
- category: Development Tools
sidebarPosition: 7
version: v0.3.0
diff --git a/remote-content/remote-sources/usage/usage-generator.js b/remote-content/remote-sources/usage/usage-generator.js
new file mode 100644
index 0000000..a630756
--- /dev/null
+++ b/remote-content/remote-sources/usage/usage-generator.js
@@ -0,0 +1,116 @@
+/**
+ * Usage Documentation Generator
+ *
+ * Automatically syncs post-deployment operational documentation from the llm-d
+ * repository's docs directory. These guides cover inference operations, gateway
+ * configuration, monitoring, and other day-to-day usage topics.
+ *
+ * Usage docs are synced from the specific release version defined in components-data.yaml,
+ * not from the main branch. This ensures documentation matches the released version.
+ */
+
+import { createContentWithSource } from '../utils.js';
+import { findRepoConfig, RELEASE_INFO } from '../component-configs.js';
+import { getRepoTransform } from '../repo-transforms.js';
+
+// Get repository configuration for the main llm-d repo
+const repoConfig = findRepoConfig('llm-d');
+
+// Use the release version from YAML instead of the branch
+const releaseVersion = RELEASE_INFO.version;
+const repoUrl = `https://github.com/${repoConfig.org}/${repoConfig.name}`;
+const sourceBaseUrl = `https://raw.githubusercontent.com/${repoConfig.org}/${repoConfig.name}/${releaseVersion}/`;
+
+// Create a custom transform that uses the release version instead of 'main'
+const transform = getRepoTransform(repoConfig.org, repoConfig.name);
+const contentTransform = (content, sourcePath) => transform(content, {
+ repoUrl,
+ branch: releaseVersion, // Use release version, not 'main'
+ org: repoConfig.org,
+ name: repoConfig.name,
+ sourcePath
+});
+
+/**
+ * Configuration for usage documentation
+ * These documents cover post-deployment operations and usage
+ */
+const USAGE_DOCS = [
+ {
+ sourceFile: 'docs/getting-started-inferencing.md',
+ title: 'Getting Started with Inference',
+ description: 'How to send inference requests to your deployed llm-d model servers',
+ sidebarLabel: 'Getting Started with Inference',
+ sidebarPosition: 1,
+ outputFile: 'getting-started-inferencing.md'
+ },
+ {
+ sourceFile: 'docs/customizing-your-gateway.md',
+ title: 'Customizing Your Gateway',
+ description: 'How to configure and customize the inference gateway',
+ sidebarLabel: 'Customizing Your Gateway',
+ sidebarPosition: 2,
+ outputFile: 'customizing-your-gateway.md'
+ },
+ {
+ sourceFile: 'docs/readiness-probes.md',
+ title: 'Readiness Probes',
+ description: 'Configuring health checks and readiness probes for model servers',
+ sidebarLabel: 'Readiness Probes',
+ sidebarPosition: 3,
+ outputFile: 'readiness-probes.md'
+ },
+ {
+ sourceFile: 'docs/monitoring/README.md',
+ title: 'Monitoring and Observability',
+ description: 'Enable metrics collection, dashboards, and monitoring for your llm-d deployment',
+ sidebarLabel: 'Monitoring and Observability',
+ sidebarPosition: 4,
+ outputFile: 'monitoring.md'
+ }
+];
+
+/**
+ * Create plugin configurations for all usage docs
+ */
+function createUsagePlugins() {
+ const plugins = [];
+
+ USAGE_DOCS.forEach((doc) => {
+ plugins.push([
+ 'docusaurus-plugin-remote-content',
+ {
+ name: `usage-${doc.outputFile.replace('.md', '')}`,
+ sourceBaseUrl,
+ outDir: 'docs/usage',
+ documents: [doc.sourceFile],
+ noRuntimeDownloads: false,
+ performCleanup: true,
+
+ modifyContent(filename, content) {
+ if (filename === doc.sourceFile) {
+ return createContentWithSource({
+ title: doc.title,
+ description: doc.description,
+ sidebarLabel: doc.sidebarLabel,
+ sidebarPosition: doc.sidebarPosition,
+ filename: doc.sourceFile,
+ newFilename: doc.outputFile,
+ repoUrl,
+ branch: releaseVersion,
+ content,
+ contentTransform
+ });
+ }
+ return undefined;
+ },
+ },
+ ]);
+ });
+
+ return plugins;
+}
+
+// Export all usage plugins
+export default createUsagePlugins();
+
diff --git a/sidebars.js b/sidebars.js
index aac074d..1c48cc6 100644
--- a/sidebars.js
+++ b/sidebars.js
@@ -18,6 +18,8 @@ const sidebars = {
// By default, Docusaurus generates a sidebar from the docs folder structure
guideSidebar: [{type: 'autogenerated', dirName: 'guide'}],
+ usageSidebar: [{type: 'autogenerated', dirName: 'usage'}],
+
structureSidebar: [{type: 'autogenerated', dirName: 'architecture'}],
commSidebar: [{type: 'autogenerated', dirName: 'community'}],
diff --git a/src/components/Install/index.js b/src/components/Install/index.js
index 2a25c02..80fa053 100644
--- a/src/components/Install/index.js
+++ b/src/components/Install/index.js
@@ -49,7 +49,7 @@ export default function Install() {
Explore llm-d!
{/* -------------------------------------------------------------------------- */}
- Complete install methods here
+ Install Guides
diff --git a/src/components/Welcome/index.js b/src/components/Welcome/index.js
index f7a2d5a..4709985 100644
--- a/src/components/Welcome/index.js
+++ b/src/components/Welcome/index.js
@@ -20,9 +20,9 @@ export default function Welcome() {
Architecture
-
+
{/* Link to install page on the docs */}
- Installation
+ Install Guides
{/* Link to Community tab */}