How dotchance/nodalarc works
NodalArc is a browser-operated satellite network emulator: engineers configure a session, preview its orbital and ground-link feasibility, deploy it, then observe and probe real network workloads as topology changes. The graph follows that workflow through the API, Kubernetes reconciliation, orbital engines, scheduling, and node-level actuation, with separate branches for live inspection and measurement. README capabilities inform the broader product map; sampled excerpts confirm selected engine and service behavior, so uncertain internal call links are omitted.
Main entry points: App.tsx Browser App · main.py VS API · propagation_engine.py Orbital Propagation · handlers.py Session Operator
Components 24
Browser Lab
- Browser App
frontend/src/App.tsx - Session Wizard
frontend/src/catalog/SessionWizard.tsx - Session Builder
frontend/src/builder/BuilderView.tsx - Live Globe
frontend/src/globe/r3f/Scene.tsx - Topology View
frontend/src/topology/TopologyView.tsx
Session Services
- VS API
services/vs_api/main.py - Builder Save
services/vs_api/builder_session_service.py - Catalog Repository
lib/nodalarc/filesystem_catalog_repository.py - Session Switcher
services/vs_api/session_manager.py
Orbital Runtime
- Orbital Propagation
services/ome/propagation_engine.py - ISL Feasibility
services/ome/isl_engine.py - Ground Visibility
services/ome/ground_visibility_engine.py - Snapshot Builder
services/ome/snapshot_builder.py - Link Scheduler
services/scheduler/dispatcher.py
Network Substrate
- Session Operator
services/nodalarc_operator/handlers.py - Node Agent
services/node_agent/server.py - Router Workloads
adapters/frr/adapter.py
Inspection & Measurement
- Decision Explanations
lib/nodalarc/explain.py - Node Terminal
services/vs_api/terminal.py - Probe Measurement
services/measurement/flow_manager.py
Other components
- Network Engineer
- Kubernetes
- Linux Network Nodes
- Probe Daemon
services/measurement/probe_daemon.py
Connections 31
- Network Engineer → Browser App: uses
- Browser App → Session Wizard: opens
- Browser App → Session Builder: opens
- Session Wizard → VS API: deploys session
- Session Builder → VS API: saves session
- VS API → Builder Save: delegates save
- Builder Save → Catalog Repository: reads and commits
- VS API → Catalog Repository: reads catalog
- VS API → Session Switcher: switches session
- Session Switcher → Kubernetes: applies session spec
- Kubernetes → Session Operator: dispatches lifecycle
- Session Operator → Kubernetes: reconciles workloads
- Session Operator → Orbital Propagation: starts runtime
- Orbital Propagation → ISL Feasibility: provides propagated states
- Orbital Propagation → Ground Visibility: provides propagated states
- Orbital Propagation → Snapshot Builder: provides runtime state
- ISL Feasibility → Link Scheduler: provides link decisions
- Ground Visibility → Link Scheduler: provides visibility
- Link Scheduler → Node Agent: dispatches link changes
- Node Agent → Linux Network Nodes: actuates networking
- Session Operator → Router Workloads: deploys workloads
- Router Workloads → Linux Network Nodes: runs in namespaces
- Browser App → Snapshot Builder: receives live state
- Browser App → Live Globe: renders
- Browser App → Topology View: renders
- Browser App → Decision Explanations: requests explanations
- Network Engineer → Node Terminal: opens node shell
- Browser App → Node Terminal: requests terminal
- Network Engineer → Probe Measurement: runs probes
- Probe Measurement → Probe Daemon: manages flows
- Probe Daemon → Linux Network Nodes: measures traffic