Source for llm-d.ai — landing page, documentation, blog, and community — built with Docusaurus in this repository (llm-d/llm-d.github.io).
Doc content is synced from llm-d/llm-d; released
versions are frozen in versioned_docs/.
- Node.js ≥ 20
- Go ≥ 1.22 (for the
llmd-siteCLI) - npm
npm run llmd-site # build ./bin/llmd-site (once)
npm ci # install javascript modules
npm run build:all # pull docs/ + community pages from llm-d/llm-d@main and build the site
npm start # dev server at http://localhost:3000For day-to-day doc editing, sync when you want fresh upstream content (npm run sync), then use
npm start. You do not need a full production build for local preview.
Deploy and Netlify run sync then build every time:
npm ci
npm run llmd-site
npm run build:full
npm run serve # optional: preview the production build locallynpm run build alone only auto-syncs if docs/ is missing; to match CI, npm run build:all explicitly.
npm run ci # sync + build + link check (same as ci-website-test)
npm run check-links # link check only (requires existing ./build/)
npm run check-images # image check only (requires existing ./build/)
npm run test:llmd-site # Go unit testsPR workflows also run ci-website-images (sync + build + image check).
Most wrappers delegate to the Makefile / llmd-site CLI:
| npm script | Runs |
|---|---|
npm run build:all |
make build |
npm run ci |
make ci |
npm run check-links |
make check-links |
npm run check-images |
make check-images |
npm run version:cut -- 0.9 |
./bin/llmd-site version cut 0.9 |
npm start |
docusaurus start (dev only) |
npm run build |
docusaurus build (skips landing CSS — prefer make build) |
See tools/llmd-site/README.md for the full CLI.
To sync from a local llm-d checkout instead of cloning in CI:
cp llmd-site.local.yaml.example llmd-site.local.yaml # gitignored
# edit paths, then:
./bin/llmd-site sync --local mainOr set LLMD_REPO=/path/to/llm-d.
├── docs/ # Synced dev docs (gitignored) — "dev" version at /docs/dev
├── docs-sync.yaml # Sync manifest (sources, community mirror pages)
├── versioned_docs/ # Frozen releases (0.7, 0.8) + versioned_sidebars/ + versions.json
├── blog/ # Posts (.mdx) + authors.yml + tags.yml
├── community/ # index/events (authored); mirror pages generated on sync
├── src/ # Landing page, theme swizzles, shared components
├── static/img/ # Site assets; synced doc images under img/docs/ (gitignored)
├── scripts/ # Build-time: landing CSS, preprocess, sidebar helper
├── tools/llmd-site/ # Go CLI (sync, build, check, version cut, …)
├── legacy/ # Archived bash/Node scripts (not used in CI)
├── preview/ # Archived two-site prototype (not used in CI)
├── Makefile
└── docusaurus.config.js
- Dev docs —
docs/is mirrored fromllm-d/llm-dby./bin/llmd-site sync. Sidebar labels and order come fromdocs/menu-config.json(synced with the docs). - Versioning — Latest release (0.8) at
/docs; older at/docs/0.7; unreleased dev at/docs/dev. Cut a release:./bin/llmd-site version cut 0.9. - Community —
contribute,code-of-conduct,security, andsigsare generated on sync from upstream repo-root files (seedocs-sync.yaml). - Markdown fixups — Applied at build time via
scripts/lib/preprocess.mjsso synced sources stay pristine. - Landing page — Edit
src/landing/, thennpm run landing:css(included inmake build).
Production deploys to GitHub Pages via .github/workflows/deploy.yml
on push to main (sync → build → publish). PR previews may use Netlify
(netlify.toml) with the same sync + build steps.
llmd-site.local.yaml— local upstream paths forllmd-site sync --locallink-checker.config.json— link checker tuning (copy fromlink-checker.config.json.example)
- A few harmless anchor warnings remain at build time (GitHub vs. Docusaurus heading slugs in synced content).
- The old scripts under
legacy/are kept for reference only.