External View
RMS is structured as thin, protocol-specific gateways over an orchestration layer. A gRPC gateway translates requests into calls on the orchestrator, which owns the rack map and the job tracker. Rack implementations create node objects, and node implementations hide the protocol-specific I/O behind a common trait. Nodes are pure async I/O - they have no knowledge of job tracking or scheduling.
The service is built on tokio for async I/O, tonic for gRPC, and trait-based polymorphism for extensibility across node and rack types.
For how these layers fit together internally, see Internal View.
Northbound and southbound connections
RMS has one northbound (incoming client) interface - the RackManager gRPC
API - and several southbound (outgoing) interfaces it uses to reach hardware.