NOMMO — Network-Oriented Management & Monitoring Orchestrator
Distributed service orchestration for resilient systems.
NOMMO is a TypeScript distributed systems control plane that explores service discovery, node health monitoring, failure detection, routing decisions, self-healing recovery, and cluster observability.
The project is designed as a practical distributed-systems learning platform and infrastructure engineering experiment.
Infrastructure Engineering / Distributed Systems / Platform Engineering
NOMMO is named in tribute to the Nommo of Dogon cosmology.
In Dogon tradition, the Nommo are associated with order, communication, transmission of knowledge, and the restoration of balance.
While NOMMO is a software project and not a representation of spiritual belief, the symbolism closely reflects the purpose of an orchestration control plane.
Distributed systems are constantly changing:
- nodes appear
- nodes disappear
- services fail
- services recover
- traffic shifts
- system state evolves
An orchestrator exists to maintain order across that change.
NOMMO watches nodes, receives heartbeats, tracks service health, detects failure, makes routing decisions, and restores healthy state when services recover.
The acronym also describes the system directly.
NOMMO
- Network-Oriented
- Management
- Monitoring
- Orchestrator
The name serves both as a technical description of the project and as a tribute to one of Africa's rich traditions of knowledge, continuity, and communication.
NOMMO models a lightweight distributed systems control plane.
Worker nodes can:
- register themselves
- register services
- send heartbeats
The controller can:
- track node state
- detect failure
- discover services
- route traffic
- recover failed nodes
- generate cluster reports
Worker Nodes
│
│ Heartbeats
▼
+-------------------+
| NOMMO Controller |
+-------------------+
│
├── Node Registry
├── Service Registry
├── Failure Detector
├── Routing Engine
├── Event Log
└── Cluster Reporter
Worker Starts
↓
Registers With NOMMO
↓
Registers Services
↓
Sends Heartbeats
↓
Service Discovery
↓
Routing Decisions
↓
Node Failure
↓
Failure Detection
↓
Traffic Failover
↓
Node Recovery
↓
Service Restoration
- Fastify server
- Runtime configuration
- Health endpoints
- Typed architecture
- Node registration
- Node lookup
- Node lifecycle tracking
- Status transitions
- Heartbeat ingestion
- Last-seen tracking
- Heartbeat counters
- Automatic health updates
- Service registration
- Service lookup
- Healthy-instance filtering
- Heartbeat timeout evaluation
- Unhealthy state transitions
- Dead state transitions
- Recovery handling
- Round-robin routing
- Healthy-only routing
- Dead-node exclusion
- Worker simulator
- Service announcement
- Automated heartbeat generation
- Failure simulation
- Automatic failover
- Node recovery
- Cluster restoration
- Event logging
- Cluster reports
- Service inventory
- Health summaries
const node = {
id: "node-1",
name: "worker-1",
host: "10.0.0.1",
port: 7001
};const service = {
name: "vaultbox-api",
nodeId: "node-1",
host: "10.0.0.1",
port: 4000
};const decision =
router.route("vaultbox-api");{
"service": "vaultbox-api",
"selected": {
"nodeId": "node-1"
},
"healthyInstances": 2
}NOMMO includes:
- Unit Tests
- Integration Tests
- Failure Simulation Tests
- Benchmark Scripts
Run tests:
npm testRun type checking:
npm run typecheckRun benchmarks:
npx tsx benchmarks/heartbeat.bench.ts
npx tsx benchmarks/routing.bench.tsdocs/
├── API.md
├── ARCHITECTURE.md
├── BENCHMARKS.md
├── DESIGN_DECISIONS.md
├── FAILURE_MODES.md
├── ROADMAP.md
└── TESTING.md
NOMMO v1 intentionally focuses on control-plane fundamentals.
Included:
- service discovery
- health monitoring
- routing
- failover
- self-healing simulation
- observability
Not included:
- Kubernetes scheduling
- container orchestration
- Raft consensus
- distributed persistence
- service mesh implementation
- production multi-region clustering
Potential future work:
- persistent state storage
- weighted routing
- leader election
- distributed event streams
- metrics export
- dashboard UI
- plugin system
Williams Ashibuogwu (wbizmo)
GitHub:
Apache License 2.0.