{"owner":"ai-dynamo","repo":"dynamo","hasSkills":true,"hasMcp":false,"mcpConfig":null,"found":["AGENTS.md"],"skills":{"AGENTS.md":"<!--\nSPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# Dynamo — Agent Guide\n\n## Overview\n\nDynamo is NVIDIA's open-source, datacenter-scale distributed inference framework. It is\nthe orchestration layer **above** inference engines (SGLang, TensorRT-LLM, vLLM), not a\nreplacement for them: it turns a cluster of GPUs into one coordinated inference system.\nCore capabilities are disaggregated prefill/decode serving, KV-aware routing, multi-tier\nKV cache management (KVBM: GPU → CPU → SSD → remote), SLA-driven autoscaling (Planner),\nin-flight fault tolerance, and a Kubernetes operator for deployment.\n\nThe stack is deliberately layered and large. A **Rust core** (a Cargo workspace of\ntwenty-plus crates, mostly under `lib/`) holds the runtime, LLM, routing, and\nKV-block-manager engines. A **Python\nextensibility layer** (the `ai-dynamo` wheel, bound to the Rust core through PyO3/maturin)\nholds the frontend, backends, planner, and profiler. A **Kubernetes layer** (`deploy/`)\nholds the operator, Helm charts, and gateway integration. Treat any change that crosses\nthese boundaries as non-trivial. Dynamo also sits inside a wider `ai-dynamo` ecosystem of\nsibling repos (below) that it integrates with rather than vendors.\n\n## Skills\n\nSkills live canonically in `.agents/skills/`; `skills/` and `.claude/skills/` are symlinks\nto it — edit only the canonical copy. Reach for the right group first:\n\n**For developing Dynamo:**\n\n- `debug-session` — structured bug investigation with a persistent worklog\n- `dep-create` — create or update Dynamo Enhancement Proposals as GitHub issues\n- `dep-status` — check DEP status and list DEPs by lifecycle state or area\n- `dep-update` — advance DEP lifecycle: triage, PIC assignment, review, approval\n- `dynamo-clone-hotpath-audit` — audit Rust hot-path `.clone()` calls\n- `dynamo-docs` — Fern docs-site content per the style guide\n- `dynamo-frontend-benchmark` — benchmark/profile the frontend against mock workers\n- `fern-components` — Fern MDX component library and usage guidance\n- `fern-navigation` — Fern navigation and site-structure configuration guidance\n- `dynamo-kv-replay-parity` — validate offline KV replay parity and performance\n- `dynamo-agent-harness` — drive persistent Claude Code, Codex, or OpenCode sessions through Dynamo over ACP\n- `graham-code-review` — strict Rust/systems review in Graham King's style\n- `pr-monitor` — CI health check, failure root-cause, and skip analysis\n- `visual-review` — interactive HTML code-review dashboards with diagrams and annotated diffs\n\n**For deploying and operating Dynamo:**\n\n- `dynamo-recipe-runner` — select, patch, and deploy Kubernetes recipes\n- `dynamo-router-starter` — start/patch router modes with smoke checks\n- `dynamo-interconnect-check` — validate NIXL/UCX/NCCL readiness for disaggregation\n- `dynamo-troubleshoot` — diagnose failed or unhealthy deployments\n\n**Adding a skill:** the folder name must equal the frontmatter `name` (kebab-case); the\n`description` is third person, states what the skill does and when to use it, and is at\nmost 1024 characters; include `license: Apache-2.0` and a `metadata:` block with `author`\nand `tags`. List the skill in this section — the index must match `.agents/skills/`\nexactly. All of this is enforced by `scripts/validate_skills.py` (pre-commit hook\n`validate-skills`). Changes under `.agents/skills/` are also validated by NVSkills CI —\na maintainer comments `/nvskills-ci` on the PR.\n\n## Ecosystem\n\nSibling repositories this repo integrates with:\n\n| Repo | Role |\n|------|------|\n| [NIXL](https://github.com/ai-dynamo/nixl) | High-throughput inference data-transfer library (KV-cache transfer over RDMA/NVLink) that underpins disaggregated serving |\n| [AIPerf](https://github.com/ai-dynamo/aiperf) | Benchmarking and load-generation tool used by the benchmarking guides |\n| [AIConfigurator](https://github.com/ai-dynamo/aiconfigurator) | Simulates thousands of deployment configs to find an optimal serving config before spending GPU-hours |\n| [ModelExpress](https://github.com/ai-dynamo/modelexpress) | Streams model weights GPU-to-GPU via NIXL for fast replica cold-start |\n| [Grove](https://github.com/ai-dynamo/grove) | Kubernetes operator for topology-aware gang scheduling |\n\n## Repository Map\n\n| Path | Contents |\n|------|----------|\n| `lib/` | Rust workspace crates: `runtime`, `llm`, `kv-router`, `kvbm-*`, `mocker`, and more (see the root [`Cargo.toml`](Cargo.toml) `[workspace] members`), plus `bindings/python` — the PyO3 extension crate, built via maturin and deliberately excluded from the workspace |\n| `components/src/dynamo/` | Python packages: `frontend`, `planner`, `router`, `vllm`/`sglang`/`trtllm` backends, `mocker`, `profiler`, and more |\n| `deploy/` | Kubernetes `operator`, Helm charts, `inference-gateway` ext-proc, `observability` |\n| `container/` | Dockerfiles and build scripts for runtime and dev images |\n| `docs/`, `fern/` | Documentation sources and the Fern docs-site config — read [`docs/AGENTS.md`](docs/fern/AGENTS.md) before editing |\n| `examples/`, `recipes/` | Runnable examples and deployment recipes — also covered by [`docs/AGENTS.md`](docs/fern/AGENTS.md) |\n| `benchmarks/`, `tests/` | Benchmark harnesses and the top-level pytest suite |\n| `.ai/` | Agent topic guidelines: `bash-launch-guidelines.md`, `ci-guidelines.md`, `linear-ticket-refs.md`, `pytest-guidelines.md`, `python-guidelines.md`, `test-model-size-guardrails.md` |\n| `.agents/skills/` | Agent skills (see [Skills](#skills)) |\n\n## Build\n\nSystem prerequisites (Rust toolchain, `uv`, system libraries) and the VS Code / Cursor\ndevcontainer are covered in [`docs/contribution-guide.md`](docs/fern/pages/community/contributing/overview.md).\n\nPython dev build (bindings + wheel, editable):\n\n```bash\nuv venv .venv && source .venv/bin/activate\nuv pip install pip 'maturin[patchelf]'\ncd lib/bindings/python && maturin develop --uv && cd -\nuv pip install -e lib/gpu_memory_service\nuv pip install -e .\npython3 -m dynamo.frontend --help   # verify\n```\n\nRust-only:\n\n```bash\ncargo build                 # whole workspace\ncargo build -p dynamo-llm   # one crate\n```\n\n## Test\n\n```bash\ncargo test                  # Rust\npytest -m unit tests/       # Python unit tests\n```\n\nMarkers are strict (`--strict-markers`); the full marker list lives in\n[`pyproject.toml`](pyproject.toml) `[tool.pytest.ini_options]`, including GPU gating\n(`gpu_0` … `gpu_8`). Read [`.ai/pytest-guidelines.md`](.ai/pytest-guidelines.md) and\n[`.ai/test-model-size-guardrails.md`](.ai/test-model-size-guardrails.md) before writing\ntests.\n\n## Lint\n\n```bash\npre-commit run --all-files            # all hooks (run `pre-commit install` first; it also installs the DCO commit-msg hook)\ncargo fmt --all && cargo clippy --workspace\n```\n\n## PR and Commit Conventions\n\n- Keep changes focused and reviewable.\n- Use Conventional Commit PR titles: `type(scope): summary`. Accepted types:\n  `feat`, `fix`, `docs`, `test`, `ci`, `refactor`, `perf`, `chore`, `revert`,\n  `style`, and `build`.\n- PR descriptions must include `Summary` and `Validation`.\n- Sign every commit with DCO: `git commit -s`.\n- Do not hand-edit the root `CODEOWNERS` — it is generated. To change review\n  routing, edit `.github/codeowners/areas.yaml` and regenerate; CI gates 100%\n  coverage and `CODEOWNERS`↔`areas.yaml` drift. See\n  `.github/codeowners/README.md` (use `who_owns.py` to check who reviews a path).\n- Full CI on a PR runs only after a maintainer comments `/ok to test <sha>` with the short\n  SHA of the latest commit; copy-pr-bot then creates the `pull-request/N` branch that\n  triggers it. Fix failures before requesting human review.\n- Architecture changes require a Dynamo Enhancement Proposal (DEP), filed as a GitHub\n  issue on `ai-dynamo/dynamo` with `dep:*` labels (the `dep-create` skill automates this).\n\nSee [`docs/contribution-guide.md`](docs/fern/pages/community/contributing/overview.md) for the full workflow\n(issue sizing, CODEOWNERS, review process).\n\n## Docs, Examples, Recipes\n\nAny change under `docs/`, `examples/`, or `recipes/` must follow\n[`docs/AGENTS.md`](docs/fern/AGENTS.md) and the\n[documentation style guide](docs/fern/pages/community/contributing/documentation/documentation-style-guide.md): SPDX headers, Fern\nfrontmatter (no body `# H1`), GitHub-style admonitions, and backend casing\n(vLLM / SGLang / TensorRT-LLM). The deterministic subset is enforced pre-merge.\n"},"files":{"AGENTS.md":"<!--\nSPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# Dynamo — Agent Guide\n\n## Overview\n\nDynamo is NVIDIA's open-source, datacenter-scale distributed inference framework. It is\nthe orchestration layer **above** inference engines (SGLang, TensorRT-LLM, vLLM), not a\nreplacement for them: it turns a cluster of GPUs into one coordinated inference system.\nCore capabilities are disaggregated prefill/decode serving, KV-aware routing, multi-tier\nKV cache management (KVBM: GPU → CPU → SSD → remote), SLA-driven autoscaling (Planner),\nin-flight fault tolerance, and a Kubernetes operator for deployment.\n\nThe stack is deliberately layered and large. A **Rust core** (a Cargo workspace of\ntwenty-plus crates, mostly under `lib/`) holds the runtime, LLM, routing, and\nKV-block-manager engines. A **Python\nextensibility layer** (the `ai-dynamo` wheel, bound to the Rust core through PyO3/maturin)\nholds the frontend, backends, planner, and profiler. A **Kubernetes layer** (`deploy/`)\nholds the operator, Helm charts, and gateway integration. Treat any change that crosses\nthese boundaries as non-trivial. Dynamo also sits inside a wider `ai-dynamo` ecosystem of\nsibling repos (below) that it integrates with rather than vendors.\n\n## Skills\n\nSkills live canonically in `.agents/skills/`; `skills/` and `.claude/skills/` are symlinks\nto it — edit only the canonical copy. Reach for the right group first:\n\n**For developing Dynamo:**\n\n- `debug-session` — structured bug investigation with a persistent worklog\n- `dep-create` — create or update Dynamo Enhancement Proposals as GitHub issues\n- `dep-status` — check DEP status and list DEPs by lifecycle state or area\n- `dep-update` — advance DEP lifecycle: triage, PIC assignment, review, approval\n- `dynamo-clone-hotpath-audit` — audit Rust hot-path `.clone()` calls\n- `dynamo-docs` — Fern docs-site content per the style guide\n- `dynamo-frontend-benchmark` — benchmark/profile the frontend against mock workers\n- `fern-components` — Fern MDX component library and usage guidance\n- `fern-navigation` — Fern navigation and site-structure configuration guidance\n- `dynamo-kv-replay-parity` — validate offline KV replay parity and performance\n- `dynamo-agent-harness` — drive persistent Claude Code, Codex, or OpenCode sessions through Dynamo over ACP\n- `graham-code-review` — strict Rust/systems review in Graham King's style\n- `pr-monitor` — CI health check, failure root-cause, and skip analysis\n- `visual-review` — interactive HTML code-review dashboards with diagrams and annotated diffs\n\n**For deploying and operating Dynamo:**\n\n- `dynamo-recipe-runner` — select, patch, and deploy Kubernetes recipes\n- `dynamo-router-starter` — start/patch router modes with smoke checks\n- `dynamo-interconnect-check` — validate NIXL/UCX/NCCL readiness for disaggregation\n- `dynamo-troubleshoot` — diagnose failed or unhealthy deployments\n\n**Adding a skill:** the folder name must equal the frontmatter `name` (kebab-case); the\n`description` is third person, states what the skill does and when to use it, and is at\nmost 1024 characters; include `license: Apache-2.0` and a `metadata:` block with `author`\nand `tags`. List the skill in this section — the index must match `.agents/skills/`\nexactly. All of this is enforced by `scripts/validate_skills.py` (pre-commit hook\n`validate-skills`). Changes under `.agents/skills/` are also validated by NVSkills CI —\na maintainer comments `/nvskills-ci` on the PR.\n\n## Ecosystem\n\nSibling repositories this repo integrates with:\n\n| Repo | Role |\n|------|------|\n| [NIXL](https://github.com/ai-dynamo/nixl) | High-throughput inference data-transfer library (KV-cache transfer over RDMA/NVLink) that underpins disaggregated serving |\n| [AIPerf](https://github.com/ai-dynamo/aiperf) | Benchmarking and load-generation tool used by the benchmarking guides |\n| [AIConfigurator](https://github.com/ai-dynamo/aiconfigurator) | Simulates thousands of deployment configs to find an optimal serving config before spending GPU-hours |\n| [ModelExpress](https://github.com/ai-dynamo/modelexpress) | Streams model weights GPU-to-GPU via NIXL for fast replica cold-start |\n| [Grove](https://github.com/ai-dynamo/grove) | Kubernetes operator for topology-aware gang scheduling |\n\n## Repository Map\n\n| Path | Contents |\n|------|----------|\n| `lib/` | Rust workspace crates: `runtime`, `llm`, `kv-router`, `kvbm-*`, `mocker`, and more (see the root [`Cargo.toml`](Cargo.toml) `[workspace] members`), plus `bindings/python` — the PyO3 extension crate, built via maturin and deliberately excluded from the workspace |\n| `components/src/dynamo/` | Python packages: `frontend`, `planner`, `router`, `vllm`/`sglang`/`trtllm` backends, `mocker`, `profiler`, and more |\n| `deploy/` | Kubernetes `operator`, Helm charts, `inference-gateway` ext-proc, `observability` |\n| `container/` | Dockerfiles and build scripts for runtime and dev images |\n| `docs/`, `fern/` | Documentation sources and the Fern docs-site config — read [`docs/AGENTS.md`](docs/fern/AGENTS.md) before editing |\n| `examples/`, `recipes/` | Runnable examples and deployment recipes — also covered by [`docs/AGENTS.md`](docs/fern/AGENTS.md) |\n| `benchmarks/`, `tests/` | Benchmark harnesses and the top-level pytest suite |\n| `.ai/` | Agent topic guidelines: `bash-launch-guidelines.md`, `ci-guidelines.md`, `linear-ticket-refs.md`, `pytest-guidelines.md`, `python-guidelines.md`, `test-model-size-guardrails.md` |\n| `.agents/skills/` | Agent skills (see [Skills](#skills)) |\n\n## Build\n\nSystem prerequisites (Rust toolchain, `uv`, system libraries) and the VS Code / Cursor\ndevcontainer are covered in [`docs/contribution-guide.md`](docs/fern/pages/community/contributing/overview.md).\n\nPython dev build (bindings + wheel, editable):\n\n```bash\nuv venv .venv && source .venv/bin/activate\nuv pip install pip 'maturin[patchelf]'\ncd lib/bindings/python && maturin develop --uv && cd -\nuv pip install -e lib/gpu_memory_service\nuv pip install -e .\npython3 -m dynamo.frontend --help   # verify\n```\n\nRust-only:\n\n```bash\ncargo build                 # whole workspace\ncargo build -p dynamo-llm   # one crate\n```\n\n## Test\n\n```bash\ncargo test                  # Rust\npytest -m unit tests/       # Python unit tests\n```\n\nMarkers are strict (`--strict-markers`); the full marker list lives in\n[`pyproject.toml`](pyproject.toml) `[tool.pytest.ini_options]`, including GPU gating\n(`gpu_0` … `gpu_8`). Read [`.ai/pytest-guidelines.md`](.ai/pytest-guidelines.md) and\n[`.ai/test-model-size-guardrails.md`](.ai/test-model-size-guardrails.md) before writing\ntests.\n\n## Lint\n\n```bash\npre-commit run --all-files            # all hooks (run `pre-commit install` first; it also installs the DCO commit-msg hook)\ncargo fmt --all && cargo clippy --workspace\n```\n\n## PR and Commit Conventions\n\n- Keep changes focused and reviewable.\n- Use Conventional Commit PR titles: `type(scope): summary`. Accepted types:\n  `feat`, `fix`, `docs`, `test`, `ci`, `refactor`, `perf`, `chore`, `revert`,\n  `style`, and `build`.\n- PR descriptions must include `Summary` and `Validation`.\n- Sign every commit with DCO: `git commit -s`.\n- Do not hand-edit the root `CODEOWNERS` — it is generated. To change review\n  routing, edit `.github/codeowners/areas.yaml` and regenerate; CI gates 100%\n  coverage and `CODEOWNERS`↔`areas.yaml` drift. See\n  `.github/codeowners/README.md` (use `who_owns.py` to check who reviews a path).\n- Full CI on a PR runs only after a maintainer comments `/ok to test <sha>` with the short\n  SHA of the latest commit; copy-pr-bot then creates the `pull-request/N` branch that\n  triggers it. Fix failures before requesting human review.\n- Architecture changes require a Dynamo Enhancement Proposal (DEP), filed as a GitHub\n  issue on `ai-dynamo/dynamo` with `dep:*` labels (the `dep-create` skill automates this).\n\nSee [`docs/contribution-guide.md`](docs/fern/pages/community/contributing/overview.md) for the full workflow\n(issue sizing, CODEOWNERS, review process).\n\n## Docs, Examples, Recipes\n\nAny change under `docs/`, `examples/`, or `recipes/` must follow\n[`docs/AGENTS.md`](docs/fern/AGENTS.md) and the\n[documentation style guide](docs/fern/pages/community/contributing/documentation/documentation-style-guide.md): SPDX headers, Fern\nfrontmatter (no body `# H1`), GitHub-style admonitions, and backend casing\n(vLLM / SGLang / TensorRT-LLM). The deterministic subset is enforced pre-merge.\n"},"items":[{"name":"AGENTS.md","path":"AGENTS.md","title":"AGENTS.md","content":"<!--\nSPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# Dynamo — Agent Guide\n\n## Overview\n\nDynamo is NVIDIA's open-source, datacenter-scale distributed inference framework. It is\nthe orchestration layer **above** inference engines (SGLang, TensorRT-LLM, vLLM), not a\nreplacement for them: it turns a cluster of GPUs into one coordinated inference system.\nCore capabilities are disaggregated prefill/decode serving, KV-aware routing, multi-tier\nKV cache management (KVBM: GPU → CPU → SSD → remote), SLA-driven autoscaling (Planner),\nin-flight fault tolerance, and a Kubernetes operator for deployment.\n\nThe stack is deliberately layered and large. A **Rust core** (a Cargo workspace of\ntwenty-plus crates, mostly under `lib/`) holds the runtime, LLM, routing, and\nKV-block-manager engines. A **Python\nextensibility layer** (the `ai-dynamo` wheel, bound to the Rust core through PyO3/maturin)\nholds the frontend, backends, planner, and profiler. A **Kubernetes layer** (`deploy/`)\nholds the operator, Helm charts, and gateway integration. Treat any change that crosses\nthese boundaries as non-trivial. Dynamo also sits inside a wider `ai-dynamo` ecosystem of\nsibling repos (below) that it integrates with rather than vendors.\n\n## Skills\n\nSkills live canonically in `.agents/skills/`; `skills/` and `.claude/skills/` are symlinks\nto it — edit only the canonical copy. Reach for the right group first:\n\n**For developing Dynamo:**\n\n- `debug-session` — structured bug investigation with a persistent worklog\n- `dep-create` — create or update Dynamo Enhancement Proposals as GitHub issues\n- `dep-status` — check DEP status and list DEPs by lifecycle state or area\n- `dep-update` — advance DEP lifecycle: triage, PIC assignment, review, approval\n- `dynamo-clone-hotpath-audit` — audit Rust hot-path `.clone()` calls\n- `dynamo-docs` — Fern docs-site content per the style guide\n- `dynamo-frontend-benchmark` — benchmark/profile the frontend against mock workers\n- `fern-components` — Fern MDX component library and usage guidance\n- `fern-navigation` — Fern navigation and site-structure configuration guidance\n- `dynamo-kv-replay-parity` — validate offline KV replay parity and performance\n- `dynamo-agent-harness` — drive persistent Claude Code, Codex, or OpenCode sessions through Dynamo over ACP\n- `graham-code-review` — strict Rust/systems review in Graham King's style\n- `pr-monitor` — CI health check, failure root-cause, and skip analysis\n- `visual-review` — interactive HTML code-review dashboards with diagrams and annotated diffs\n\n**For deploying and operating Dynamo:**\n\n- `dynamo-recipe-runner` — select, patch, and deploy Kubernetes recipes\n- `dynamo-router-starter` — start/patch router modes with smoke checks\n- `dynamo-interconnect-check` — validate NIXL/UCX/NCCL readiness for disaggregation\n- `dynamo-troubleshoot` — diagnose failed or unhealthy deployments\n\n**Adding a skill:** the folder name must equal the frontmatter `name` (kebab-case); the\n`description` is third person, states what the skill does and when to use it, and is at\nmost 1024 characters; include `license: Apache-2.0` and a `metadata:` block with `author`\nand `tags`. List the skill in this section — the index must match `.agents/skills/`\nexactly. All of this is enforced by `scripts/validate_skills.py` (pre-commit hook\n`validate-skills`). Changes under `.agents/skills/` are also validated by NVSkills CI —\na maintainer comments `/nvskills-ci` on the PR.\n\n## Ecosystem\n\nSibling repositories this repo integrates with:\n\n| Repo | Role |\n|------|------|\n| [NIXL](https://github.com/ai-dynamo/nixl) | High-throughput inference data-transfer library (KV-cache transfer over RDMA/NVLink) that underpins disaggregated serving |\n| [AIPerf](https://github.com/ai-dynamo/aiperf) | Benchmarking and load-generation tool used by the benchmarking guides |\n| [AIConfigurator](https://github.com/ai-dynamo/aiconfigurator) | Simulates thousands of deployment configs to find an optimal serving config before spending GPU-hours |\n| [ModelExpress](https://github.com/ai-dynamo/modelexpress) | Streams model weights GPU-to-GPU via NIXL for fast replica cold-start |\n| [Grove](https://github.com/ai-dynamo/grove) | Kubernetes operator for topology-aware gang scheduling |\n\n## Repository Map\n\n| Path | Contents |\n|------|----------|\n| `lib/` | Rust workspace crates: `runtime`, `llm`, `kv-router`, `kvbm-*`, `mocker`, and more (see the root [`Cargo.toml`](Cargo.toml) `[workspace] members`), plus `bindings/python` — the PyO3 extension crate, built via maturin and deliberately excluded from the workspace |\n| `components/src/dynamo/` | Python packages: `frontend`, `planner`, `router`, `vllm`/`sglang`/`trtllm` backends, `mocker`, `profiler`, and more |\n| `deploy/` | Kubernetes `operator`, Helm charts, `inference-gateway` ext-proc, `observability` |\n| `container/` | Dockerfiles and build scripts for runtime and dev images |\n| `docs/`, `fern/` | Documentation sources and the Fern docs-site config — read [`docs/AGENTS.md`](docs/fern/AGENTS.md) before editing |\n| `examples/`, `recipes/` | Runnable examples and deployment recipes — also covered by [`docs/AGENTS.md`](docs/fern/AGENTS.md) |\n| `benchmarks/`, `tests/` | Benchmark harnesses and the top-level pytest suite |\n| `.ai/` | Agent topic guidelines: `bash-launch-guidelines.md`, `ci-guidelines.md`, `linear-ticket-refs.md`, `pytest-guidelines.md`, `python-guidelines.md`, `test-model-size-guardrails.md` |\n| `.agents/skills/` | Agent skills (see [Skills](#skills)) |\n\n## Build\n\nSystem prerequisites (Rust toolchain, `uv`, system libraries) and the VS Code / Cursor\ndevcontainer are covered in [`docs/contribution-guide.md`](docs/fern/pages/community/contributing/overview.md).\n\nPython dev build (bindings + wheel, editable):\n\n```bash\nuv venv .venv && source .venv/bin/activate\nuv pip install pip 'maturin[patchelf]'\ncd lib/bindings/python && maturin develop --uv && cd -\nuv pip install -e lib/gpu_memory_service\nuv pip install -e .\npython3 -m dynamo.frontend --help   # verify\n```\n\nRust-only:\n\n```bash\ncargo build                 # whole workspace\ncargo build -p dynamo-llm   # one crate\n```\n\n## Test\n\n```bash\ncargo test                  # Rust\npytest -m unit tests/       # Python unit tests\n```\n\nMarkers are strict (`--strict-markers`); the full marker list lives in\n[`pyproject.toml`](pyproject.toml) `[tool.pytest.ini_options]`, including GPU gating\n(`gpu_0` … `gpu_8`). Read [`.ai/pytest-guidelines.md`](.ai/pytest-guidelines.md) and\n[`.ai/test-model-size-guardrails.md`](.ai/test-model-size-guardrails.md) before writing\ntests.\n\n## Lint\n\n```bash\npre-commit run --all-files            # all hooks (run `pre-commit install` first; it also installs the DCO commit-msg hook)\ncargo fmt --all && cargo clippy --workspace\n```\n\n## PR and Commit Conventions\n\n- Keep changes focused and reviewable.\n- Use Conventional Commit PR titles: `type(scope): summary`. Accepted types:\n  `feat`, `fix`, `docs`, `test`, `ci`, `refactor`, `perf`, `chore`, `revert`,\n  `style`, and `build`.\n- PR descriptions must include `Summary` and `Validation`.\n- Sign every commit with DCO: `git commit -s`.\n- Do not hand-edit the root `CODEOWNERS` — it is generated. To change review\n  routing, edit `.github/codeowners/areas.yaml` and regenerate; CI gates 100%\n  coverage and `CODEOWNERS`↔`areas.yaml` drift. See\n  `.github/codeowners/README.md` (use `who_owns.py` to check who reviews a path).\n- Full CI on a PR runs only after a maintainer comments `/ok to test <sha>` with the short\n  SHA of the latest commit; copy-pr-bot then creates the `pull-request/N` branch that\n  triggers it. Fix failures before requesting human review.\n- Architecture changes require a Dynamo Enhancement Proposal (DEP), filed as a GitHub\n  issue on `ai-dynamo/dynamo` with `dep:*` labels (the `dep-create` skill automates this).\n\nSee [`docs/contribution-guide.md`](docs/fern/pages/community/contributing/overview.md) for the full workflow\n(issue sizing, CODEOWNERS, review process).\n\n## Docs, Examples, Recipes\n\nAny change under `docs/`, `examples/`, or `recipes/` must follow\n[`docs/AGENTS.md`](docs/fern/AGENTS.md) and the\n[documentation style guide](docs/fern/pages/community/contributing/documentation/documentation-style-guide.md): SPDX headers, Fern\nfrontmatter (no body `# H1`), GitHub-style admonitions, and backend casing\n(vLLM / SGLang / TensorRT-LLM). The deterministic subset is enforced pre-merge.\n","category":"root","tokens":2119}]}