{"id":40832113,"url":"https://github.com/llm-d/llm-d.github.io","last_synced_at":"2026-01-21T22:26:49.435Z","repository":{"id":294724827,"uuid":"982427563","full_name":"llm-d/llm-d.github.io","owner":"llm-d","description":"Website for llm-d: This repository builds the website seen at llm-d.ai","archived":false,"fork":false,"pushed_at":"2026-01-13T18:00:21.000Z","size":26383,"stargazers_count":11,"open_issues_count":2,"forks_count":21,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-01-13T20:23:15.615Z","etag":null,"topics":["ai","documentation","docusaurus","opensource"],"latest_commit_sha":null,"homepage":"https://llm-d.ai","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/llm-d.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-05-12T21:43:31.000Z","updated_at":"2026-01-13T18:00:38.000Z","dependencies_parsed_at":"2025-07-14T18:27:07.656Z","dependency_job_id":"e8f05bbc-df30-4659-bc98-c768bb8dc00b","html_url":"https://github.com/llm-d/llm-d.github.io","commit_stats":null,"previous_names":["llm-d/llm-d.github.io"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/llm-d/llm-d.github.io","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/llm-d%2Fllm-d.github.io","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/llm-d%2Fllm-d.github.io/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/llm-d%2Fllm-d.github.io/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/llm-d%2Fllm-d.github.io/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/llm-d","download_url":"https://codeload.github.com/llm-d/llm-d.github.io/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/llm-d%2Fllm-d.github.io/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28645548,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-21T21:29:11.980Z","status":"ssl_error","status_checked_at":"2026-01-21T21:24:31.872Z","response_time":86,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","documentation","docusaurus","opensource"],"created_at":"2026-01-21T22:26:49.358Z","updated_at":"2026-01-21T22:26:49.430Z","avatar_url":"https://github.com/llm-d.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# llm-d Website Repository\n\nThis website is built using [Docusaurus](https://docusaurus.io/), a modern static website generator.\n\nSite previews are powered by Netlify and can be viewed in the specific PR.\n\nIf you spot any errors or omissions in the site, please open an issue at [github.com/llm-d/llm-d.github.io](https://github.com/llm-d/llm-d.github.io/issues).\n\n## 📋 Documentation Types\n\nThis repository contains two types of documentation:\n\n1. **Local Documentation** - Written directly in this repository (blog posts, landing pages, etc.)\n2. **Remote Synced Content** - Automatically synced from other llm-d repositories during build\n\nMost technical documentation is automatically synced from the `main` branch of source repositories to ensure accuracy and consistency:\n- **Architecture docs** (`/docs/architecture/`) - Synced from llm-d/llm-d repository\n- **User guides** (`/docs/guide/`) - Synced from the main llm-d repository\n- **Component docs** (`/docs/architecture/Components/`) - Synced from individual component repos\n- **Community docs** (`/docs/community/`) - Synced from the main repository\n- **Latest Release page** (`/docs/architecture/latest-release.md`) - Generated from `components-data.yaml`\n\nFiles with remote content show a \"Content Source\" banner at the bottom with links to edit the original source.\n\n## 🔄 Remote Content System\n\n### How It Works\n\nThe remote content system automatically downloads and syncs content from GitHub repositories during the build process:\n\n1. **Static Configuration** - `remote-content/remote-sources/components-data.yaml` contains:\n   - Release version information (displayed on the Latest Release page)\n   - List of all components with their descriptions and version tags\n   - Repository locations and metadata\n   - **Note:** All content syncs from `main` branch; version tags are only used for display on the Latest Release page\n\n2. **Content Sources** - Individual files in `remote-content/remote-sources/` define:\n   - Which repositories to sync from\n   - Where to place the content in the docs\n   - How to transform the content (fix links, add frontmatter, etc.)\n\n3. **Build Process** - During `npm run build`:\n   - Downloads content from the configured GitHub repositories\n   - Applies transformations (fixes relative links, images, adds source attribution)\n   - Generates final documentation with proper navigation and styling\n\n**Key Feature:** The build process only reads from the committed YAML file - it never makes write operations or modifies your configuration.\n\n### File Structure\n\n```\nremote-content/\n├── remote-content.js                    # Main entry point\n└── remote-sources/\n    ├── components-data.yaml            # 🎯 Release and component data (edit this!)\n    ├── sync-release.mjs                # Script to update YAML from GitHub\n    ├── component-configs.js            # Utilities to load YAML data\n    ├── utils.js                        # Content transformation helpers\n    ├── repo-transforms.js              # Link/image fixing logic\n    ├── example-readme.js.template     # Template for adding new content\n    ├── architecture/                   # → docs/architecture/\n    │   ├── architecture-main.js\n    │   └── components-generator.js    # Auto-generates component pages\n    ├── guide/                          # → docs/guide/\n    │   └── guide-generator.js         # Auto-generates guide pages\n    └── community/                      # → docs/community/\n        ├── code-of-conduct.js\n        ├── contribute.js\n        ├── security.js\n        └── sigs.js\n```\n\n### Cutting a New Release\n\nWhen a new llm-d release is published, update the documentation site:\n\n**Step 1: Update the YAML file**\n```bash\ncd remote-content/remote-sources\nnode sync-release.mjs              # Fetches latest release from GitHub API\ngit diff components-data.yaml      # Review the changes\n```\n\nThis script:\n- Queries the [GitHub Releases API](https://github.com/llm-d/llm-d/releases/latest)\n- Updates release version, date, and URL in the YAML\n- Extracts component descriptions from release notes\n- Updates component versions in the YAML\n\n**Step 2: Commit and deploy**\n```bash\ngit add components-data.yaml\ngit commit -m \"Update to llm-d vX.Y.Z\"\ngit push                           # Triggers automatic deployment\n```\n\n**What gets updated:**\n- Release version, date, and URLs shown on the **Latest Release** page\n- Component descriptions and version tags displayed in the component table\n- **Note:** All documentation content (architecture, guides, components, community) syncs from the `main` branch\n- The version tags in YAML are only used to render the Latest Release page showing what versions are in the release\n\n### Content Syncing Strategy\n\n**All documentation syncs from the `main` branch** of source repositories. This ensures documentation always reflects the latest development state.\n\n**Content synced from `main`:**\n- **Architecture** (`docs/architecture/architecture.mdx`) - Main llm-d README\n- **Component docs** (`docs/architecture/Components/*.md`) - Individual component READMEs\n- **Guides** (`docs/guide/`) - Installation and usage guides\n- **Community docs** (`docs/community/`) - Contributing guidelines, Code of Conduct, Security Policy, SIGs\n- **Infrastructure Providers** (`docs/guide/InfraProviders/`)\n- **Usage docs** (`docs/usage/`)\n\n**Generated from YAML (not synced):**\n- **Latest Release page** (`docs/architecture/latest-release.md`) - Generated from `components-data.yaml`\n  - Shows release version, date, and link to GitHub release\n  - Displays component version table with links to specific release tags\n  - This is the only place version tags from YAML are used\n\n**How it works:**\n- `generateRepoUrls()` in `component-configs.js` always returns `main` as the branch for content syncing\n- Version tags in `components-data.yaml` are used by `components-generator.js` to render the Latest Release page\n- The `sync-release.mjs` script updates YAML with release metadata from GitHub, but this doesn't affect which branch content syncs from\n\n### Testing content from a feature branch\n\nSince all content syncs from `main`, to test content from a different branch you need to temporarily modify the `generateRepoUrls()` function in `remote-content/remote-sources/component-configs.js`:\n\n```javascript\n// Change this line temporarily:\nconst ref = 'main';\n// To your feature branch:\nconst ref = 'your-feature-branch';\n```\n\nRun `npm start` or `npm run build` to pull the branch content. **Remember to change it back to `'main'` before committing.**\n\n### Supporting remote guides from nested directories\n\nDynamic guides are configured in `remote-content/remote-sources/guide/guide-generator.js`. Each entry in `DYNAMIC_GUIDES` points at a `README.md` inside `guides/\u003cdirName\u003e/` in the main repo. By default, the generator mirrors the directory structure when it creates docs: `dirName: 'some-folder/sub-guide'` produces `some-folder/sub-guide.md` under `docs/guide/Installation`, and the sidebar groups pages under a folder.\n\nIf you want to surface a nested source as a top-level page, add an optional `targetFilename` to the guide definition. Example:\n\n```javascript\n{\n  dirName: 'prefix-cache-storage/cpu',\n  title: 'Prefix Cache Storage - CPU',\n  description: '…',\n  sidebarPosition: 5,\n  targetFilename: 'prefix-cache-storage-cpu.md'\n}\n```\n\nWith `targetFilename`, the generator still reads `guides/prefix-cache-storage/cpu/README.md`, but it writes the output to `docs/guide/Installation/prefix-cache-storage-cpu.md`, letting the page appear alongside other top-level guides. Leave `targetFilename` out to keep the default nested behavior.\n\n**Manual updates:** You can also manually edit `components-data.yaml` if needed.\n\n### Adding New Components\n\nTo add a new component to the documentation:\n\n**Edit `remote-content/remote-sources/components-data.yaml`:**\n```yaml\ncomponents:\n  # ... existing components\n  - name: llm-d-your-component\n    org: llm-d\n    sidebarLabel: Your Component    # Display name in sidebar\n    description: Description of your component\n    sidebarPosition: 8\n    version: v1.0.0                 # Version tag shown on Latest Release page\n```\n\nThe component README will be synced from `main` branch and appear at `/docs/architecture/Components/your-component.md` on the next build. The version tag is only used for display on the Latest Release page.\n\n### Adding New Content Sources\n\nTo add other remote content (non-component):\n\n1. **Copy the template:**\n   ```bash\n   cp remote-content/remote-sources/example-readme.js.template \\\n      remote-content/remote-sources/DIRECTORY/your-content.js\n   ```\n   Choose directory: `architecture/`, `guide/`, or `community/`\n\n2. **Edit the configuration** - Update placeholders:\n   - Repository name\n   - Output directory\n   - Page title and description\n   - Sidebar position\n\n3. **Import in `remote-content/remote-content.js`:**\n   ```javascript\n   import yourContent from './remote-sources/DIRECTORY/your-content.js';\n   \n   const remoteContentPlugins = [\n     // ... existing sources\n     yourContent,\n   ];\n   ```\n\n4. **Test:**\n   ```bash\n   npm start\n   ```\n\n### Making Changes to Synced Content\n\n**For synced content (files with \"Content Source\" banners):**\n- Click the \"edit the source file\" link in the Content Source banner\n- Make changes in the source repository\n- Changes will automatically sync to this website during the next build\n\n**For local website content:**\n- Follow the standard pull request process below\n\n### Creating Tabs in Remote Content\n\nWhen writing documentation in source repositories (like llm-d/llm-d) that will be synced to this Docusaurus site, you can create tabbed content using HTML comment markers. These are invisible in GitHub but will be transformed into Docusaurus tabs during the build.\n\n**In your GitHub README:**\n```markdown\n### Deploy Model Servers\n\n\u003c!-- TABS:START --\u003e\n\u003c!-- TAB:GKE (H200):default --\u003e\nkubectl apply -k ./manifests/modelserver/gke -n ${NAMESPACE}\n\n\u003c!-- TAB:GKE (B200) --\u003e\nkubectl apply -k ./manifests/modelserver/gke-a4 -n ${NAMESPACE}\n\n\u003c!-- TAB:CoreWeave --\u003e\nkubectl apply -k ./manifests/modelserver/coreweave -n ${NAMESPACE}\n\n\u003c!-- TABS:END --\u003e\n```\n\n**Key points:**\n- Use `\u003c!-- TABS:START --\u003e` and `\u003c!-- TABS:END --\u003e` to wrap the entire tabbed section\n- Use `\u003c!-- TAB:Label --\u003e` before each tab's content\n- Add `:default` after the label to make it the default selected tab (e.g., `\u003c!-- TAB:GKE:default --\u003e`)\n- **No imports needed** - the transformation automatically adds them\n- On GitHub, the HTML comments are invisible, showing clean markdown\n- On Docusaurus, these are transformed into proper `\u003cTabs\u003e` components\n\n**Result on Docusaurus:**\nThe content will automatically be transformed with the proper Tabs imports and components, creating an interactive tabbed interface.\n\n### GitHub Callouts Support\n\nThe transformation system also automatically converts GitHub-style callouts to Docusaurus admonitions:\n\n```markdown\n\u003e [!NOTE]\n\u003e This is a note\n\n\u003e [!TIP]\n\u003e This is a tip\n\n\u003e [!IMPORTANT]\n\u003e This is important\n\n\u003e [!WARNING]\n\u003e This is a warning\n\n\u003e [!CAUTION]\n\u003e This is dangerous\n\n\u003e [!REQUIREMENTS]\n\u003e These are requirements\n```\n\nThese will be automatically converted to the appropriate Docusaurus `:::note`, `:::tip`, `:::info`, `:::warning`, and `:::danger` admonitions during the build.\n\n### Troubleshooting\n\n| Problem | Solution |\n|---------|----------|\n| Page not appearing | Check that source URL is publicly accessible |\n| Build errors | Verify all template placeholders are replaced |\n| Links broken | Make sure you're using `createStandardTransform()` |\n| Component not showing | Check `components-data.yaml` and repository accessibility |\n| Wrong sidebar order | Adjust `sidebarPosition` numbers in configuration |\n| Tabs not rendering | Check that you have both `TABS:START` and `TABS:END` markers |\n\n## BEFORE DOING A PULL REQUEST\n\n1. **Check if content is synced** - Look for \"Content Source\" banners at the bottom of pages\n2. **For synced content** - Edit the source repository, not this one\n3. **For local content** - Follow the process below\n4. Make sure you are familiar with how docusaurus builds menus and links to images\n5. Fork the website repo and deploy a preview version of your proposed change for reviewers to check\n    \n\n### Installation\n\n```\n$ npm install\n```\n\n### Local Development\n\n```\n$ npm start\n```\n\nThis command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server.\n\n### Making Changes\n\n1. **Fork the Repository**\n   - Click the \"Fork\" button on the [llm-d.github.io](https://github.com/llm-d/llm-d.github.io) repository\n   - Clone your fork locally: `git clone https://github.com/YOUR-USERNAME/llm-d.github.io.git`\n\n2. **Create a Branch**\n   - Create a new branch for your changes: `git checkout -b feature/your-feature-name`\n   - Make your changes locally\n\n3. **Commit Your Changes**\n   - Stage your changes: `git add .`\n   - Commit with sign-off: `git commit -s -m \"Your commit message\"`\n   - Push to your fork: `git push origin feature/your-feature-name`\n\n4. **Open a Pull Request**\n   - Go to your fork on GitHub\n   - Click \"New Pull Request\"\n   - Select the main branch of llm-d/llm-d.github.io as the base\n   - Fill out the pull request template with details about your changes\n\n### Pull Request Preview\n\nWhen you open a pull request, a preview of your changes will be automatically generated and deployed. This allows reviewers to see your changes in a live environment before they are merged into the main website.\n\n- The preview URL will be posted as a comment on your pull request\n- The preview site will be automatically updated as you push new commits\n- The preview will be removed when the pull request is closed\n\n### Code Review Requirements\n\n- **All code changes** must be submitted as pull requests (no direct pushes)\n- **All changes** must be reviewed and approved by a maintainer\n- **All changes** must pass automated checks and tests\n- **Commit messages** should have:\n  - Short, descriptive titles\n  - Description of why the change was needed\n  - Enough detail for someone reviewing git history to understand the scope\n- **DCO Sign-off**: All commits must include a valid DCO sign-off line (`Signed-off-by: Name \u003cemail@domain.com\u003e`)\n  - Add automatically with `git commit -s`\n  - See [PR_SIGNOFF.md](https://github.com/llm-d/llm-d/blob/main/PR_SIGNOFF.md) for configuration details\n  - Required for all contributions per [Developer Certificate of Origin](https://developercertificate.org/)\n\n## Questions?\n\n- For immediate help: Join [llm-d.slack.com](https://llm-d.slack.com) -\u003e \u003ca href=\"/slack\" target=\"_self\"\u003eInvite Link\u003c/a\u003e\n- For issues: Create an issue in [llm-d/llm-d.github.io](https://github.com/llm-d/llm-d.github.io)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fllm-d%2Fllm-d.github.io","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fllm-d%2Fllm-d.github.io","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fllm-d%2Fllm-d.github.io/lists"}