Desktop internet-quality monitor for vessels using VSAT, Starlink, or mixed maritime connectivity.
ShipNetMonitor runs as a compact always-on-top widget or an expanded dashboard. It continuously checks latency, jitter, packet loss, DNS, HTTP reachability, and periodic speedtest results, then stores the voyage history in SQLite for charts and reports.
- Compact status widget for watchkeeping screens.
- Expanded dashboard with live metric cards and history charts.
- ICMP ping, HTTP HEAD, DNS resolution, and speedtest monitoring.
- VSAT, Starlink, and generic threshold profiles.
- Local SQLite history in
data/shipnet.db. - CSV export and voyage report generation.
- Dark/light themes and editable thresholds.
- Python 3.11+
- Windows is the primary target.
- macOS/Linux are supported for development and testing.
Windows:
run.batmacOS/Linux:
./run.shThe launchers create a local .venv, install dependencies from requirements.txt, and start the app.
Manual setup:
python3.11 -m venv .venv
source .venv/bin/activate
python -m pip install -r requirements.txt
python shipnet.pywOn Windows, use pythonw shipnet.pyw to run without a console window.
Edit config.ini or use the Settings tab in expanded mode.
Important settings:
vessel_nameandvoyagelabel reports and exports.connection_typeselectsvsat,starlink, or fallback thresholds.ping_hosts,http_check, anddns_resolvedefine probe targets.speedtest_interval_min = 0disables speedtests.- Threshold sections control quality scoring for each connection profile.
The committed config.ini contains sample values only. No credentials are required.
- Measurements are stored locally in SQLite.
- The app does not upload reports or telemetry.
- Network probes go only to the targets configured in
config.ini. - Generated runtime data is ignored by Git.
.
├── shipnet.pyw # Application entry point
├── run.bat # Windows launcher
├── run.sh # macOS/Linux launcher
├── config.ini # Sample/default configuration
├── requirements.txt # Python dependencies
├── assets/icon.ico
├── data/.gitkeep # Runtime database directory
└── src/
├── app.py # CustomTkinter GUI
├── monitor.py # Ping, HTTP, DNS, speedtest workers
├── scheduler.py # Background task scheduler
├── database.py # SQLite persistence
├── reporter.py # Voyage report generation
├── quality.py # Quality scoring
└── widgets/ # Dashboard widgets
Runtime dependencies are installed from PyPI and are not vendored in this repository. They include CustomTkinter, Matplotlib, Requests, Pandas, Schedule, and speedtest-cli, each under its own upstream license.
MIT License. See LICENSE.