NVIDIA/nv-config-manager
Python
Captured source
source ↗NVIDIA/nv-config-manager
Description: NVIDIA Switch Infrastructure - Config Manager
Language: Python
License: Apache-2.0
Stars: 11
Forks: 2
Open issues: 9
Created: 2026-05-21T20:26:37Z
Pushed: 2026-06-11T01:15:42Z
Default branch: main
Fork: no
Archived: no
README:
NVIDIA Config Manager
NVIDIA Config Manager (NVCM) is an open-source network automation and configuration management platform for large-scale datacenter operations. It combines Nautobot inventory, event-driven rendering, ZTP, DHCP, workflow automation, and configuration storage behind a single Helm deployment.
NVCM is currently in Developer Preview and is not recommended for production use.
Overview
| Service | Description | | :------ | :---------- | | [ZTP](https://docs.nvidia.com/switch-infrastructure/config-manager/services/network-ztp/overview) | Zero Touch Provisioning, boot scripts, OS image delivery, and provisioning status updates | | [DHCP](https://docs.nvidia.com/switch-infrastructure/config-manager/services/dhcp/overview) | Kea DHCP configuration generation from Nautobot data | | [Temporal](https://docs.nvidia.com/switch-infrastructure/config-manager/services/temporal/overview) | Long-running network operations and approval workflows | | [Render](https://docs.nvidia.com/switch-infrastructure/config-manager/services/render/overview) | Template rendering and event processing from Nautobot and workflow events | | [Config Store](https://docs.nvidia.com/switch-infrastructure/config-manager/services/config-store/overview) | PostgreSQL-backed rendered, intended, and backup configuration storage | | [UI](https://docs.nvidia.com/switch-infrastructure/config-manager/getting-started/which-interface-should-i-use) | React/Next.js interface for workflows and configuration browsing | | [Nautobot](https://docs.nvidia.com/switch-infrastructure/config-manager/config-manager/nautobot) | Network source of truth, custom jobs, and event publication |
Installer
The [NVIDIA Config Manager Installer](installer/README.md) is the supported deployment entry point. It provides an interactive TUI and a headless CLI that both use the same nv-config-manager-install.yaml configuration file.
cd installer uv sync uv run nv-config-manager-installer init
Common non-interactive commands:
cd installer uv run nv-config-manager-installer validate ../deploy/configs/local-superpod.yaml uv run nv-config-manager-installer generate-values ../deploy/configs/local-superpod.yaml --output-dir ../generated uv run nv-config-manager-installer deploy ../deploy/configs/local-superpod.yaml \ --image-source local \ --build-images \ --load-kind \ --kind-cluster nv-config-manager \ --install-envoy-gateway \ --install-cnpg-operator \ --install-cert-manager
The installer handles Helm values generation, Kubernetes secrets, optional operator installation, image builds, Kind image loading, content PVC staging, ZTP OS image staging, post-deploy Nautobot jobs, and endpoint reporting.
Local Development Setup
Install project tools and dependencies before running tests or local deployments.
curl -LsSf https://astral.sh/uv/install.sh | sh uv sync --dev ./scripts/install-hooks.sh
Git Hooks
Install the repository hooks after cloning and whenever hook scripts change:
./scripts/install-hooks.sh
Installed hooks:
pre-commit: formats all staged Python files outside ignored/generated
directories with uv run ruff format, re-stages those files, and checks SPDX license headers for supported source files (.py, .ts, .tsx, .js, .jsx, .mjs, .cjs, and .go) under src/, ui/src/, ui/tests/, components/, db/migrations/, scripts/, development/, installer/src/, installer/tests/, and installer/scripts/.
commit-msg: rejects commits that do not include a valid DCO
Signed-off-by: Name trailer. Use git commit -s or git commit --amend -s to add the trailer automatically.
Local hooks can be skipped with git commit --no-verify, so the organization DCO app remains the merge-time enforcement gate in CI.
For UI work:
cd ui npm install
Validation commands:
uv run pytest uv run ruff check src/ uv run mypy src/ uv run ruff format src/
Kubernetes Deployment
Prerequisites:
- Docker or a compatible container runtime
- Kind for local clusters, or a reachable Kubernetes cluster
- Helm 3.x
- kubectl configured for the target cluster
- Python 3.11 or newer, managed through
uv - Node.js 23 or newer for UI development
Resource Profiles
Resource sizing is selected in installer config at cluster.size.
| Size | Environment | Suggested Capacity | Notes | | ---- | ----------- | ------------------ | ----- | | small | Local laptop or CI | 8 vCPU, 24 GB RAM | Single replica development profile | | medium | Remote VM or staging | 16 vCPU, 64 GB RAM | Larger requests for a shared development VM | | large | Production | 96 vCPU, 256 GB RAM, 3+ nodes | HA-oriented replica counts and resource requests |
The bundled profiles in deploy/configs/ are ready-to-run examples. Override the selected profile with cluster.size in a copied installer config.
Local Kind Deployment
make kind-up
The default make kind-up target creates the Kind cluster if needed, builds local images, loads them into Kind, installs required operators, and deploys using deploy/configs/local-superpod.yaml.
Populate or refresh mock topology data:
make topology
Local Hostnames
The local SuperPOD profile uses config-manager.local as the base hostname. Add these entries when accessing the Envoy Gateway directly from your workstation:
127.0.0.1 config-manager.local 127.0.0.1 nautobot.config-manager.local 127.0.0.1 render.config-manager.local 127.0.0.1 ztp.config-manager.local 127.0.0.1 dhcp.config-manager.local 127.0.0.1 workflow.config-manager.local 127.0.0.1 config-store.config-manager.local 127.0.0.1 temporal.config-manager.local 127.0.0.1 mcp.config-manager.local 127.0.0.1 svc-mcp.config-manager.local 127.0.0.1 svc-workflow.config-manager.local 127.0.0.1 svc-config-store.config-manager.local 127.0.0.1 svc-render.config-manager.local 127.0.0.1 svc-ztp.config-manager.local 127.0.0.1 svc-dhcp.config-manager.local 127.0.0.1 svc-nautobot.config-manager.local
Local endpoints:
- UI:
- Nautobot:
- Workflow API:
- Config Store API:
- MCP endpoint:
For the local SuperPOD profile,…
Excerpt shown — open the source for the full document.
Notability
notability 2.0/10Low-star new repo, routine tool