A compact Go TUI system monitor with an OpenCode-inspired visual language.
This project keeps the scope intentionally tight so the UI can stay polished:
- layered dark surfaces inspired by OpenCode's default theme
- warm amber highlight with cool secondary accents
- restrained borders, muted metadata, and a compact status rail
- live CPU and memory cards with recent-history sparklines
- a focused process preview instead of an overloaded dashboard
- Bubble Tea for the event loop
- Lip Gloss for layout and styling
- gopsutil for system metrics
go mod tidy
go run .go install ./cmd/nnmonAfter installation, run:
nnmon1/2/3- jump to overview, processes, networktab/h/l- cycle viewsj/k- move selection in list views/- search processes by name, command, or pidf- toggle cpu-active-only filter in the process viewa- open the management action palette when availablec/m/n- sort process table by cpu, memory, namer- refresh immediately?- toggle helpq/ctrl+c- quit
This is not trying to clone htop. The goal is to feel closer to OpenCode:
- one strong accent instead of rainbow overload
- subdued panels with clear hierarchy
- operational wording instead of dashboard noise
- compact cards that still read cleanly at normal terminal sizes
- Overview page with CPU, memory, swap, load, per-core pressure, and focus summaries
- Process page with sortable rows, keyboard selection, and inline process detail
- Process search and cpu-active filtering for narrowing targets before action
- Process action palette scaffold for future management operations
- Network page with per-interface throughput and counter detail
- host / platform / uptime / load / network rate metadata rail
- inline help panel with view-specific controls
If you want to keep building it out, the next most natural upgrades are:
- process search and filtering
- network history windows with longer retention
- temperature, battery, and fan sensors where supported
- export snapshots as JSON for debugging
- light theme support with tokenized colors
- process actions are wired through
internal/control - the default app now enables a local process executor on supported platforms
- process actions send real Unix signals on
darwinandlinux - unsupported platforms fall back to a non-functional executor with clear status messages