navarch

module
v0.0.0-...-119c5e1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 14, 2026 License: MIT

README ΒΆ

Navarch

Open-source GPU fleet management

Navarch automates provisioning, health monitoring, and lifecycle management of GPU nodes across cloud providers. You bring your cloud credentials. Navarch provisions nodes, monitors hardware health, and automatically replaces failures.

πŸ“– Documentation Β· πŸš€ Getting Started

Why Navarch?

Managing GPU fleets across clouds is painful:

  • Every cloud is different. GCP, AWS, Lambda Labsβ€”each has its own API, instance types, and availability. You end up writing glue code instead of training models.

  • "Running" doesn't mean "healthy." Cloud providers tell you a VM is up. They don't tell you about XID errors, ECC faults, or thermal throttling that silently corrupt your gradients.

  • Manual replacement doesn't scale. When a node goes bad at 3am in a 256-GPU cluster, someone has to wake up, identify it, drain it, and provision a replacement. This should be automatic.

Navarch makes your GPU supply fungible across clouds. Request capacity, get healthy GPUs, and let Navarch handle the operational toil.

Features

  • Multi-cloud provisioning β€” Unified API across Lambda Labs, GCP, and AWS. Failover between providers when capacity is unavailable.
  • GPU health monitoring β€” Detects XID errors, ECC faults, thermal issues, and NVLink failures via NVML before they crash your workloads.
  • Automatic replacement β€” Unhealthy nodes are cordoned and replaced without manual intervention.
  • Autoscaling β€” Scale based on GPU utilization, job queue depth, schedules, or custom logic.
  • Fleet simulator β€” Test policies and failure scenarios locally with 1000+ simulated nodes.

Quick Start

# Build
git clone https://github.com/NavarchProject/navarch.git
cd navarch
make build

# Create a config file
cat > config.yaml << 'EOF'
providers:
  fake:
    type: fake
    gpu_count: 8

pools:
  dev:
    provider: fake
    instance_type: gpu_8x_h100
    region: local
    min_nodes: 2
    max_nodes: 5
    health:
      auto_replace: true
EOF

# Start the control plane
./bin/control-plane --config config.yaml

# In another terminal, list nodes
./bin/navarch list

For real cloud providers, see the configuration reference.

Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Workload Schedulers                        β”‚
β”‚  (Kubernetes, Slurm, Ray)                   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                     ↓
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Navarch Control Plane                      β”‚
β”‚  - Provisions GPU VMs                       β”‚
β”‚  - Monitors hardware health                 β”‚
β”‚  - Autoscales pools                         β”‚
β”‚  - Replaces failures                        β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                     ↓
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Cloud Providers                            β”‚
β”‚  (Lambda Labs, GCP, AWS)                    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

The control plane manages pools, tracks node state, and provisions instances through cloud provider APIs.

The node agent runs on each GPU instance, reports health via NVML, and executes commands from the control plane.

Development

# Run tests
make test

# Run the simulator
./bin/simulator run scenarios/gpu-failure.yaml -v

# Interactive mode
./bin/simulator interactive -v

See the simulator documentation for stress testing with thousands of nodes.

Repository Structure

navarch/
β”œβ”€β”€ cmd/
β”‚   β”œβ”€β”€ navarch/          # CLI
β”‚   β”œβ”€β”€ control-plane/    # Control plane server
β”‚   β”œβ”€β”€ node/             # Node agent
β”‚   └── simulator/        # Fleet simulator
β”œβ”€β”€ pkg/
β”‚   β”œβ”€β”€ controlplane/     # Control plane logic
β”‚   β”œβ”€β”€ provider/         # Cloud provider implementations
β”‚   β”œβ”€β”€ pool/             # Pool management and autoscaling
β”‚   β”œβ”€β”€ gpu/              # GPU monitoring (NVML)
β”‚   └── simulator/        # Simulation framework
β”œβ”€β”€ proto/                # Protobuf definitions
β”œβ”€β”€ scenarios/            # Simulator scenarios
β”œβ”€β”€ website/              # Documentation (MkDocs)
└── examples/             # Example configurations

Extending

Navarch is designed to be extended. Implement custom cloud providers, autoscalers, or metrics sources without modifying the core.

// Add a new cloud provider
type Provider interface {
    Name() string
    Provision(ctx context.Context, req ProvisionRequest) (*Instance, error)
    Terminate(ctx context.Context, instanceID string) error
    List(ctx context.Context) ([]*Instance, error)
}

// Add custom autoscaling logic
type Autoscaler interface {
    Recommend(ctx context.Context, state PoolState) (ScaleRecommendation, error)
}

See Extending Navarch for the full guide.

Roadmap

  • Multi-cloud provisioning (Lambda Labs, GCP, AWS)
  • Node agent with NVML health monitoring
  • XID error detection and classification
  • Pool management with pluggable autoscaling
  • Fleet simulator with stress testing
  • Spot instance support with preemption handling
  • Active diagnostics (dcgmi diag, GPU burn tests)
  • Web dashboard

License

MIT

Directories ΒΆ

Path Synopsis
cmd
control-plane command
navarch command
node command
simulator command
pkg
auth
Package auth provides authentication for the Navarch control plane.
Package auth provides authentication for the Navarch control plane.
clock
Package clock provides time abstractions for deterministic simulation.
Package clock provides time abstractions for deterministic simulation.
config
Package config provides configuration building utilities for the Navarch control plane.
Package config provides configuration building utilities for the Navarch control plane.
controlplane
Package controlplane provides the control plane server implementation.
Package controlplane provides the control plane server implementation.
gpu
notifier
Package notifier provides integration with workload management systems.
Package notifier provides integration with workload management systems.
provider/docker
Package docker provides a container-based provider for integration testing.
Package docker provides a container-based provider for integration testing.
retry
Package retry provides utilities for retrying operations with exponential backoff.
Package retry provides utilities for retrying operations with exponential backoff.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL