System monitor application built with Electron and Rust. Monitor your system's performance in real-time.
Download the latest release from the Releases page:
| Architecture | Download |
|---|---|
| Apple Silicon (M1/M2/M3) | Peep-x.x.x-mac-arm64.dmg |
| Intel | Peep-x.x.x-mac-x64.dmg |
- Download the
.dmgfile for your Mac architecture - Open the downloaded
.dmgfile - Drag Peep to your Applications folder
- On first launch, you may need to right-click and select "Open" to bypass Gatekeeper
Note: If you see "Peep is damaged and can't be opened", run this command in Terminal:
xattr -cr /Applications/Peep.app
- Real-time CPU Monitoring - View CPU usage and core count
- Memory Tracking - Monitor RAM usage with live updates
- Disk I/O - Track disk read/write throughput
- Network I/O - Monitor network upload/download speeds
- Process Management - View running processes with detailed information
- Process Control - Kill processes directly from the application
- Native Performance - Rust-powered native module for efficient system monitoring
- Frontend: React + TypeScript
- Desktop Framework: Electron
- Native Module: Rust (via Neon)
Before building and running Peep, ensure you have the following installed:
- Node.js (v14 or higher)
- npm (comes with Node.js)
- Rust (latest stable version)
- Cargo (comes with Rust)
# Install Node.js using Homebrew
brew install node
# Install Rust
brew install rust- Clone the repository:
git clone https://github.com/glenthomas/peep.git
cd peep- Install dependencies:
npm install# Build and run the application
npm start# Build only the native Rust module
npm run build:native
# Build the TypeScript (main process, preload, and shared modules)
npm run build:ts
# Build only the renderer process (React frontend)
npm run build:renderer
# Build everything
npm run buildnpm run dev:rendererThen in another terminal:
npm run build:ts && electron .To create a distributable application:
npm run packageThis will create a .dmg and .zip file in the release directory for macOS.
Once the application is running:
-
Dashboard View: The main screen displays four cards showing:
- CPU usage
- Memory usage
- Disk I/O
- Network upload/download
-
Process List: Below the dashboard, you'll find a sortable table of running processes:
- Click column headers to sort
- Click the "Kill" button to terminate a process
-
Real-time Updates: All metrics update automatically every 2 seconds
peep/
├── src/
│ ├── main/ # Electron main process
│ │ ├── main.ts # Main entry point
│ │ └── preload.ts # Preload script for IPC
│ └── renderer/ # React frontend
│ ├── components/ # React components
│ ├── App.tsx # Main App component
│ ├── index.tsx # React entry point
│ ├── index.html # HTML template
│ └── styles.css # Global styles
├── native/ # Rust native module
│ ├── src/
│ │ └── lib.rs # Rust system monitoring code
│ └── Cargo.toml # Rust dependencies
├── dist/ # Compiled output
├── webpack.config.js # Webpack configuration
├── tsconfig.json # TypeScript configuration
└── package.json # Node.js dependencies and scripts
Peep uses a multi-layered architecture:
-
Electron Main Process (
src/main/main.ts):- Creates the application window
- Handles IPC communication
- Loads the native module
-
Native Module (
native/src/lib.rs):- Written in Rust for performance
- Uses the
sysinfocrate for system information - Exposes functions to Node.js via Neon
-
Renderer Process (
src/renderer/):- React-based UI
- Communicates with main process via IPC
- Updates UI in real-time
Currently supported:
- ✅ macOS (Intel and Apple Silicon)
Planned support:
- ⏳ Linux
- ⏳ Windows
The native Rust module ensures minimal overhead when collecting system information. The application typically uses:
- < 100MB RAM
- < 2% CPU (mostly from Electron)
- Updates every 2 seconds (configurable)
Contributions are welcome! Please feel free to submit a Pull Request.
MIT License - See LICENSE file for details
Made by Glen Thomas


