nmonit — Distributed Compute Fabric

Pool GPU, CPU, VRAM, and RAM across networked devices into a unified compute layer

nmonit is a distributed compute fabric that aggregates hardware resources across multiple machines on a LAN and presents them as a single unified pool. Applications request what they need — memory, compute, GPU — and the fabric decides where to place it. The application doesn’t need to know the cluster topology.

Example: Run an LLM that needs 48GB VRAM on a cluster where no single GPU has more than 24GB. nmonit shards the model across two GPUs on different nodes transparently.

Architecture

A control plane (Go) handles scheduling, resource management, and the API. Node agents (Rust) run on each machine, reporting resources and executing tasks. Communication is via gRPC over RDMA (preferred) or TCP.

Key Features

  • VRAM pooling — Aggregate GPU memory across all nodes. Run models larger than any single GPU’s VRAM.
  • Distributed shared memory — Page-level remote memory access across nodes with configurable consistency (strict, relaxed, release).
  • Smart scheduling — Topology-aware placement, data gravity, gang scheduling for distributed jobs, preemption with checkpoint.
  • RDMA support — Zero-copy inter-node transfers via RoCE v2 or InfiniBand. Falls back to TCP automatically.
  • Multi-tenancy — Resource quotas, network isolation, RBAC, mTLS everywhere.
  • Fault tolerance — Node failure detection, automatic work redistribution, checkpoint/restart.
  • ML-first design — Model sharding (data/tensor/pipeline parallelism), continuous batching, KV-cache offloading.
  • Container-native — Any Docker/OCI container can tap into the fabric via runtime hooks.
  • SDK — Rust, Python (numpy-compatible distributed arrays), Go, C bindings. MPI compatibility layer.
  • CLI & REST API — Submit jobs, check cluster status, manage resources from the command line or programmatically.

Technology Stack

Component Language Role
Control Plane Go Scheduler, REST/gRPC API, resource manager, Raft consensus
Node Agent Rust Resource reporting, task execution, memory management, GPU access
Network UCX (Rust) RDMA (RoCE v2) with TCP fallback
Wire Protocol Protobuf + gRPC Code gen for Go, Rust, Python
GPU CUDA (NVIDIA first) VRAM pooling, model sharding
Metrics Prometheus Industry standard monitoring

Quick Start

# Clone and build
git clone https://github.com/ParadoxFuzzle/nmonit.git
cd nmonit
make

# Start the control plane (first node)
./bin/control-plane --bootstrap

# Start node agents on each machine
./bin/compute-agent --control-plane 192.168.1.10:9000

# Submit a job
./bin/compute submit --gpus 2 --vram 24G my-job.py

# Check cluster status
./bin/compute status

Requirements

  • All nodes: Linux kernel 5.15+, systemd
  • GPU nodes: NVIDIA drivers 535+, NVML
  • RDMA (optional): RDMA-capable NICs (Mellanox ConnectX-4+, RoCE v2)
  • Build tools: Rust 1.78+, Go 1.22+, Protocol Buffers (buf)

Project Status

Pre-alpha. Phase 1 implementation is underway. The architecture, protocol definitions, and core scaffolding are in place. See the architecture doc and PRD on GitHub for the full roadmap.

Download

Source code, build instructions, and documentation. Pre-built binaries coming soon.

License

MIT OR Apache-2.0