Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 36 additions & 0 deletions .github/workflows/fern-docs-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0

name: Fern docs (check)

on:
pull_request:
paths:
- 'fern/**'
- '.github/workflows/fern-docs-ci.yml'

permissions:
contents: read

jobs:
check:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v6

- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: '22'

- name: Install Fern CLI
run: npm install -g fern-api@$(jq -r .version fern/fern.config.json)

- name: Validate Fern configuration
working-directory: ./fern
env:
FERN_TOKEN: ${{ secrets.DOCS_FERN_TOKEN }}
run: |
fern check
fern docs md check
42 changes: 42 additions & 0 deletions .github/workflows/publish-fern-docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
#
# Publishes the NeMo OSS hub Fern site.
# git tag docs/v0.1.0 && git push origin docs/v0.1.0
# Requires org secret: DOCS_FERN_TOKEN

name: Publish Fern Docs

on:
push:
tags:
- 'docs/v*'
workflow_dispatch: {}

permissions:
contents: read

concurrency:
group: fern-publish-nemo-framework-hub
cancel-in-progress: true

jobs:
publish:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v6

- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: '22'

- name: Install Fern CLI
run: npm install -g fern-api@$(jq -r .version fern/fern.config.json)

- name: Publish documentation
working-directory: ./fern
env:
FERN_TOKEN: ${{ secrets.DOCS_FERN_TOKEN }}
run: fern generate --docs
66 changes: 66 additions & 0 deletions GH-TOPICS.MD
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
## GitHub Topics Strategy

### Topic Categories

| Category | Topics | Purpose |
|----------|--------|---------|
| **Pipeline Stage** | `stage-data`, `stage-training`, `stage-alignment`, `stage-evaluation`, `stage-deployment`, `stage-safety` | Filter by workflow stage |
| **Model Type** | `model-llm`, `model-vlm`, `model-speech`, `model-diffusion`, `model-omni` | Filter by model modality |
| **Training Method** | `method-pretraining`, `method-sft`, `method-lora`, `method-rl`, `method-dpo`, `method-grpo` | Filter by training technique |
| **Backend** | `backend-megatron`, `backend-pytorch`, `backend-vllm`, `backend-tensorrt` | Filter by infrastructure |
| **Meta** | `nvidia-nemo` | All repos in the framework |

### README stage mapping

Org README columns map to catalog **`stage`** filters in `fern/components/repos.ts`. Optional GitHub topics can mirror these for org-wide filtering:

| README stage | Catalog `stage` | Suggested GitHub topic |
|--------------|-----------------|------------------------|
| Data | `data` | `stage-data` |
| Pretraining | `pretraining` | `stage-training` |
| RL | `rl` | `stage-alignment` |
| Inference | `inference` | `stage-evaluation`, `stage-deployment`, `stage-safety` |
| E2E | `e2e` | — (recipes, pipelines, orchestration) |

Use **`tags`** in `repos.ts` (and topic facets below) for cross-cutting search — e.g. Skills is E2E in the README but also spans SDG and evaluation.

<!-- ### Topic Assignments

| Repo | Pipeline Stage | Model Type | Training Method | Backend |
|------|----------------|------------|-----------------|---------|
| **Automodel** | `stage-training` | `model-llm`, `model-vlm`, `model-omni` | `method-pretraining`, `method-sft`, `method-lora` | `backend-pytorch` |
| **Megatron-Bridge** | `stage-training` | `model-llm`, `model-vlm` | `method-pretraining`, `method-sft`, `method-lora` | `backend-megatron` |
| **NeMo (Speech)** | `stage-training` | `model-speech` | `method-pretraining`, `method-sft` | `backend-megatron`, `backend-pytorch` |
| **RL** | `stage-alignment` | `model-llm`, `model-vlm` | `method-sft`, `method-rl`, `method-dpo`, `method-grpo` | `backend-megatron`, `backend-pytorch`, `backend-vllm` |
| **Gym** | `stage-alignment` | `model-llm`, `model-vlm` | `method-rl` | — |
| **DFM** | `stage-training` | `model-diffusion` | `method-pretraining` | `backend-megatron`, `backend-pytorch` |
| **Curator** | `stage-data` | — | — | — |
| **DataDesigner** | `stage-data` | — | — | — |
| **Skills** | `stage-data`, `stage-evaluation` | `model-llm` | — | — |
| **Evaluator** | `stage-evaluation` | — | — | — |
| **Export-Deploy** | `stage-deployment` | — | — | `backend-vllm`, `backend-tensorrt` |
| **Guardrails** | `stage-safety` | `model-llm` | — | — |
| **Run** | `stage-training` | — | — | — |
| **Emerging-Optimizers** | `stage-training` | — | — | — |
| **Nemotron** | — | `model-llm` | — | — |

*All repos also get `nvidia-nemo` for org-wide filtering.* -->

### Example Filter Links

Once topics are applied, we you add convenience links to your project's README and docs:

```markdown
**Browse by pipeline stage:**
[Data](https://github.com/orgs/NVIDIA-NeMo/repositories?q=topic:stage-data) ·
[Training](https://github.com/orgs/NVIDIA-NeMo/repositories?q=topic:stage-training) ·
[Alignment](https://github.com/orgs/NVIDIA-NeMo/repositories?q=topic:stage-alignment) ·
[Evaluation](https://github.com/orgs/NVIDIA-NeMo/repositories?q=topic:stage-evaluation) ·
[Deployment](https://github.com/orgs/NVIDIA-NeMo/repositories?q=topic:stage-deployment)

**Browse by model type:**
[LLM](https://github.com/orgs/NVIDIA-NeMo/repositories?q=topic:model-llm) ·
[VLM](https://github.com/orgs/NVIDIA-NeMo/repositories?q=topic:model-vlm) ·
[Speech](https://github.com/orgs/NVIDIA-NeMo/repositories?q=topic:model-speech) ·
[Diffusion](https://github.com/orgs/NVIDIA-NeMo/repositories?q=topic:model-diffusion)
```
76 changes: 76 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
# NeMo Open Source Software hub — Fern docs convenience targets.
# CI workflows under .github/workflows/fern-docs-*.yml are the source of truth
# for the published pipeline; these targets mirror the local-developer entry points.
#
# Usage:
# make docs # local dev server at http://localhost:3000
# make docs-check # validate Fern config + MDX (same checks as CI)
# make docs-login # guided dashboard sign-in + fern login
# make docs-preview # build a shared preview URL (needs DOCS_FERN_TOKEN)
# make docs-publish # trigger the Publish Fern Docs workflow on origin/main
#
# See fern/README.md and fern/agents.md for authoring guidance.

.PHONY: help docs docs-check docs-login docs-preview docs-publish

FERN_DIR := fern
FERN_VERSION := $(shell jq -r .version $(FERN_DIR)/fern.config.json)
FERN ?= npx -y fern-api@$(FERN_VERSION)
PUBLISH_WORKFLOW := Publish Fern Docs

.DEFAULT_GOAL := help

help:
@echo ""
@echo "NeMo OSS hub — Fern docs Make targets"
@echo "====================================="
@echo ""
@echo " make docs Start local Fern dev server (http://localhost:3000)"
@echo " make docs-check Validate Fern config + MDX ('fern check' + 'fern docs md check')"
@echo " make docs-login Guided dashboard sign-in + fern login"
@echo " make docs-preview Build a shared preview URL (needs DOCS_FERN_TOKEN)"
@echo " make docs-publish Trigger the 'Publish Fern Docs' workflow on origin/main"
@echo ""
@echo "First time? Run 'make docs-login' before 'make docs'."
@echo "Authoring guide: fern/README.md · Agent guide: fern/agents.md"
@echo ""

docs:
@echo "Starting Fern dev server (http://localhost:3000)..."
cd $(FERN_DIR) && $(FERN) docs dev

docs-check:
@echo "Validating Fern config and MDX..."
cd $(FERN_DIR) && $(FERN) check
cd $(FERN_DIR) && $(FERN) docs md check

docs-login:
@echo ""
@echo "Fern auth — one-time setup per machine"
@echo "======================================="
@echo ""
@echo " Step 1: open https://dashboard.buildwithfern.com and sign in with your"
@echo " @nvidia.com email (email / magic-link flow, not Google SSO)."
@echo ""
@echo " Step 2: confirm the 'nvidia' organization appears in the sidebar."
@echo ""
@echo " Step 3: complete the CLI login prompt below with the same email."
@echo ""
@printf "Have you completed step 1 (dashboard sign-in)? [yes/N]: "
@read confirm; case "$$confirm" in \
yes|YES|y|Y) ;; \
*) echo ""; echo "Bailing. Sign in at the dashboard URL above, then re-run 'make docs-login'."; exit 1 ;; \
esac
@echo ""
$(FERN) login

docs-preview:
@if [ -z "$$DOCS_FERN_TOKEN" ]; then \
echo "DOCS_FERN_TOKEN is not set. Issue a token via 'fern token' on a privileged NVIDIA Fern dashboard account."; \
exit 1; \
fi
@echo "Building a shared Fern preview URL..."
cd $(FERN_DIR) && FERN_TOKEN=$$DOCS_FERN_TOKEN $(FERN) generate --docs --preview

docs-publish:
gh workflow run "$(PUBLISH_WORKFLOW)" --ref main
9 changes: 8 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,8 @@
# .github
# NVIDIA-NeMo/.github

GitHub organization profile and staged NeMo Open Source Software hub documentation.

- **Org profile** — `profile/README.md` (shown on [github.com/NVIDIA-NeMo](https://github.com/NVIDIA-NeMo))
- **Hub docs (Fern)** — `fern/` → planned `docs.nvidia.com/nemo/oss` publication target

See [fern/README.md](fern/README.md) for local preview and publish steps.
146 changes: 146 additions & 0 deletions fern/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,146 @@
# NeMo Open Source Software Hub

Fern source for the **NeMo Open Source Software** documentation hub: the lightweight entry point for open source repositories in [NVIDIA-NeMo](https://github.com/NVIDIA-NeMo).

The hub helps readers answer three questions:

- **What should I use?** Task map, lifecycle stages, Framework vs Platform, and the library catalog.
- **How should I run it?** Runtime chooser, install overview, container catalog, and release notes.
- **Where do I go next?** Per-library docs, GitHub repos, community links, glossary, and external learning resources.

Per-library docs own commands, APIs, tutorials, model support, and version-specific behavior. This hub owns orientation, routing, stable concepts, and cross-component release metadata.

## Quick Links

| Need | Source | Published Route |
| --- | --- | --- |
| Home | [docs/pages/index.mdx](./docs/pages/index.mdx) | `/` |
| Task-first routing | [docs/pages/get-started/task-map.mdx](./docs/pages/get-started/task-map.mdx) | `/get-started/task-map` |
| Runtime choice | [docs/pages/get-started/runtime-chooser.mdx](./docs/pages/get-started/runtime-chooser.mdx) | `/get-started/runtime-chooser` |
| Library catalog page | [docs/pages/about/libraries.mdx](./docs/pages/about/libraries.mdx) | `/about/libraries` |
| Library catalog data | [components/repos.ts](./components/repos.ts) | Catalog component source |
| Container catalog page | [docs/pages/about/release-notes/containers.mdx](./docs/pages/about/release-notes/containers.mdx) | `/about/release-notes/containers` |
| Container catalog data | [components/containers.ts](./components/containers.ts) | Catalog component source |
| Concepts | [docs/pages/about/concepts/index.mdx](./docs/pages/about/concepts/index.mdx) | `/about/concepts` |
| Glossary | [docs/pages/resources/glossary.mdx](./docs/pages/resources/glossary.mdx) | `/resources/glossary` |
| External learning | [docs/pages/resources/external-learning.mdx](./docs/pages/resources/external-learning.mdx) | `/resources/external-learning` |
| Taxonomy | [TAXONOMY.md](./TAXONOMY.md) | Maintainer reference |
| GitHub topics guidance | [GH-TOPICS.MD](./GH-TOPICS.MD) | Maintainer reference |
| Navigation and redirects | [docs.yml](./docs.yml) | Site config |

Published targets are configured in [docs.yml](./docs.yml):

- Preview: `nemo.docs.buildwithfern.com/oss`
- Production: `docs.nvidia.com/nemo/oss`

## Site Shape

The hub follows the NVIDIA template-library IA, adapted for an ecosystem catalog:

- **About**: overview, ecosystem, architecture, concepts, libraries, release notes.
- **Get Started**: task map, quickstart, installation, runtime chooser, and stage guides.
- **Resources**: glossary, external learning, and community.

Concept pages explain durable relationships. The glossary is lookup-oriented. The task map routes user intent to the owning library. The runtime chooser routes setup decisions to containers, installs, source checkout, or Platform setup.

## Content Rules

Keep content here when it is stable and helps a reader choose:

- Framework vs Platform, lifecycle stages, and repo roles.
- Task-to-library routing.
- Runtime path decisions.
- Catalog metadata from `repos.ts` and `containers.ts`.
- Framework container release metadata and cross-component known issues.
- Terminology and curated external learning links.

Send content downstream when it changes quickly:

- Install commands, API usage, tutorials, and examples.
- Model-specific recipes, benchmarks, and support matrices.
- Version pins and library-only workarounds.

Rule of thumb: add one orienting paragraph and a link instead of copying a library team's material.

## Common Updates

### Add or Update a Repo

Update [components/repos.ts](./components/repos.ts).

- Set `stage` to the org README lifecycle column: `data`, `pretraining`, `rl`, `inference`, or `e2e`.
- Set `kind` to `library`, `integration`, `reference`, or `infrastructure`.
- Add durable `tags` for search facets such as modality, technique, or role.
- Add `docsUrl` and `containerUrl` only when stable public targets exist.

See [TAXONOMY.md](./TAXONOMY.md) for the canonical vocabulary.

### Add or Update a Container

Update [components/containers.ts](./components/containers.ts).

- Keep `latestTag` current.
- Keep `FRAMEWORK_RECENT_RELEASES` to a small recent set.
- Add standalone images to `NEMO_CONTAINERS` when they publish.
- Add cross-component release notes in [known-issues.mdx](./docs/pages/about/release-notes/known-issues.mdx).

### Add a Concept

Add a page under [docs/pages/about/concepts](./docs/pages/about/concepts).

Concept pages should explain relationships, tradeoffs, or decision models. Put short term definitions in [glossary.mdx](./docs/pages/resources/glossary.mdx).

### Add External Learning

Add durable third-party resources to [external-learning.mdx](./docs/pages/resources/external-learning.mdx).

Prefer sources that reveal how external users frame tasks or confusion. Avoid copying commands or version-specific steps.

## Local Development

Prerequisites:

- Node.js 22+
- `jq` (used by the root Makefile to pin the Fern CLI version from [fern.config.json](./fern.config.json))

From the repo root:

```bash
make docs-login # first time only — dashboard sign-in + fern login
make docs-check # fern check + fern docs md check (same as CI)
make docs # http://localhost:3000
```

Run `make help` for preview and publish targets. Agents editing this site should read [agents.md](./agents.md).

Equivalent raw CLI (from `fern/`):

```bash
npx -y fern-api@$(jq -r .version fern.config.json) login
npx -y fern-api@$(jq -r .version fern.config.json) check
npx -y fern-api@$(jq -r .version fern.config.json) docs dev
```

Custom React components must be imported in MDX:

```mdx
import RepoCatalog from "@/components/RepoCatalog";

<RepoCatalog />
```

## Publish

Publishing uses the NVIDIA Fern organization token: `DOCS_FERN_TOKEN`.

```bash
git tag docs/v0.1.0 && git push origin docs/v0.1.0
```

You can also run the **Publish Fern Docs** workflow from GitHub Actions.

## Theme

This site uses `global-theme: nvidia`. Theme assets are owned by [fern-components](https://github.com/NVIDIA/fern-components); keep logos, global CSS, and footer changes there.

The GitHub org link is configured in `navbar-links` and `footer-links` in [docs.yml](./docs.yml). After publishing, verify that the NVIDIA global theme renders the header link.
Loading