A modern, lightweight, and customizable TUI performance monitor for your terminal.
Features β’ Installation β’ Usage β’ Configuration β’ Contributing
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.
- π 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.
Download the latest pre-compiled binaries from the Releases page.
go install github.com/sumant1122/perfdeck@latestNote
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.
git clone https://github.com/sumant1122/perfdeck.git
cd perfdeck
make build
# Binary will be in the project rootSimply run the command to start monitoring with default system tools:
perfdeck| 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 |
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)
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"]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"]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).
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.
Distributed under the MIT License. See LICENSE for details.

