24/7 network monitoring daemon for a Raspberry Pi that discovers devices on the local network, builds an identity profile for each one, and persists everything for visibility into who's connected and when.
Licensed under GPLv3 — see LICENSE
NetworkBoss is built around a Controller/Coordinator pattern with dependency-injected, interface-based components.
Each component does one job and knows nothing about the others; the Controller is the only piece that sees the full picture and orchestrates the flow between them.
- Scanner: host discovery. Answers "who's on the network right now?"
Currently implemented via ARP scanning (
scanner/arp_scanner.py). - Profiler: device identification. Takes a discovered device and adds whatever metadata it can determine (vendor, OS, hostname).
Multiple profilers can be chained together via
ProfilerPipeline, a composite component. - Storage: SQLite-backed persistence for devices, scans, and raw sighting data. Sightings are immutable forensic records; devices are the derived, evolving picture built from them.
- Display: presentation layer. Console output for now with a terminal UI planned next.
- Controller: owns the run loop; scan → persist → profile → persist enrichment → display. Contains all the orchestration logic; the only component allowed to know about the others.
main.py is the dependency-injection boundary, it's the only file that constructs concrete implementations and wires them into the Controller.
Swapping a scanner or profiler implementation never requires touching the Controller.
Early development - Storage layer and component interfaces are stable; controller loop and terminal UI are in progress.

