The Operating System for Physical Assets. Universal device registry, fleet management command, and secure IoT orchestration for the circular economy.
NovaInfra is the Horizontal Enabler responsible for the Physical Layer. In a system-of-systems, software needs to talk to hardware. NovaAgro needs to steer robots, NovaEnergy needs to throttle inverters, and NovaWater needs to open valves.
NovaInfra abstracts this complexity. It provides a unified API to register, monitor, and command any physical device, handling the low-level messiness of MQTT, LoRaWAN, and cellular connectivity so other sectors don't have to.
Connecting hardware to the cloud is hard and insecure. NovaInfra solves the "Internet of Things" fragmentation:
- Universal Translation: It speaks 50+ protocols (Modbus, OPC-UA, CAN bus) and exposes them as clean REST/gRPC endpoints (e.g.,
POST /device/valve-01/open). - Zero-Trust Security: Every deviceβfrom a β¬5 sensor to a β¬50,000 robotβgets a cryptographic identity (mTLS certificate), ensuring that a hacked toaster cannot bring down the power grid.
- Fleet Orchestration: Managing firmware updates (OTA) and health monitoring for thousands of devices at once.
NovaInfra acts as the Device Registry and Command & Control (C2) server. Note: High-volume data ingestion is offloaded to the Worker-IoTIngest.
graph TD
User((Sector App)) -->|1. Send Command| API[NovaInfra API]
subgraph "The Control Plane"
API -->|Auth Check| Policy[NovaPolicy]
API -->|Lookup Device| DB[(Device Registry)]
API -->|Publish Cmd| Broker[Secure MQTT Broker]
end
subgraph "The Physical Edge"
Broker -->|TLS Tunnel| Gateway[Edge Gateway]
Gateway -->|Serial/BLE| Sensor[Soil Probe]
Gateway -->|CAN Bus| Robot[DurasAGV]
end
subgraph "The Feedback Loop"
Robot -->|Ack / Status| Broker
Broker -->|State Update| DB
end
- NovaPolicy: The gatekeeper. Checks permissions before executing a command. Example: "Does
NovaAgrohave permission to turn off the water pump in Sector 4?" - Worker-IoTIngest: The listener. While NovaInfra sends commands down, the Worker sucks telemetry up into the database.
- NovaLogistics: The tracker. NovaInfra provides the real-time GPS coordinates and battery health of the delivery fleet.
- NovaEnergy: The power manager. NovaInfra reports the "State of Charge" of batteries to help NovaEnergy balance the grid.
The single source of truth for physical assets.
- Metadata: Stores installation date, firmware version, location (Lat/Lon), and maintenance history.
-
Lifecycle: Tracks an asset from "Provisioned"
$\rightarrow$ "Active"$\rightarrow$ "Maintenance"$\rightarrow$ "Retired" (NovaRecycle).
Remote control with audit trails.
- Atomic Commands: "Set Thermostat to 22Β°C."
- Batch Operations: "Update Firmware on all 500 Air Quality Sensors in Berlin."
- Safety Limits: Prevents dangerous commands (e.g., blocking a "Valve Open" command if pressure is critical).
Spatial awareness for mobile assets.
- Trigger: A truck enters a "Low Emission Zone."
- Action: NovaInfra emits an event
zone.enter, causingNovaMobilityto switch the engine mode to "Electric Only."
Keeps the fleet secure and smart.
- Pushes new AI models from
NovaMindto edge devices (e.g., updating the weed-recognition model on a tractor). - Rollback capabilities if an update fails.
We use DevContainers to provide a consistent development environment.
- Docker Desktop
- VS Code (with Remote Containers extension)
- An MQTT Client (like MQTT Explorer) for debugging
- Clone the repo:
git clone https://github.com/novaeco-tech/novainfra.git cd novainfra - Open in VS Code:
- Run
code . - Click "Reopen in Container" when prompted.
- Run
- Start the Enabler:
make dev
- Fleet Dashboard: http://localhost:3000 (Map & List view)
- API: http://localhost:8000/docs
- Mock Broker:
tcp://localhost:1883
# Broker Settings
MQTT_INTERNAL_URL=tcp://vernemq:1883
ROOT_CA_PATH=/certs/root-ca.pem
# Provisioning
AUTO_PROVISIONING_ENABLED=false # Strict security by default
DEFAULT_FIRMWARE_BUCKET=s3://firmware-repoThis is a Monorepo containing the enabler's specific logic.
novainfra/
βββ api/ # Python/FastAPI (The Control Plane)
β βββ src/
β β βββ registry/ # CRUD for devices & gateways
β β βββ command/ # RPC over MQTT logic
β β βββ ota/ # Firmware update orchestration
βββ app/ # React/Mapbox Frontend (Fleet Manager UI)
β βββ src/
β β βββ map/ # Real-time asset tracking
β β βββ terminal/ # Direct device console
βββ firmware-sdk/ # C++/Python SDK for device makers
βββ website/ # Documentation (Docusaurus)
βββ tests/ # Integration tests
We use Hardware Simulation for testing.
- Provisioning Test:
make test-provision- Generates a virtual TPM certificate. Attempts to connect to the broker and asserts that NovaInfra creates a new "Pending Device" entry.
- Command Loop:
make test-cmd- Sends a
REBOOTcommand via API. Verifies that the mock device receives the correct MQTT packet and responds withACK.
- Sends a
We need contributors with backgrounds in Embedded Systems, Cybersecurity (PKI), and Distributed Systems. See CONTRIBUTING.md for details.
Maintainers: @novaeco-tech/maintainers-enabler-novainfra