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. Perfmon 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/Perfmon@latestgit clone https://github.com/sumant1122/Perfmon.git
cd Perfmon
make build
# Binary will be in the project rootSimply run the command to start monitoring with default system tools:
perfmon| 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 Perfmon |
Perfmon is designed to be personalized. It looks for perfmon.toml in:
$PERFMON_CONFIG~/.config/perfmon/config.toml- Current working directory
# 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"]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.

