Releases: ossianericson/netsentinel
NetSentinel v2.1.12
Security & Verification
Every release is signed and checksummed. Verify before running.
| Check | Result |
|---|---|
| VirusTotal scan | aHR0cHM6Ly9n… |
| SHA256 checksums | SHA256SUMS.txt |
Verify the SHA256 checksum (Windows):
$expected = (Get-Content SHA256SUMS.txt | Select-String 'NetSentinel-Setup').ToString().Split(' ')[0]
$actual = (Get-FileHash 'NetSentinel-Setup-2.1.12.exe' -Algorithm SHA256).Hash.ToLower()
if ($expected -eq $actual) { '✅ OK' } else { '❌ MISMATCH' }Verify the cosign signature (Windows installer):
cosign verify-blob \
--bundle NetSentinel-Setup-2.1.12.exe.bundle \
--certificate-identity-regexp "https://github.com/ossianericson/netsentinel/.*" \
--certificate-oidc-issuer "https://token.actions.githubusercontent.com" \
NetSentinel-Setup-2.1.12.exeVerify the cosign signature (MSIX):
cosign verify-blob \
--bundle NetSentinel-2.1.12.msix.bundle \
--certificate-identity-regexp "https://github.com/ossianericson/netsentinel/.*" \
--certificate-oidc-issuer "https://token.actions.githubusercontent.com" \
NetSentinel-2.1.12.msixNetSentinel v2.1.12
v2.1.12
Added
ui/perf_audit.py—warn_if_nav_slow()nav timing warnings andprofile_page_init()cProfile wrapper for page-init instrumentation (S10-1)ui/widgets/feedback_dialog.py— local in-app feedback dialog; writes timestamped entries tofeedback.logwith no network calls; accessible via Ctrl+K "Give Feedback" (S10-7)STATUS_ICON_OK/WARN/CRIT/UNKNOWNshape constants inui/styles.py; applied in service heartbeat, uptime, and monitor verdict displays so status is not conveyed by colour alone (S10-2)- Focus rings (
QPushButton:focusCSS) on activity-rail buttons and flyout items for keyboard navigation (S10-3) tests/test_status_icons.py,tests/test_keyboard_nav.py,tests/test_empty_state_audit.py,tests/test_loading_state_audit.py,tests/test_theme_consistency.py,tests/test_feedback_dialog.py,tests/test_perf_audit.py— UX Sprint 10 audit test suite (S10-4 through S10-6)
Fixed
- Stripped UTF-8 BOM from
ui/nav/rail.pythat caused silentSyntaxErrorinast.parse-based test checks test_no_duplicate_methods.pynow correctly exempts@pyqtPropertygetter/setter pairs from the duplicate-method check
Recommended install
winget install NetSentinel.NetSentinelOr download manually:
| Platform | File | Notes |
|---|---|---|
| Windows | NetSentinel-Setup-*.exe |
Installer — adds to Start Menu + PATH. Use winget (above) instead if possible. |
| Windows | NetSentinel-svc.exe |
Background Windows service (not in winget). |
| macOS | NetSentinel-macOS.zip |
GUI — unzip, right-click → Open. |
| macOS | NetSentinel-cli-macOS |
Headless CLI. |
| Linux | NetSentinel |
GUI — chmod +x NetSentinel && sudo ./NetSentinel |
| Linux | NetSentinel-cli-linux |
Headless CLI. |
What it does
One tool that replaces a drawer full of network utilities:
- Rogue device fingerprinting with curated OUI registry (Google, TP-Link, Apple, Amazon, Samsung, LG, PlayStation, Nintendo, Xbox, Roku, Netgear, Asus)
- STP/BPDU rogue Root Bridge detection
- Broadcast & multicast storm analysis
- IoT Behavioral Baseline — learns normal device traffic, alerts on deviations
- Root Cause Correlator — distinguishes ISP fault from local network fault
- Network Grade (A–F) across 8 dimensions — uptime, latency, jitter, DNS, speed, safety, STP, storm
- ISP Accountability Report — HTML export with MTR hop table and outage log for support tickets
- How-to-Fix context menus on every scan result
- Hidden SSID and co-channel WiFi interference detection
- Live ping + DNS latency correlation
- On-demand diagnostics: speed test, DNS leak, traceroute, public IP
- Long-term background connectivity logger with stability scoring
- TCP port scanner, OS fingerprinter, CVE lookup, MTR, and more
- HTML, JSON, CSV, Nmap XML report export
NetSentinel v2.1.11
Security & Verification
Every release is signed and checksummed. Verify before running.
| Check | Result |
|---|---|
| VirusTotal scan | aHR0cHM6Ly9n… |
| SHA256 checksums | SHA256SUMS.txt |
Verify the SHA256 checksum (Windows):
$expected = (Get-Content SHA256SUMS.txt | Select-String 'NetSentinel-Setup').ToString().Split(' ')[0]
$actual = (Get-FileHash 'NetSentinel-Setup-2.1.11.exe' -Algorithm SHA256).Hash.ToLower()
if ($expected -eq $actual) { '✅ OK' } else { '❌ MISMATCH' }Verify the cosign signature (Windows installer):
cosign verify-blob \
--bundle NetSentinel-Setup-2.1.11.exe.bundle \
--certificate-identity-regexp "https://github.com/ossianericson/netsentinel/.*" \
--certificate-oidc-issuer "https://token.actions.githubusercontent.com" \
NetSentinel-Setup-2.1.11.exeVerify the cosign signature (MSIX):
cosign verify-blob \
--bundle NetSentinel-2.1.11.msix.bundle \
--certificate-identity-regexp "https://github.com/ossianericson/netsentinel/.*" \
--certificate-oidc-issuer "https://token.actions.githubusercontent.com" \
NetSentinel-2.1.11.msixNetSentinel v2.1.11
v2.1.11
Added
modules/cdn_ranges.py— static CDN/streaming-provider IP range classifier (Netflix/YouTube/Twitch/Disney+) for App Traffic device drill-downsmodules/traffic_insights.py— household usage narrative, ISP plan utilization, and QoS overlap recommendation buildersmodules/service_bandwidth_overlay.py— bandwidth-sharing context note for Service Diagnosticsui/widgets/usage_insights_card.py— home page "Usage insights" card (weekly category breakdown, plan utilization, dismissible QoS suggestion)app_traffic_sampletable (schema v17) persists App Traffic history; new "Last 24 Hours by Category" chart on the App Traffic page with click-to-drill-down by device and CDN- "Internet Plan" settings card — optional monthly data cap feeding plan utilization on the home page
Recommended install
winget install NetSentinel.NetSentinelOr download manually:
| Platform | File | Notes |
|---|---|---|
| Windows | NetSentinel-Setup-*.exe |
Installer — adds to Start Menu + PATH. Use winget (above) instead if possible. |
| Windows | NetSentinel-svc.exe |
Background Windows service (not in winget). |
| macOS | NetSentinel-macOS.zip |
GUI — unzip, right-click → Open. |
| macOS | NetSentinel-cli-macOS |
Headless CLI. |
| Linux | NetSentinel |
GUI — chmod +x NetSentinel && sudo ./NetSentinel |
| Linux | NetSentinel-cli-linux |
Headless CLI. |
What it does
One tool that replaces a drawer full of network utilities:
- Rogue device fingerprinting with curated OUI registry (Google, TP-Link, Apple, Amazon, Samsung, LG, PlayStation, Nintendo, Xbox, Roku, Netgear, Asus)
- STP/BPDU rogue Root Bridge detection
- Broadcast & multicast storm analysis
- IoT Behavioral Baseline — learns normal device traffic, alerts on deviations
- Root Cause Correlator — distinguishes ISP fault from local network fault
- Network Grade (A–F) across 8 dimensions — uptime, latency, jitter, DNS, speed, safety, STP, storm
- ISP Accountability Report — HTML export with MTR hop table and outage log for support tickets
- How-to-Fix context menus on every scan result
- Hidden SSID and co-channel WiFi interference detection
- Live ping + DNS latency correlation
- On-demand diagnostics: speed test, DNS leak, traceroute, public IP
- Long-term background connectivity logger with stability scoring
- TCP port scanner, OS fingerprinter, CVE lookup, MTR, and more
- HTML, JSON, CSV, Nmap XML report export
NetSentinel v2.1.10
Security & Verification
Every release is signed and checksummed. Verify before running.
| Check | Result |
|---|---|
| VirusTotal scan | aHR0cHM6Ly9n… |
| SHA256 checksums | SHA256SUMS.txt |
Verify the SHA256 checksum (Windows):
$expected = (Get-Content SHA256SUMS.txt | Select-String 'NetSentinel-Setup').ToString().Split(' ')[0]
$actual = (Get-FileHash 'NetSentinel-Setup-2.1.10.exe' -Algorithm SHA256).Hash.ToLower()
if ($expected -eq $actual) { '✅ OK' } else { '❌ MISMATCH' }Verify the cosign signature (Windows installer):
cosign verify-blob \
--bundle NetSentinel-Setup-2.1.10.exe.bundle \
--certificate-identity-regexp "https://github.com/ossianericson/netsentinel/.*" \
--certificate-oidc-issuer "https://token.actions.githubusercontent.com" \
NetSentinel-Setup-2.1.10.exeVerify the cosign signature (MSIX):
cosign verify-blob \
--bundle NetSentinel-2.1.10.msix.bundle \
--certificate-identity-regexp "https://github.com/ossianericson/netsentinel/.*" \
--certificate-oidc-issuer "https://token.actions.githubusercontent.com" \
NetSentinel-2.1.10.msixNetSentinel v2.1.10
v2.1.10
Added
- Persistent device map: after each scan, pinned and static-candidate offline devices (infrastructure roles, IP-stable seen 3+ times) are appended to the Inventory snapshot with freshness state
pinned,cached(<24 h), orstale(<7 d); implemented inScanResultMixin._merge_scan_with_persistent()(ui/scan_wiring.py) - "Hide offline" toggle in the Current Devices card header hides
cached/stalerows without discarding the persistent map; resets on navigation
Fixed
ui/scan_wiring.py:_store_refused before assignment in_on_m1_resultinventory block; replaced with_inv_storeto fix silentUnboundLocalErrorthat prevented segment detection from running
Recommended install
winget install NetSentinel.NetSentinelOr download manually:
| Platform | File | Notes |
|---|---|---|
| Windows | NetSentinel-Setup-*.exe |
Installer — adds to Start Menu + PATH. Use winget (above) instead if possible. |
| Windows | NetSentinel-svc.exe |
Background Windows service (not in winget). |
| macOS | NetSentinel-macOS.zip |
GUI — unzip, right-click → Open. |
| macOS | NetSentinel-cli-macOS |
Headless CLI. |
| Linux | NetSentinel |
GUI — chmod +x NetSentinel && sudo ./NetSentinel |
| Linux | NetSentinel-cli-linux |
Headless CLI. |
What it does
One tool that replaces a drawer full of network utilities:
- Rogue device fingerprinting with curated OUI registry (Google, TP-Link, Apple, Amazon, Samsung, LG, PlayStation, Nintendo, Xbox, Roku, Netgear, Asus)
- STP/BPDU rogue Root Bridge detection
- Broadcast & multicast storm analysis
- IoT Behavioral Baseline — learns normal device traffic, alerts on deviations
- Root Cause Correlator — distinguishes ISP fault from local network fault
- Network Grade (A–F) across 8 dimensions — uptime, latency, jitter, DNS, speed, safety, STP, storm
- ISP Accountability Report — HTML export with MTR hop table and outage log for support tickets
- How-to-Fix context menus on every scan result
- Hidden SSID and co-channel WiFi interference detection
- Live ping + DNS latency correlation
- On-demand diagnostics: speed test, DNS leak, traceroute, public IP
- Long-term background connectivity logger with stability scoring
- TCP port scanner, OS fingerprinter, CVE lookup, MTR, and more
- HTML, JSON, CSV, Nmap XML report export
NetSentinel v2.1.9
Security & Verification
Every release is signed and checksummed. Verify before running.
| Check | Result |
|---|---|
| VirusTotal scan | aHR0cHM6Ly9n… |
| SHA256 checksums | SHA256SUMS.txt |
Verify the SHA256 checksum (Windows):
$expected = (Get-Content SHA256SUMS.txt | Select-String 'NetSentinel-Setup').ToString().Split(' ')[0]
$actual = (Get-FileHash 'NetSentinel-Setup-2.1.9.exe' -Algorithm SHA256).Hash.ToLower()
if ($expected -eq $actual) { '✅ OK' } else { '❌ MISMATCH' }Verify the cosign signature (Windows installer):
cosign verify-blob \
--bundle NetSentinel-Setup-2.1.9.exe.bundle \
--certificate-identity-regexp "https://github.com/ossianericson/netsentinel/.*" \
--certificate-oidc-issuer "https://token.actions.githubusercontent.com" \
NetSentinel-Setup-2.1.9.exeVerify the cosign signature (MSIX):
cosign verify-blob \
--bundle NetSentinel-2.1.9.msix.bundle \
--certificate-identity-regexp "https://github.com/ossianericson/netsentinel/.*" \
--certificate-oidc-issuer "https://token.actions.githubusercontent.com" \
NetSentinel-2.1.9.msixNetSentinel v2.1.9
v2.1.9
Fixed
modules/topology_cytoscape.py: removed re-export block that created a cyclic import withtopology_cytoscape_html(CodeQL #1526, #1528)modules/topology_cytoscape_html.py: promoted lazybuild_cytoscape_elementsimports to module-level now that the cycle is broken (CodeQL #1524, #1525)tests/test_topology_cytoscape_html.py: unified import form tofrom modules import topology_cytoscape_htmlto resolve CodeQLpy/import-and-import-from(#1527)
Recommended install
winget install NetSentinel.NetSentinelOr download manually:
| Platform | File | Notes |
|---|---|---|
| Windows | NetSentinel-Setup-*.exe |
Installer — adds to Start Menu + PATH. Use winget (above) instead if possible. |
| Windows | NetSentinel-svc.exe |
Background Windows service (not in winget). |
| macOS | NetSentinel-macOS.zip |
GUI — unzip, right-click → Open. |
| macOS | NetSentinel-cli-macOS |
Headless CLI. |
| Linux | NetSentinel |
GUI — chmod +x NetSentinel && sudo ./NetSentinel |
| Linux | NetSentinel-cli-linux |
Headless CLI. |
What it does
One tool that replaces a drawer full of network utilities:
- Rogue device fingerprinting with curated OUI registry (Google, TP-Link, Apple, Amazon, Samsung, LG, PlayStation, Nintendo, Xbox, Roku, Netgear, Asus)
- STP/BPDU rogue Root Bridge detection
- Broadcast & multicast storm analysis
- IoT Behavioral Baseline — learns normal device traffic, alerts on deviations
- Root Cause Correlator — distinguishes ISP fault from local network fault
- Network Grade (A–F) across 8 dimensions — uptime, latency, jitter, DNS, speed, safety, STP, storm
- ISP Accountability Report — HTML export with MTR hop table and outage log for support tickets
- How-to-Fix context menus on every scan result
- Hidden SSID and co-channel WiFi interference detection
- Live ping + DNS latency correlation
- On-demand diagnostics: speed test, DNS leak, traceroute, public IP
- Long-term background connectivity logger with stability scoring
- TCP port scanner, OS fingerprinter, CVE lookup, MTR, and more
- HTML, JSON, CSV, Nmap XML report export
NetSentinel v2.1.5
Security & Verification
Every release is signed and checksummed. Verify before running.
| Check | Result |
|---|---|
| VirusTotal scan | aHR0cHM6Ly9n… |
| SHA256 checksums | SHA256SUMS.txt |
Verify the SHA256 checksum (Windows):
$expected = (Get-Content SHA256SUMS.txt | Select-String 'NetSentinel-Setup').ToString().Split(' ')[0]
$actual = (Get-FileHash 'NetSentinel-Setup-2.1.5.exe' -Algorithm SHA256).Hash.ToLower()
if ($expected -eq $actual) { '✅ OK' } else { '❌ MISMATCH' }Verify the cosign signature (Windows installer):
cosign verify-blob \
--bundle NetSentinel-Setup-2.1.5.exe.bundle \
--certificate-identity-regexp "https://github.com/ossianericson/netsentinel/.*" \
--certificate-oidc-issuer "https://token.actions.githubusercontent.com" \
NetSentinel-Setup-2.1.5.exeVerify the cosign signature (MSIX):
cosign verify-blob \
--bundle NetSentinel-2.1.5.msix.bundle \
--certificate-identity-regexp "https://github.com/ossianericson/netsentinel/.*" \
--certificate-oidc-issuer "https://token.actions.githubusercontent.com" \
NetSentinel-2.1.5.msixNetSentinel v2.1.5
v2.1.5
Fixed
- RULE 10 contradiction with RULE-AH3 resolved; all matplotlib chart backgrounds now use
ui/styles.pytokens QTimer.singleShotcalls replaced with parentedQTimer(self)instances across widget classes (RULE-WIN5 hardening)app.pywiring refactor — always-on worker signals connected afterDashboardconstruction per RULE-DW2- Network Map interactive view: hierarchical top-down Cytoscape.js layout and LLDP hint + WebEngine fallback polish
Recommended install
winget install NetSentinel.NetSentinelOr download manually:
| Platform | File | Notes |
|---|---|---|
| Windows | NetSentinel-Setup-*.exe |
Installer — adds to Start Menu + PATH. Use winget (above) instead if possible. |
| Windows | NetSentinel-svc.exe |
Background Windows service (not in winget). |
| macOS | NetSentinel-macOS.zip |
GUI — unzip, right-click → Open. |
| macOS | NetSentinel-cli-macOS |
Headless CLI. |
| Linux | NetSentinel |
GUI — chmod +x NetSentinel && sudo ./NetSentinel |
| Linux | NetSentinel-cli-linux |
Headless CLI. |
What it does
One tool that replaces a drawer full of network utilities:
- Rogue device fingerprinting with curated OUI registry (Google, TP-Link, Apple, Amazon, Samsung, LG, PlayStation, Nintendo, Xbox, Roku, Netgear, Asus)
- STP/BPDU rogue Root Bridge detection
- Broadcast & multicast storm analysis
- IoT Behavioral Baseline — learns normal device traffic, alerts on deviations
- Root Cause Correlator — distinguishes ISP fault from local network fault
- Network Grade (A–F) across 8 dimensions — uptime, latency, jitter, DNS, speed, safety, STP, storm
- ISP Accountability Report — HTML export with MTR hop table and outage log for support tickets
- How-to-Fix context menus on every scan result
- Hidden SSID and co-channel WiFi interference detection
- Live ping + DNS latency correlation
- On-demand diagnostics: speed test, DNS leak, traceroute, public IP
- Long-term background connectivity logger with stability scoring
- TCP port scanner, OS fingerprinter, CVE lookup, MTR, and more
- HTML, JSON, CSV, Nmap XML report export
NetSentinel v2.1.3
Security & Verification
Every release is signed and checksummed. Verify before running.
| Check | Result |
|---|---|
| VirusTotal scan | aHR0cHM6Ly9n… |
| SHA256 checksums | SHA256SUMS.txt |
Verify the SHA256 checksum (Windows):
$expected = (Get-Content SHA256SUMS.txt | Select-String 'NetSentinel-Setup').ToString().Split(' ')[0]
$actual = (Get-FileHash 'NetSentinel-Setup-2.1.3.exe' -Algorithm SHA256).Hash.ToLower()
if ($expected -eq $actual) { '✅ OK' } else { '❌ MISMATCH' }Verify the cosign signature (Windows installer):
cosign verify-blob \
--bundle NetSentinel-Setup-2.1.3.exe.bundle \
--certificate-identity-regexp "https://github.com/ossianericson/netsentinel/.*" \
--certificate-oidc-issuer "https://token.actions.githubusercontent.com" \
NetSentinel-Setup-2.1.3.exeVerify the cosign signature (MSIX):
cosign verify-blob \
--bundle NetSentinel-2.1.3.msix.bundle \
--certificate-identity-regexp "https://github.com/ossianericson/netsentinel/.*" \
--certificate-oidc-issuer "https://token.actions.githubusercontent.com" \
NetSentinel-2.1.3.msixNetSentinel v2.1.3
v2.1.3
Added
- MetricStore schema v13:
device_classification_overridestable — user-set type overrides survive all enrichment re-runs permanently modules/device_classifier.py:get_all_device_types()— sorted list of every valid device type label for UI dropdownsinventory_page.py:_TypeOverrideDialog— right-click "Override Device Type…" on any device in the snapshot table; type combobox with Set/Clear/Cancelinventory_page.py: confidence indicator prefix in Type column (★ user override, ● high ≥70%, ◑ medium 30–70%, ○ low <30%) with coloured foreground and tooltipinventory_page.py: Classification section in device detail drawer — current type, override badge, confidence level, evidence list, Clear Override buttonui/scan_enrichment.py: override guard in_apply_dhcp_fingerprints()and_on_passive_observation()— user-set overrides block all automatic enrichment upgradestests/test_device_classifier.py: 5 new tests forget_all_device_types()
Recommended install
winget install NetSentinel.NetSentinelOr download manually:
| Platform | File | Notes |
|---|---|---|
| Windows | NetSentinel-Setup-*.exe |
Installer — adds to Start Menu + PATH. Use winget (above) instead if possible. |
| Windows | NetSentinel-svc.exe |
Background Windows service (not in winget). |
| macOS | NetSentinel-macOS.zip |
GUI — unzip, right-click → Open. |
| macOS | NetSentinel-cli-macOS |
Headless CLI. |
| Linux | NetSentinel |
GUI — chmod +x NetSentinel && sudo ./NetSentinel |
| Linux | NetSentinel-cli-linux |
Headless CLI. |
What it does
One tool that replaces a drawer full of network utilities:
- Rogue device fingerprinting with curated OUI registry (Google, TP-Link, Apple, Amazon, Samsung, LG, PlayStation, Nintendo, Xbox, Roku, Netgear, Asus)
- STP/BPDU rogue Root Bridge detection
- Broadcast & multicast storm analysis
- IoT Behavioral Baseline — learns normal device traffic, alerts on deviations
- Root Cause Correlator — distinguishes ISP fault from local network fault
- Network Grade (A–F) across 8 dimensions — uptime, latency, jitter, DNS, speed, safety, STP, storm
- ISP Accountability Report — HTML export with MTR hop table and outage log for support tickets
- How-to-Fix context menus on every scan result
- Hidden SSID and co-channel WiFi interference detection
- Live ping + DNS latency correlation
- On-demand diagnostics: speed test, DNS leak, traceroute, public IP
- Long-term background connectivity logger with stability scoring
- TCP port scanner, OS fingerprinter, CVE lookup, MTR, and more
- HTML, JSON, CSV, Nmap XML report export
NetSentinel v2.1.2
Security & Verification
Every release is signed and checksummed. Verify before running.
| Check | Result |
|---|---|
| VirusTotal scan | aHR0cHM6Ly9n… |
| SHA256 checksums | SHA256SUMS.txt |
Verify the SHA256 checksum (Windows):
$expected = (Get-Content SHA256SUMS.txt | Select-String 'NetSentinel-Setup').ToString().Split(' ')[0]
$actual = (Get-FileHash 'NetSentinel-Setup-2.1.2.exe' -Algorithm SHA256).Hash.ToLower()
if ($expected -eq $actual) { '✅ OK' } else { '❌ MISMATCH' }Verify the cosign signature (Windows installer):
cosign verify-blob \
--bundle NetSentinel-Setup-2.1.2.exe.bundle \
--certificate-identity-regexp "https://github.com/ossianericson/netsentinel/.*" \
--certificate-oidc-issuer "https://token.actions.githubusercontent.com" \
NetSentinel-Setup-2.1.2.exeVerify the cosign signature (MSIX):
cosign verify-blob \
--bundle NetSentinel-2.1.2.msix.bundle \
--certificate-identity-regexp "https://github.com/ossianericson/netsentinel/.*" \
--certificate-oidc-issuer "https://token.actions.githubusercontent.com" \
NetSentinel-2.1.2.msixNetSentinel v2.1.2
v2.1.2
Added
modules/network_segments.py—NetworkSegmentdataclass,auto_detect_segments(),classify_device_segment(),merge_segments(); groups scan devices into colour-coded /24 subnets (Sprint 4)- MetricStore schema v11:
network_segmentstable (CIDR unique,auto_createdflag, user-editable name/colour) inventory_page.py: colour-coded segment pill bar above the device table with multi-select filter; Segment●column;_SegmentEditorDialogfor right-click segment editingui/scan_wiring.py: segments auto-detected and persisted after every full scan; stored user-defined segments win over auto-detected ones on CIDR conflicttests/test_network_segments.py: 15 tests covering detection, classification, merge logic, and scaling guard
Recommended install
winget install NetSentinel.NetSentinelOr download manually:
| Platform | File | Notes |
|---|---|---|
| Windows | NetSentinel-Setup-*.exe |
Installer — adds to Start Menu + PATH. Use winget (above) instead if possible. |
| Windows | NetSentinel-svc.exe |
Background Windows service (not in winget). |
| macOS | NetSentinel-macOS.zip |
GUI — unzip, right-click → Open. |
| macOS | NetSentinel-cli-macOS |
Headless CLI. |
| Linux | NetSentinel |
GUI — chmod +x NetSentinel && sudo ./NetSentinel |
| Linux | NetSentinel-cli-linux |
Headless CLI. |
What it does
One tool that replaces a drawer full of network utilities:
- Rogue device fingerprinting with curated OUI registry (Google, TP-Link, Apple, Amazon, Samsung, LG, PlayStation, Nintendo, Xbox, Roku, Netgear, Asus)
- STP/BPDU rogue Root Bridge detection
- Broadcast & multicast storm analysis
- IoT Behavioral Baseline — learns normal device traffic, alerts on deviations
- Root Cause Correlator — distinguishes ISP fault from local network fault
- Network Grade (A–F) across 8 dimensions — uptime, latency, jitter, DNS, speed, safety, STP, storm
- ISP Accountability Report — HTML export with MTR hop table and outage log for support tickets
- How-to-Fix context menus on every scan result
- Hidden SSID and co-channel WiFi interference detection
- Live ping + DNS latency correlation
- On-demand diagnostics: speed test, DNS leak, traceroute, public IP
- Long-term background connectivity logger with stability scoring
- TCP port scanner, OS fingerprinter, CVE lookup, MTR, and more
- HTML, JSON, CSV, Nmap XML report export
NetSentinel v2.1.1
Security & Verification
Every release is signed and checksummed. Verify before running.
| Check | Result |
|---|---|
| VirusTotal scan | aHR0cHM6Ly9n… |
| SHA256 checksums | SHA256SUMS.txt |
Verify the SHA256 checksum (Windows):
$expected = (Get-Content SHA256SUMS.txt | Select-String 'NetSentinel-Setup').ToString().Split(' ')[0]
$actual = (Get-FileHash 'NetSentinel-Setup-2.1.1.exe' -Algorithm SHA256).Hash.ToLower()
if ($expected -eq $actual) { '✅ OK' } else { '❌ MISMATCH' }Verify the cosign signature (Windows installer):
cosign verify-blob \
--bundle NetSentinel-Setup-2.1.1.exe.bundle \
--certificate-identity-regexp "https://github.com/ossianericson/netsentinel/.*" \
--certificate-oidc-issuer "https://token.actions.githubusercontent.com" \
NetSentinel-Setup-2.1.1.exeVerify the cosign signature (MSIX):
cosign verify-blob \
--bundle NetSentinel-2.1.1.msix.bundle \
--certificate-identity-regexp "https://github.com/ossianericson/netsentinel/.*" \
--certificate-oidc-issuer "https://token.actions.githubusercontent.com" \
NetSentinel-2.1.1.msixNetSentinel v2.1.1
v2.1.1
Fixed
modules/rogue_device.py: proxy-ARP deduplication — IPs sharing the gateway MAC are collected inproxy_arp_ipsand excluded from device results so the gateway never appears twicemodules/rogue_device.py: gateway device always classified asRouter / Gatewayviais_gatewayparameter, chip-OUI heuristic, and consumer-hostname sanity check — misclassification fromLite-OnOUI orPlaystation 4hostname resolvedui/scan_enrichment.py: gateway hostname guard in plugin enrichment loop — plugin client entries whose IP matches the gateway are skipped so the gateway hostname cannot be overwrittenui/scan_enrichment.py: gateway MAC filtered from_plugin_enrichmentsso the router's own MAC never appears as a client device in enrichment dataui/scan_enrichment.py: IP-keyed hostname sync (_apply_mesh_enrichment) skips the gatewayDeviceInfoobject to prevent the mesh/table-cell sync from overwriting the gateway hostnameui/scan_enrichment.py: post-enrichment device-type cell sync writesDeviceInfo.device_typeback to the Devices table for all devices with a known type — guards against the race where the cell was written beforeis_gatewayclassification rantests/test_scan_enrichment.py: regression test for shared-MAC (proxy-ARP) sync — twoDeviceInfoobjects with the same MAC; gateway hostname protected, non-gateway hostname updated
Recommended install
winget install NetSentinel.NetSentinelOr download manually:
| Platform | File | Notes |
|---|---|---|
| Windows | NetSentinel-Setup-*.exe |
Installer — adds to Start Menu + PATH. Use winget (above) instead if possible. |
| Windows | NetSentinel-svc.exe |
Background Windows service (not in winget). |
| macOS | NetSentinel-macOS.zip |
GUI — unzip, right-click → Open. |
| macOS | NetSentinel-cli-macOS |
Headless CLI. |
| Linux | NetSentinel |
GUI — chmod +x NetSentinel && sudo ./NetSentinel |
| Linux | NetSentinel-cli-linux |
Headless CLI. |
What it does
One tool that replaces a drawer full of network utilities:
- Rogue device fingerprinting with curated OUI registry (Google, TP-Link, Apple, Amazon, Samsung, LG, PlayStation, Nintendo, Xbox, Roku, Netgear, Asus)
- STP/BPDU rogue Root Bridge detection
- Broadcast & multicast storm analysis
- IoT Behavioral Baseline — learns normal device traffic, alerts on deviations
- Root Cause Correlator — distinguishes ISP fault from local network fault
- Network Grade (A–F) across 8 dimensions — uptime, latency, jitter, DNS, speed, safety, STP, storm
- ISP Accountability Report — HTML export with MTR hop table and outage log for support tickets
- How-to-Fix context menus on every scan result
- Hidden SSID and co-channel WiFi interference detection
- Live ping + DNS latency correlation
- On-demand diagnostics: speed test, DNS leak, traceroute, public IP
- Long-term background connectivity logger with stability scoring
- TCP port scanner, OS fingerprinter, CVE lookup, MTR, and more
- HTML, JSON, CSV, Nmap XML report export
NetSentinel v2.0.0
Security & Verification
Every release is signed and checksummed. Verify before running.
| Check | Result |
|---|---|
| VirusTotal scan | aHR0cHM6Ly9n… |
| SHA256 checksums | SHA256SUMS.txt |
Verify the SHA256 checksum (Windows):
$expected = (Get-Content SHA256SUMS.txt | Select-String 'NetSentinel-Setup').ToString().Split(' ')[0]
$actual = (Get-FileHash 'NetSentinel-Setup-2.0.0.exe' -Algorithm SHA256).Hash.ToLower()
if ($expected -eq $actual) { '✅ OK' } else { '❌ MISMATCH' }Verify the cosign signature (Windows installer):
cosign verify-blob \
--bundle NetSentinel-Setup-2.0.0.exe.bundle \
--certificate-identity-regexp "https://github.com/ossianericson/netsentinel/.*" \
--certificate-oidc-issuer "https://token.actions.githubusercontent.com" \
NetSentinel-Setup-2.0.0.exeVerify the cosign signature (MSIX):
cosign verify-blob \
--bundle NetSentinel-2.0.0.msix.bundle \
--certificate-identity-regexp "https://github.com/ossianericson/netsentinel/.*" \
--certificate-oidc-issuer "https://token.actions.githubusercontent.com" \
NetSentinel-2.0.0.msixNetSentinel v2.0.0
v2.0.0
Added
packaging/AppxManifest.xml: declaredwindows.startupTask(uap5, disabled by default) — enables user-controlled auto-start via Settings → Apps → Startup for Microsoft Store buildsapp.py:--startup-loggerflag — starts the app minimised to the system tray and auto-starts the Network Logger; fired by the Windows startup task when the user opts in
Changed
ui/system_tray.py: "Launch at Startup" registry entry now registers--startup-loggerinstead of--minimised, so enabling auto-start also begins background loggingui/pages/settings_cards.py: startup checkbox label updated to reflect that auto-start runs as a background logger
Recommended install
winget install NetSentinel.NetSentinelOr download manually:
| Platform | File | Notes |
|---|---|---|
| Windows | NetSentinel-Setup-*.exe |
Installer — adds to Start Menu + PATH. Use winget (above) instead if possible. |
| Windows | NetSentinel-svc.exe |
Background Windows service (not in winget). |
| macOS | NetSentinel-macOS.zip |
GUI — unzip, right-click → Open. |
| macOS | NetSentinel-cli-macOS |
Headless CLI. |
| Linux | NetSentinel |
GUI — chmod +x NetSentinel && sudo ./NetSentinel |
| Linux | NetSentinel-cli-linux |
Headless CLI. |
What it does
One tool that replaces a drawer full of network utilities:
- Rogue device fingerprinting with curated OUI registry (Google, TP-Link, Apple, Amazon, Samsung, LG, PlayStation, Nintendo, Xbox, Roku, Netgear, Asus)
- STP/BPDU rogue Root Bridge detection
- Broadcast & multicast storm analysis
- IoT Behavioral Baseline — learns normal device traffic, alerts on deviations
- Root Cause Correlator — distinguishes ISP fault from local network fault
- Network Grade (A–F) across 8 dimensions — uptime, latency, jitter, DNS, speed, safety, STP, storm
- ISP Accountability Report — HTML export with MTR hop table and outage log for support tickets
- How-to-Fix context menus on every scan result
- Hidden SSID and co-channel WiFi interference detection
- Live ping + DNS latency correlation
- On-demand diagnostics: speed test, DNS leak, traceroute, public IP
- Long-term background connectivity logger with stability scoring
- TCP port scanner, OS fingerprinter, CVE lookup, MTR, and more
- HTML, JSON, CSV, Nmap XML report export
NetSentinel v1.9.99
Security & Verification
Every release is signed and checksummed. Verify before running.
| Check | Result |
|---|---|
| VirusTotal scan | aHR0cHM6Ly9n… |
| SHA256 checksums | SHA256SUMS.txt |
Verify the SHA256 checksum (Windows):
$expected = (Get-Content SHA256SUMS.txt | Select-String 'NetSentinel-Setup').ToString().Split(' ')[0]
$actual = (Get-FileHash 'NetSentinel-Setup-1.9.99.exe' -Algorithm SHA256).Hash.ToLower()
if ($expected -eq $actual) { '✅ OK' } else { '❌ MISMATCH' }Verify the cosign signature (Windows installer):
cosign verify-blob \
--bundle NetSentinel-Setup-1.9.99.exe.bundle \
--certificate-identity-regexp "https://github.com/ossianericson/netsentinel/.*" \
--certificate-oidc-issuer "https://token.actions.githubusercontent.com" \
NetSentinel-Setup-1.9.99.exeVerify the cosign signature (MSIX):
cosign verify-blob \
--bundle NetSentinel-1.9.99.msix.bundle \
--certificate-identity-regexp "https://github.com/ossianericson/netsentinel/.*" \
--certificate-oidc-issuer "https://token.actions.githubusercontent.com" \
NetSentinel-1.9.99.msixNetSentinel v1.9.99
v1.9.99
Fixed
ui/header.py: snap-layout maximize button no longer crashes withRPC_E_WRONG_THREAD(0x8001010d) when a native file dialog is open —_toggle_maximize()is now invoked viaQMetaObject.invokeMethodwithQueuedConnectionso it always runs on the Qt main threadapp.py:tplinkrouterc6u(Deco hardware plugin dep) is now pre-imported on the main STA thread before any background workers start — eliminatesRPC_E_WRONG_THREADcrash loop on app restart after a wild chaos runtools/monkey_test.py: raised_UNRESPONSIVE_SECSfrom 20 s to 45 s — "Update Feeds" on Threat Intel page takes ~26 s on a slow connection; the 20 s threshold caused false-positive test terminations- Navigation animations and live chart redraws: eliminated a linear memory accumulation where old
FuncAnimation/Line2Dobjects were never released between redraws
Recommended install
winget install NetSentinel.NetSentinelOr download manually:
| Platform | File | Notes |
|---|---|---|
| Windows | NetSentinel-Setup-*.exe |
Installer — adds to Start Menu + PATH. Use winget (above) instead if possible. |
| Windows | NetSentinel-svc.exe |
Background Windows service (not in winget). |
| macOS | NetSentinel-macOS.zip |
GUI — unzip, right-click → Open. |
| macOS | NetSentinel-cli-macOS |
Headless CLI. |
| Linux | NetSentinel |
GUI — chmod +x NetSentinel && sudo ./NetSentinel |
| Linux | NetSentinel-cli-linux |
Headless CLI. |
What it does
One tool that replaces a drawer full of network utilities:
- Rogue device fingerprinting with curated OUI registry (Google, TP-Link, Apple, Amazon, Samsung, LG, PlayStation, Nintendo, Xbox, Roku, Netgear, Asus)
- STP/BPDU rogue Root Bridge detection
- Broadcast & multicast storm analysis
- IoT Behavioral Baseline — learns normal device traffic, alerts on deviations
- Root Cause Correlator — distinguishes ISP fault from local network fault
- Network Grade (A–F) across 8 dimensions — uptime, latency, jitter, DNS, speed, safety, STP, storm
- ISP Accountability Report — HTML export with MTR hop table and outage log for support tickets
- How-to-Fix context menus on every scan result
- Hidden SSID and co-channel WiFi interference detection
- Live ping + DNS latency correlation
- On-demand diagnostics: speed test, DNS leak, traceroute, public IP
- Long-term background connectivity logger with stability scoring
- TCP port scanner, OS fingerprinter, CVE lookup, MTR, and more
- HTML, JSON, CSV, Nmap XML report export