System Monitor

v1.0.1

Real-time system metrics monitoring (CPU, memory, disk, network, processes). Use when: user asks to check system status, cpu usage, memory usage, disk space,...

0· 724· 2 versions· 4 current· 4 all-time· Updated 1d ago· MIT-0
bypp@ppopen

Install

openclaw skills install openclaw-skill-system-monitor

System Monitor Skill

Monitor real-time system metrics including CPU, memory, disk, network, and processes.

When to Use

USE this skill when:

  • "Check system status"
  • "CPU usage" / "How's the CPU doing?"
  • "Memory usage" / "RAM usage"
  • "Disk space" / "How much storage left?"
  • "Network traffic" / "Network usage"
  • "Running processes" / "Top processes"
  • "System performance" / "System load"

Setup

Some tools may need installation via Homebrew:

# Install optional enhanced tools
brew install htop      # Enhanced top (better UI)
brew install nettop    # Real-time network monitoring (macOS)
brew install iostat    # I/O statistics (Linux)

Platform Detection

Detect the platform to use appropriate commands:

uname -s  # Darwin = macOS, Linux = Linux

CPU Usage

macOS

# CPU usage summary (user, system, idle)
top -l 1 -n 0 | grep "CPU usage"

# Detailed per-core usage
top -l 2 -n 0 | tail -1

# Overall CPU percentage
vm_stat | head -5

Linux

# CPU usage summary
top -bn1 | head -5

# Detailed per-core
mpstat -P ALL 1 1

# Overall
uptime

One-liner (cross-platform friendly)

# macOS
top -l 1 -n 0 -s 0 | awk '/CPU usage/ {print}'

# Linux  
top -bn1 | grep "Cpu(s)"

JSON-friendly (scripting)

# macOS: CPU stats with specific fields
top -l 1 -n 0 -s 0 -stats pid,pcpu,pmem,comm

Memory Usage

macOS

# Memory info (page size, pages active, wired, compressed, free)
vm_stat

# Human-readable summary
top -l 1 -n 0 | grep "PhysMem"

# Full memory details
hostinfo | grep "memory"

Linux

# Human-readable
free -h

# Detailed in MB
free -m

# Swap info
swapon -s

Memory Calculation (macOS)

# Calculate used memory from vm_stat
vm_stat | awk '/Pages active/ {active=$3} /Pages wired/ {wired=$3} /Pages free/ {free=$3} END {print "Active: " active " Wired: " wired " Free: " free}'

Disk Space

macOS & Linux

# All filesystems, human-readable
df -h

# Specific volume (macOS)
df -h /

# Linux root
df -h /

# Show inode usage (Linux)
df -i

# Sorted by usage (macOS)
df -h | sort -k5 -h

# Only local filesystems
df -h -t local

Disk Usage (directory-level)

# Current directory (macOS)
du -sh .

# Top-level directories
du -h --max-depth=1

# Linux sorted by size
du -h --max-depth=1 | sort -h

Network Statistics

macOS

# Network interfaces (use ifconfig instead)
ifconfig -a

# Active connections
lsof -i -n | head -20

# Listening ports
lsof -i -n | grep LISTEN

# Real-time network usage
nettop -P -L 1 -J bytes_in,bytes_out

Linux

# Interface statistics
ip -s link

# TCP/UDP stats
ss -s

# Active connections
ss -tunap

Process List

macOS

# Top processes by CPU
top -o cpu -l 1 -n 15

# Top processes by memory
top -o mem -l 1 -n 15

# All processes
ps aux

# User processes
ps -U $(whoami)

Linux

# Top processes by CPU
top -bn1 | head -12

# Top by memory
top -bo %MEM -bn1 | head -12

# Process tree
pstree

# User processes
ps -U $(whoami) --sort=-%mem

System Load

macOS

# Load average
uptime

# Detailed
hostinfo | grep "load"

Linux

uptime
# or
cat /proc/loadavg

Combined System Status

Quick Health Check

# CPU, Memory, Disk in one view (macOS)
echo "=== CPU ===" && top -l 1 -n 0 | grep "CPU usage"
echo "=== Memory ===" && top -l 1 -n 0 | grep "PhysMem"
echo "=== Disk ===" && df -h / | tail -1

# Linux
echo "=== CPU ===" && top -bn1 | head -5
echo "=== Memory ===" && free -h
echo "=== Disk ===" && df -h /
echo "=== Load ===" && uptime

Bundled Scripts

system-stats.sh

A combined system stats script for quick health checks:

#!/bin/bash
# Combined system stats - run from skills/system-monitor/scripts/

PLATFORM=$(uname -s)

echo "=== System Stats ==="
echo "Time: $(date)"
echo "Platform: $PLATFORM"
echo ""

if [ "$PLATFORM" = "Darwin" ]; then
    echo "--- CPU ---"
    top -l 1 -n 0 -s 0 | grep "CPU usage"
    echo ""
    
    echo "--- Memory ---"
    top -l 1 -n 0 | grep "PhysMem"
    vm_stat | head -5
    echo ""
    
    echo "--- Disk ---"
    df -h / | tail -1
    echo ""
    
    echo "--- Load Average ---"
    uptime
else
    echo "--- CPU ---"
    top -bn1 | head -5
    echo ""
    
    echo "--- Memory ---"
    free -h
    echo ""
    
    echo "--- Disk ---"
    df -h / | tail -1
    echo ""
    
    echo "--- Load Average ---"
    uptime
fi

Notes

  • macOS uses vm_stat for memory, Linux uses free
  • top output format differs between platforms
  • Use hostinfo on macOS for system overview
  • Use lsof or nettop instead of deprecated netstat
  • For continuous monitoring, use watch command or run top in loop

Version tags

latestvk97604f89a9cvq17ahey4mrb5s82f0x4

Runtime requirements

📊 Clawdis
Binstop, df, vm_stat, free, lsof, uptime