A real-time network monitoring application for macOS that provides comprehensive visual analysis of network connectivity through continuous ICMP ping operations.
PingGraph delivers enterprise-level network monitoring with millisecond precision timing, intelligent performance optimization, and advanced visualization capabilities. Monitor up to 8 concurrent network targets with hardware-accelerated charts maintaining smooth 60fps performance even with large datasets.
- Real-time Network Monitoring: Continuous ICMP ping operations with millisecond precision
- Multi-target Support: Monitor up to 8 network targets simultaneously
- Advanced Visualization: Hardware-accelerated charts with intelligent performance optimization
- Comprehensive Statistics: Detailed analysis including packet loss, jitter, and quality metrics
- Smart Data Management: Three-tier storage system with automatic compression
- Export Capabilities: Multiple formats (CSV, JSON, XML) with flexible data selection
- Native macOS Interface: SwiftUI-based with dark theme and keyboard shortcuts
- macOS 13.0 or later
- Xcode 15.0+ (for building from source)
- Administrator privileges (required for ICMP operations)
-
Clone the repository:
git clone https://github.com/yourusername/pinggraph.git cd pinggraph -
Open in Xcode:
open pinggraph.xcodeproj
-
Build and run:
- Select "pinggraph" scheme
- Press
⌘+Rto build and run - Grant ICMP privileges when prompted
- Add a target: Enter an IP address or hostname (e.g.,
8.8.8.8orgoogle.com) - Start monitoring: Click "Start" or press
⌘+R - View real-time data: Watch live charts showing response times and packet loss
- Manage multiple targets: Use
⌘+Tto create new tabs - Export data: Use
⌘+Eto export in various formats
- Multi-tab Interface: Up to 8 concurrent ping operations
- ICMP Network Engine: Raw socket implementation with privilege handling
- Three-tier Data Storage: Hot cache → Compact buffer → Compressed storage
- Performance Optimization: 4-tier adaptive rendering system
- Statistics Engine: Real-time network quality metrics
- Memory Efficient: 87% memory reduction through optimized data structures
- Hardware Accelerated: Metal-backed rendering for smooth performance
- Intelligent Sampling: Smart data reduction for large datasets
- Adaptive Optimization: Automatic performance tuning
Access via ⌘+,:
- Ping Interval: 0.1 to 10 seconds
- Timeout Duration: 1 to 30 seconds
- Data Retention: 10 minutes to 24 hours
- Performance Optimization: None/Light/Medium/Aggressive
- Target: IP address or hostname
- Custom Intervals: Override global settings
- IPv6 Support: Enable IPv6 connectivity testing
⌘+T: New tab⌘+W: Close tab⌘+D: Duplicate tab⌘+,: Preferences
⌘+R: Start/Resume monitoring⌘+S: Stop monitoring⌘+Shift+R: Start all tabs
⌘+E: Export current tab⌘+Shift+E: Export all tabs⌘+I: Performance dashboard
- CSV: Comma-separated values for spreadsheet analysis
- JSON: Structured data for programmatic processing
- XML: Hierarchical format for enterprise integration
- Current Tab: Active monitoring session
- All Tabs: All monitoring sessions
- Date Range: Custom time windows
- Selected Data: Custom field selection
ICMP Permission Denied:
# Run with elevated privileges
sudo open /Applications/PingGraph.app
# Or configure in System Preferences:
# System Preferences > Security & Privacy > Privacy > NetworkHigh Memory Usage:
- Reduce data retention period
- Enable aggressive optimization mode
- Close unused tabs
Poor Performance:
- Enable automatic optimization
- Reduce visible time range
- Lower ping frequency for long-term monitoring
# Clone and setup
git clone https://github.com/yourusername/pinggraph.git
cd pinggraph
# Open in Xcode
open pinggraph.xcodeproj
# Run tests
xcodebuild test -project pinggraph.xcodeproj -scheme pinggraph
# Build for release
xcodebuild archive -project pinggraph.xcodeproj -scheme pinggraphpinggraph/
├── Sources/
│ ├── App/ # Application entry point
│ ├── UI/ # User interface components
│ ├── Core/ # Core business logic
│ ├── Networking/ # Network operations
│ ├── Optimization/ # Performance optimization
│ ├── Storage/ # Data management
│ └── Models/ # Data structures
├── Tests/ # Unit and integration tests
├── docs/ # Documentation
└── design/ # Design specifications
- Swift Collections: Advanced data structures
- SwiftUI Charts: Native charting framework
- Network Framework: Modern networking APIs
- Memory: <100MB with 8 active targets
- CPU: <20% utilization during normal operation
- Rendering: 60fps charts with 1000+ data points
- Accuracy: ±1ms compared to system ping
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow Swift API Design Guidelines
- Maintain test coverage above 85%
- Include performance impact analysis
- Update documentation for new features
This project is licensed under the MIT License - see the LICENSE file for details.
- Documentation: Check the docs/ directory
- Issues: Report bugs via GitHub Issues
- Discussions: Community support and feature requests
PingGraph - Ping Network Monitoring for macOS
