A beautiful network monitoring tool with console and web interface
Project description
NetWatch - Professional Network Monitor ๐
An elegant network monitoring tool with modern console and web interfaces, designed with a professional pastel color palette.
โจ Features
๐ฅ๏ธ Console Interface
- ๐ฏ Interface Selection: Choose specific interfaces or monitor all
- ๐ Real-time Traffic: Live monitoring of sent/received bytes per second
- ๐ Cumulative Statistics: Total bytes sent and received
- ๐จ ASCII Graphs: Colorful real-time traffic history graphs
- ๐ Colorful Interface: Rich terminal colors with emojis and visual elements
๐ Web Interface
- ๐จ Professional Pastel Palette: Modern design with soft and elegant colors
- ๐ฑ Responsive: Perfectly adapted for mobile and desktop
- ๐ Interactive Charts: Advanced visualization with Chart.js
- ๐ Real-time Data: Automatic updates without simulations
- ๐ซ No Fake Data: Shows disconnected state when no real data is available
- ๐ฏ REST API: Endpoints for integration with other systems
๐ง Technical Features
- ๐ Cross-platform: Works on Windows, Linux and macOS
- โก Easy Installation: Simple pip installation
- ๐ Python 3.7+: Support for modern Python versions
- ๐ฆ Professional Packaging: Ready for distribution
๐ Installation
Method 1: Install from PyPI (Recommended)
pip install netwatch-monitor
Method 2: Install from Source
- Clone the repository:
git clone https://github.com/PC0staS/netwatch.git
cd netwatch
- Install in development mode:
pip install -e .
๐ฎ Usage
๐ฅ๏ธ Console Interface
After installation, simply run:
netwatch
The tool will:
- Show all available network interfaces
- Let you select which interfaces to monitor:
0- Monitor ALL interfaces1,2,3- Monitor specific interfaces (comma-separated)
- Start real-time monitoring with ASCII graphs
๐ Web Interface
To start the web interface:
netwatch-web
For network access (accessible from other devices on your local network):
netwatch-web --network
Or with custom options:
netwatch-web --host 0.0.0.0 --port 8080 --debug
Alternative method using main command:
netwatch --web --network --port 8080
Then open your browser at http://localhost:5000 (or the port you specify).
For network access: Use your computer's IP address from other devices, e.g., http://192.168.1.100:5000
Web Interface Features:
- ๐จ Professional Pastel Palette: Soft and elegant colors
- ๐ฑ Responsive Design: Works perfectly on mobile devices
- ๐ Interactive Charts: Advanced data visualization
- ๐ Real-time Updates: Automatic refresh every 2 seconds
- ๐ซ No Simulated Data: Shows disconnected state when no data available
- ๐ฏ Intuitive Controls: Easy interface selection and monitoring control
Example Usage - Console
$ netwatch
๐ NetWatch - Network Monitor
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ Starting network monitoring...
๐ Gathering interface data...
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ AVAILABLE NETWORK INTERFACES
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
1. Ethernet
2. Wi-Fi
3. Loopback
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ฏ SELECTION OPTIONS:
0 - Monitor ALL interfaces
1,2,3 - Monitor specific interfaces (comma-separated)
Example: '1,3' to monitor interfaces 1 and 3
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ Enter your selection: 1
โ
Selected interfaces:
- Ethernet
๐ Monitoring started for 1 interface(s)
โฑ๏ธ Updates every second - Press Ctrl+C to stop
๐ Interface Display
For each selected interface, you'll see:
- Real-time Traffic: Current bytes per second (sent/received)
- Cumulative Traffic: Total bytes since monitoring started
- ASCII Graphs: Beautiful colored graphs showing traffic history
- Visual Elements: Emojis, colors, and borders for better readability
๐จ Features Details
ASCII Graphs
- Width: 65 characters wide
- Height: 6 rows of data
- Colors: Different color schemes for sent (blue) and received (green) traffic
- Intensity: Multiple intensity levels based on traffic volume
- Scale: Automatic scaling with max value display
Web Interface Color Palette
- Primary: Soft purple (#8B7EC8)
- Secondary: Mint green (#A8D5BA)
- Accent: Soft pink (#FFB6C1)
- Success: Aqua mint (#98E4D6)
- Warning: Soft yellow (#F4D03F)
- Danger: Soft coral (#F1948A)
๐ ๏ธ Requirements
- Python 3.7+
- psutil (automatically installed)
- Flask & Flask-SocketIO (for web interface)
- Works on Windows, Linux, and macOS
- Terminal with ANSI color support (most modern terminals)
๐ง Development
Project Structure
netwatch/
โโโ netwatch/
โ โโโ __init__.py
โ โโโ monitor.py # Core monitoring logic
โ โโโ cli.py # Command line interface
โ โโโ web.py # Web interface
โ โโโ static/ # CSS, JS, and assets
โ โโโ templates/ # HTML templates
โโโ setup.py # Package setup
โโโ pyproject.toml # Modern Python packaging
โโโ requirements.txt # Dependencies
โโโ README.md # This file
Building from Source
# Clone the repository
git clone https://github.com/PC0staS/netwatch.git
cd netwatch
# Install in development mode
pip install -e .
# Run the console version
netwatch
# Run the web version
netwatch-web
๐ฏ Use Cases
- Network Debugging: Monitor interface activity during troubleshooting
- Performance Monitoring: Track bandwidth usage on specific interfaces
- Development: Monitor network activity during application development
- System Administration: Quick network interface overview
- Educational: Learn about network interfaces and traffic patterns
- Remote Monitoring: Use web interface for remote network monitoring
๐ Cross-Platform Support
Windows
- Full support with PowerShell and Command Prompt
- Colorful interface with emoji support
- All network interfaces detected
- Web interface works with all browsers
Linux
- Native terminal support
- Works with all major distributions
- Systemd service compatible
- Web interface accessible remotely
macOS
- Terminal.app and iTerm2 support
- Full color and emoji support
- Works with all network interfaces
- Safari and Chrome compatible
๐ Commands
Console Commands
- Start Console:
netwatch - Stop:
Ctrl+C - Interface Selection: Follow on-screen prompts
Web Commands
- Start Web Interface (localhost only):
netwatch-web - Start Web Interface (network access):
netwatch-web --network - Custom Host/Port:
netwatch-web --host 0.0.0.0 --port 8080 - Network + Custom Port:
netwatch-web --network --port 8080 - Debug Mode:
netwatch-web --debug - Help:
netwatch-web --help
Network Access
- Localhost only:
netwatch-web(default) - Network access:
netwatch-web --networkornetwatch-web --host 0.0.0.0 - Access from other devices: Use your computer's IP address (e.g.,
http://192.168.1.100:5000)
๐ API Endpoints
The web interface provides REST API endpoints:
GET /api/interfaces- List available network interfacesGET /api/stats- Get current network statisticsPOST /api/start_monitoring- Start monitoring selected interfacesPOST /api/stop_monitoring- Stop monitoring
๐ Examples
Monitor All Interfaces
netwatch
# Select: 0
Monitor Specific Interfaces
netwatch
# Select: 1,3,5
Monitor Single Interface
netwatch
# Select: 1
Start Web Interface on Custom Port
netwatch-web --port 8080
๐ Troubleshooting
Common Issues
- No interfaces shown: Make sure you have network interfaces configured
- Colors not working: Ensure your terminal supports ANSI colors
- Permission errors: Some systems may require elevated privileges for network monitoring
- Import errors: Make sure all dependencies are installed:
pip install -r requirements.txt - Web interface not accessible: Check if port is available and firewall settings
Requirements
- Minimum Python 3.7
- psutil, Flask, Flask-SocketIO libraries
- Terminal with ANSI color support
- Modern web browser for web interface
๐ License
This project is open source and available under the MIT License.
๐ค Contributing
Contributions are welcome! Please feel free to submit pull requests or report issues.
๐ฎ Future Features
- Export data to CSV/JSON
- Historical data storage
- Network alerts/notifications
- Bandwidth usage graphs
- Custom refresh intervals
- Multiple monitoring modes
- User authentication for web interface
- Dark/Light theme toggle
Made with โค๏ธ for network monitoring enthusiasts!
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file netwatch_monitor-1.1.2.tar.gz.
File metadata
- Download URL: netwatch_monitor-1.1.2.tar.gz
- Upload date:
- Size: 26.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a97eb1a6cdf5c5017c9640c49b310173200597f33977d51106150c8eb34b7cd4
|
|
| MD5 |
a41e5696dd63ce3f3800e410f8afbd3f
|
|
| BLAKE2b-256 |
8a6d6b6284e0f72412985e71319bddfde67035d7154fb1e88d6ecda7f5d05f6c
|
Provenance
The following attestation bundles were made for netwatch_monitor-1.1.2.tar.gz:
Publisher:
publish.yml on PC0staS/netwatch
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
netwatch_monitor-1.1.2.tar.gz -
Subject digest:
a97eb1a6cdf5c5017c9640c49b310173200597f33977d51106150c8eb34b7cd4 - Sigstore transparency entry: 275769012
- Sigstore integration time:
-
Permalink:
PC0staS/netwatch@5ff9955480708b378828e6796f152a4f259da052 -
Branch / Tag:
refs/tags/v1.1.2 - Owner: https://github.com/PC0staS
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@5ff9955480708b378828e6796f152a4f259da052 -
Trigger Event:
release
-
Statement type:
File details
Details for the file netwatch_monitor-1.1.2-py3-none-any.whl.
File metadata
- Download URL: netwatch_monitor-1.1.2-py3-none-any.whl
- Upload date:
- Size: 23.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fd8f6c83048622fa65f66926073e076fb938be1c30ea9b61f07d307f8609e585
|
|
| MD5 |
96adc3d331ce3b8a01b664ef5ac2ecde
|
|
| BLAKE2b-256 |
5d8ed7bc3d6b57f4c710ca7cc690357e49bafcec2ca52cb569d1ec5c54dcfad8
|
Provenance
The following attestation bundles were made for netwatch_monitor-1.1.2-py3-none-any.whl:
Publisher:
publish.yml on PC0staS/netwatch
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
netwatch_monitor-1.1.2-py3-none-any.whl -
Subject digest:
fd8f6c83048622fa65f66926073e076fb938be1c30ea9b61f07d307f8609e585 - Sigstore transparency entry: 275769027
- Sigstore integration time:
-
Permalink:
PC0staS/netwatch@5ff9955480708b378828e6796f152a4f259da052 -
Branch / Tag:
refs/tags/v1.1.2 - Owner: https://github.com/PC0staS
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@5ff9955480708b378828e6796f152a4f259da052 -
Trigger Event:
release
-
Statement type: