A comprehensive, modern system monitoring web application built with Node.js, Express, EJS, and Bootstrap 5. Monitor your system's performance in real-time through a beautiful, responsive web interface with professional-grade features.
- Real-time CPU Metrics: Per-core usage, frequencies, temperatures, and load averages
- Advanced Memory Management: RAM, swap, cache, and buffer monitoring with detailed statistics
- Intelligent Storage Monitoring: All mounted drives with usage analytics and filesystem details
- Process Management: Top processes with CPU/memory usage, state monitoring, and PID tracking
- Network Intelligence: Interface monitoring with IPv4/IPv6 support, statistics, and active connections
- Responsive Design: Bootstrap 5.3.0 with mobile-first approach
- Dark/Light Themes: Seamless theme switching with persistent preferences
- Real-time Updates: Socket.io powered live data streaming
- Interactive Dashboard: Tabbed navigation, progress bars, and metric cards
- Professional UI: Clean, modern design with Bootstrap Icons
- Developer Service Filtering: Focus on tech-relevant services (Node.js, Docker, PM2, databases)
- IPv6 Network Support: Complete network interface monitoring including IPv6 addresses
- Dynamic Versioning: Automatic version display from package.json
- Performance Optimized: ARM device compatibility with fallback mechanisms
- PM2 Ecosystem: Complete process management configuration
- Health Monitoring: System status indicators and uptime tracking
- Logging System: Structured logging with rotation support
- Quick Actions: FAB menu with refresh, fullscreen, and export options
- Backend: Node.js 16+, Express.js 4.18+
- Frontend: EJS templating, Bootstrap 5.3.0, Socket.io 4.7+
- System Monitoring: systeminformation 5.21+
- Process Management: PM2 5.3+
- Icons: Bootstrap Icons 1.10+
- Development: Nodemon for hot-reload
-
Clone the repository:
git clone https://github.com/Harleythetech/CoreWatch.git cd CoreWatch
-
Install dependencies:
npm install
-
Start the application:
npm start
-
Open your browser and navigate to:
http://localhost:3001
For development with auto-restart:
npm run dev
For production with PM2:
# Install PM2 globally
npm install -g pm2
# Start with PM2
npm run pm2:start:prod
# Monitor the application
npm run pm2:monit
CoreWatch/
βββ index.js # Main server with ASCII banner
βββ package.json # Dependencies and PM2 scripts
βββ ecosystem.config.js # PM2 configuration
βββ pm2-setup.sh/.ps1 # PM2 setup scripts
βββ views/
β βββ index.ejs # Modern responsive template
βββ public/
β βββ css/
β β βββ style.css # Enhanced custom styles
β βββ js/
β β βββ app.js # Real-time frontend logic
β βββ assets/
β βββ favicon.ico # Favicon
β βββ cpu.png # Logo
βββ config/
β βββ services.json # Developer services configuration
βββ logs/ # PM2 log directory
βββ .gitkeep
# Server Configuration
PORT=3001 # Server port (default: 3001)
NODE_ENV=production # Environment mode
# CoreWatch Specific
COREWATCH_UPDATE_INTERVAL=60000 # Update interval in ms (default: 1 minute)
COREWATCH_MAX_PROCESSES=50 # Max processes to display
COREWATCH_MAX_CONNECTIONS=100 # Max network connections to show
npm run pm2:start # Start with default config
npm run pm2:start:prod # Start in production mode
npm run pm2:start:dev # Start with file watching
npm run pm2:stop # Stop the application
npm run pm2:restart # Restart the application
npm run pm2:reload # Zero-downtime reload
npm run pm2:logs # View logs
npm run pm2:monit # Open monitoring dashboard
npm run pm2:status # Check status
Configure developer-focused services in config/services.json
:
{
"development": ["node", "nodejs", "pm2", "docker"],
"databases": ["mysql", "postgresql", "mongodb", "redis"],
"webservers": ["nginx", "apache", "httpd"],
"media": ["plex", "jellyfin", "pihole"]
}
- Chrome: 90+
- Firefox: 88+
- Safari: 14+
- Edge: 90+
- Mobile: iOS Safari 14+, Chrome Mobile 90+
- Individual core usage with real-time percentages
- Core frequencies and speed monitoring
- CPU temperature tracking (hardware dependent)
- Load averages and performance metrics
- ARM device optimization
- RAM usage with visual progress indicators
- Swap memory monitoring and statistics
- Cache and buffer memory tracking
- Detailed memory breakdown in GB
- Percentage-based usage with color coding
- All mounted filesystems detection
- Usage percentages with dynamic progress bars
- Total, used, and available space in GB
- Filesystem type identification
- Mount point information
- Top processes by CPU and memory usage
- Process state monitoring (running, sleeping, zombie)
- PID tracking and process naming
- Windows-specific process state handling
- Real-time process statistics
- Network interface detection (IPv4 + IPv6)
- Interface statistics and operstate
- Data transfer rates (RX/TX)
- Active network connections
- Protocol and port monitoring
- Comprehensive system details
- Hostname, OS, and kernel information
- Architecture and platform detection
- System uptime and boot time
- User session monitoring
- Developer-focused service filtering
- Service health monitoring
- Running status and resource usage
- Configurable service categories
- Dark Mode: Professional dark theme with blue accents
- Light Mode: Clean light theme with proper contrast
- Theme Persistence: localStorage saves user preference
- Automatic Detection: Respects system theme preference
- Metric Cards: Hover effects and smooth animations
- Progress Bars: Color-coded based on usage levels
- Tables: Responsive with Bootstrap styling
- Navigation: Tab-based interface for different metrics
Customize appearance by modifying public/css/style.css
:
- CSS custom properties for easy theming
- Bootstrap 5 utility classes
- Responsive breakpoints
- Custom animations and transitions
- ARM Device Support: Optimized for Raspberry Pi and similar devices
- Timeout Protection: Prevents hanging on slow systems
- Fallback Mechanisms: Minimal data mode for resource-constrained devices
- Efficient Updates: Smart data collection with 1-minute intervals
- Memory Management: Automatic restart at 1GB usage (PM2)
- Node.js: 16.0.0 or higher
- RAM: 256MB minimum (512MB recommended)
- Storage: 100MB for installation
- Network: HTTP port access (default: 3001)
-
Permission Errors
# Linux/macOS: Run with appropriate permissions sudo npm start # Windows: Run PowerShell as Administrator
-
CPU Temperature Not Available
- Hardware/driver dependent feature
- Works best on Linux with proper sensor support
- Some ARM devices may require additional configuration
-
High Memory Usage
- Normal for system monitoring applications
- PM2 automatically restarts at 1GB usage
- Optimize by reducing update frequency
-
Network Interface Issues
- Some virtual interfaces may not display correctly
- IPv6 support depends on system configuration
- Use
npm run pm2:logs
to debug network detection
Enable detailed logging:
NODE_ENV=development npm start
Monitor application health:
pm2 monit # Real-time monitoring
pm2 logs corewatch # Application logs
pm2 describe corewatch # Detailed process info
AGPL-3.0-only - This project is licensed under the GNU Affero General Public License v3.0. See the LICENSE file for details.
We welcome contributions! Please follow these steps:
- 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 existing code style
- Add comments for complex logic
- Test on multiple platforms when possible
- Update documentation for new features
- Issues: GitHub Issues
- Security: Security Policy
- Discussions: GitHub Discussions
- systeminformation: Comprehensive system information library
- Bootstrap: Modern responsive framework
- Socket.io: Real-time communication
- PM2: Production process management
- Node.js Community: Excellent ecosystem support
Made with β€οΈ by Harleythetech
System monitoring reimagined for the modern web