MCPcopy Index your code
hub / github.com/NVIDIA/infra-controller

github.com/NVIDIA/infra-controller @v2.1.0-pr

Chat with this repo
repository ↗ · DeepWiki ↗ · release v2.1.0-pr ↗ · + Follow
65,949 symbols 230,155 edges 4,673 files 22,798 documented · 35%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

NVIDIA Infra Controller

NVIDIA Infra Controller (NICo) delivers zero-touch lifecycle automation for bare-metal systems that secures datacenter infrastructure at its foundation.

It is an API-based microservice that provides site-local, zero-trust, bare-metal lifecycle management with DPU-enforced isolation. NICo automates the complexity of the bare-metal lifecycle to fast-track building next generation AI Cloud offerings.

Getting Started

Bare-Metal Cluster Setup

helm-prereqs/setup.sh deploys the full NVIDIA Infra Controller stack onto a bare-metal Kubernetes cluster in three layers:

Layer What it installs Helm release
Common services MetalLB, cert-manager, Vault, external-secrets, PostgreSQL via helmfile in helm-prereqs/
NICo Core NVIDIA Infra Controller (this repo's helm/ chart) nico in nico-system
NICo REST NVIDIA Infra Controller's REST API, Temporal, Keycloak, site-agent nico-rest + nico-rest-site-agent in nico-rest

Prerequisites

  • A running Kubernetes cluster with KUBECONFIG set
  • helm, helmfile, kubectl, jq installed
  • Images pushed to your container registry

Quick start

# 1. Build all container images from this clone, then push them to your registry.
#    See docs/manuals/building_nico_containers.md for the build-host prerequisites.
export IMAGE_REGISTRY=my-registry.example.com/infra-controller
make images IMAGE_REGISTRY="${IMAGE_REGISTRY}"   # NICo Core (nico) + REST service images
#    Then: docker push "${IMAGE_REGISTRY}/nico:latest"
#          docker push "${IMAGE_REGISTRY}/nico-rest-api:latest"   # ...and the other nico-rest-* images

# 2. Set environment variables
export KUBECONFIG=/path/to/kubeconfig
export NICO_IMAGE_REGISTRY="${IMAGE_REGISTRY}"
export NICO_CORE_IMAGE_TAG=NICO_CORE_TAG             # e.g. 2.0.0-pr-58-g38a54a3f
export NICO_REST_IMAGE_TAG=NICO_REST_TAG             # e.g. 2.0.0-pr-58-g38a54a3f
# export REGISTRY_PULL_SECRET=RAW_API_KEY            # optional; raw key for authenticated registries

# 3. Customize site-specific values
#    Edit helm-prereqs/values/nico-core.yaml:
#      nico-api.hostname      — your site's external API hostname
#      nico-api.siteConfig    — network pools, VLAN ranges, IB config, MetalLB VIPs
#    Edit helm-prereqs/values/metallb-config.yaml:
#      IPAddressPool, BGPPeer    — your site's VIP ranges and TOR switch config
#    Edit helm-prereqs/values.yaml:
#      siteName                  — short site identifier

# 4. Run setup — installs common services, NICo Core, and NICo REST in order
cd helm-prereqs
./setup.sh        # interactive — prompts before deploying Core and REST
./setup.sh -y     # non-interactive — deploys everything (CI/CD)

To tear everything down:

cd helm-prereqs
./clean.sh

See helm-prereqs/README.md for the full reference: PKI architecture, PostgreSQL setup, phase-by-phase description, secrets reference, and troubleshooting.

Experimental Notice

This software is considered experimental and is a preview release. Use at your own risk in production environments. The software is provided "as is" without warranties of any kind. Features, APIs, and configurations may change without notice in future releases. For production deployments, thoroughly test in non-critical environments first.

Extension points exported contracts — how you extend this code

ExpectationInjector (Interface)
Operation interfaces describe the optional callable behaviors behind component manager capabilities. A manager should im [7 …
rest-api/flow/internal/task/componentmanager/operations.go
AuthHandler (Interface)
AuthHandler represents an authentication handler [208 implementers]
rest-api/auth/pkg/api/routes.go
RequestHandler (Interface)
RequestHandler defines the Echo compatible interface all API route handlers should implement [209 implementers]
rest-api/api/pkg/api/util.go
SiteNamespaceLister (Interface)
SiteNamespaceLister helps list and get Sites. All objects returned here must be treated as read-only. [16 implementers]
rest-api/site-manager/pkg/client/listers/crds/v1/site.go
TenantDAO (Interface)
TenantDAO is the data access interface for Tenant [29 implementers]
rest-api/db/pkg/db/model/tenant.go
OperatingSystemInterface (Interface)
OperatingSystemInterface - Interface for Operating System [19 implementers]
rest-api/site-agent/pkg/components/managers/managerapi/operating_system_api.go
Base (Interface)
Implemented by every page struct whose template extends `base.html`. Exposes the global tool list to the shared "Tools" [79 …
crates/api-web/src/lib.rs
ColumnInfo (Interface)
Metadata about a particular column that can be filtered by in a typical `find_by` function This conveys metadata such a [43 …
crates/api-db/src/lib.rs

Core symbols most depended-on inside this repo

new
called by 12337
crates/api-db/src/measured_boot/report.rs
Equal
called by 5633
rest-api/db/pkg/db/model/user.go
String
called by 5082
rest-api/ipam/prefix.go
IsNil
called by 4162
rest-api/sdk/standard/utils.go
map
called by 4146
crates/health/src/discovery/context.rs
append
called by 3377
crates/bmc-mock/src/auth_router.rs
Err
called by 3142
rest-api/site-agent/pkg/datatypes/managertypes/workflow/workflowtypes.go
clone
called by 2950
crates/utils/src/metrics.rs

Shape

Method 37,266
Function 19,611
Struct 4,235
Class 3,107
Enum 862
Interface 483
TypeAlias 366
FuncType 19

Languages

Go66%
Rust34%
C++1%
Python1%
TypeScript1%

Modules by API surface

rest-api/workflow-schema/schema/site-agent/workflows/v1/nico_nico_grpc.pb.go2,309 symbols
rest-api/flow/internal/nicoapi/gen/nico_grpc.pb.go2,269 symbols
rest-api/workflow-schema/flow/protobuf/v1/flow.pb.go1,645 symbols
rest-api/flow/pkg/proto/v1/flow.pb.go1,645 symbols
rest-api/workflow-schema/schema/site-agent/workflows/v1/nmx_c_nico.pb.go1,231 symbols
rest-api/workflow-schema/schema/site-agent/workflows/v1/mlx_device_nico.pb.go1,132 symbols
rest-api/flow/internal/nicoapi/gen/mlx_device.pb.go1,132 symbols
rest-api/workflow-schema/schema/site-agent/workflows/v1/measured_boot_nico.pb.go1,016 symbols
rest-api/flow/internal/nicoapi/gen/measured_boot.pb.go1,016 symbols
crates/api-core/src/api.rs477 symbols
rest-api/workflow-schema/schema/site-agent/workflows/v1/site_explorer_nico.pb.go379 symbols
rest-api/flow/internal/nicoapi/gen/site_explorer.pb.go379 symbols

Datastores touched

(mongodb)Database · 1 repos
carbide_testDatabase · 1 repos
keycloakDatabase · 1 repos
forge_system_carbideDatabase · 1 repos
mydbDatabase · 1 repos
nico_developmentDatabase · 1 repos
testdbDatabase · 1 repos

For agents

$ claude mcp add infra-controller \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact