A modern, lightweight, and customizable TUI performance monitor for your terminal.
Features • Installation • Usage • Configuration • Contributing
💡 Why Perfdeck?
Traditional performance monitors often overwhelm users with information or lack the flexibility to show exactly what you need. Perfdeck solves this by providing:
- Consolidation: View output from multiple diagnostic tools (like
top,vmstat,netstat) in one place. - Focus: A clean, tabbed interface lets you switch between different metrics without terminal clutter.
- Visibility: Real-time sparklines provide an immediate "at-a-glance" health check of your system's core resources.
- Flexibility: Don't like the defaults? Bring your own shell commands via a simple TOML file.
✨ Features
- 🚀 Blazing Fast: Written in Go with minimal CPU and memory overhead.
- 📂 Tabbed Navigation: Organize your monitoring tools into logical, navigable views.
- 📈 Live Sparklines: Visual summaries for Load, CPU, Memory, and Network.
- 🎨 Adaptive Themes: Seamlessly toggle between Light and Dark modes.
- ⚙️ Deeply Configurable: Custom commands, refresh intervals, and environment-specific settings.
- 🐧 Cross-Platform: Intelligent defaults for both Linux and macOS.
📸 Screenshots
Dark Mode (Default)
Light Mode
🚀 Installation
📦 Pre-built Binaries
Download the latest pre-compiled binaries from the Releases page.
🛠️ Using go install
go install github.com/sumant1122/perfdeck@latest
Note
Ensure your GOPATH/bin is in your PATH (e.g., export PATH=$PATH:$(go env GOPATH)/bin) so you can run the perfdeck command from any directory.
🔨 From Source
git clone https://github.com/sumant1122/perfdeck.git cd perfdeck make build # Binary will be in the project root
📖 Usage
Simply run the command to start monitoring with default system tools:
⌨️ Key Bindings
| Key | Action |
|---|---|
Tab / Shift+Tab |
Next / Previous Tab |
j / k (or ↓/↑) |
Scroll through command output |
t |
Toggle Light/Dark theme |
v |
Display version information |
q / Esc / Ctrl+C |
Exit Perfdeck |
⚙️ Configuration
Perfdeck is designed to be personalized. To create your own configuration, create a file named perfdeck.toml in one of the following locations (searched in this order):
$PERFDECK_CONFIG(full path to the file)~/.config/perfdeck/config.toml- The current directory (
./perfdeck.toml)
📝 Example perfdeck.toml
Create the file with your favorite editor and add the following content to customize your tabs and refresh intervals:
# Interval for updating the sparklines and default tabs global_refresh_interval = "5s" [[tab]] title = "Process Explorer" cmd = ["top", "-b", "-n", "1"] refresh_interval = "2s" # Specific interval for this tab [[tab]] title = "Network Connections" cmd = ["ss", "-tulpn"]
🍎 macOS Support
Perfdeck works great on macOS! While many Linux-native tools (like mpstat or free) are not available by default, you can easily add macOS-equivalent commands to your perfdeck.toml.
Example macOS-friendly tabs:
[[tab]] title = "Memory (vm_stat)" cmd = ["vm_stat"] [[tab]] title = "Disk I/O (iostat)" cmd = ["iostat", "-w", "1", "-c", "2"] [[tab]] title = "Battery Status" cmd = ["pmset", "-g", "batt"]
🛠 Development
We utilize a simple Makefile for a streamlined development experience:
make run: Start the application in development mode.make build: Compile the binary.make test: Execute the test suite.make lint: Run the golangci-lint (if installed).
🤝 Contributing
We love contributions! Whether it's a bug report, a new feature idea, or a documentation improvement, please feel free to:
- Check out the Contributing Guidelines.
- Open an Issue.
- Submit a Pull Request.
📜 License
Distributed under the MIT License. See LICENSE for details.

