IndexPackages

about-system

A Node.js script to display key system information with emojis. Cross-platform support for Windows, macOS, and Linux with customizable output and caching.

DocumentationOpen in StackBlitz
NPM Monthly Downloadsnpm versionNPM Total DownloadsTypeScript typesInstall sizeCoverage

🤖 Agent skillnpx skills@latest add https://github.com/OpenSourceAGI/dev-tools-starter-agent --skill about-system (what it covers)

A TypeScript/Node.js library to display comprehensive system information with customizable output.

  • 📊 Comprehensive: 30+ system metrics including CPU, GPU, network, containers, and more
  • 🌍 Cross-platform: Works on Linux, macOS, and Windows, and Android
  • 🎨 Customizable: Configure colors, emojis, and display order
  • 🔌 Two Modes: Use as CLI tool or import as API
  • 🚀 Cached: Intelligent caching system for quick repeated access
  • 💾 TypeScript: Full type definitions included

Installation

npx about-system
npm install -g about-system
about-system
bun x about-system

Desktop app

The same 30+ metrics as a window you can leave open, built natively for every desktop OS. The CLI is compiled into the app as a Tauri sidecar, so an installer runs on a machine with no Node, no Bun, and no package manager on it.

Download an installer

Every tagged release attaches a native build for each desktop system (Releases):

SystemArchitectureInstaller
Windows 10 1803+ / 11x86_64About System_<version>_x64_en-US.msi, About System_<version>_x64-setup.exe
macOS 10.15+Apple Silicon + Intel (universal)About System_<version>_universal.dmg
Linux (Debian/Ubuntu)x86_64, aarch64About System_<version>_amd64.deb, About System_<version>_arm64.deb
Linux (Fedora/RHEL)x86_64, aarch64About System-<version>-1.x86_64.rpm, About System-<version>-1.aarch64.rpm
Linux (any distro)x86_64, aarch64About System_<version>_amd64.AppImage, About System_<version>_aarch64.AppImage

Installers are unsigned by default, so macOS shows an "unidentified developer" warning and Windows shows a SmartScreen prompt on first launch.

Build it yourself

Needs Rust 1.77.2+, Node 18+, Bun, and your platform's Tauri prerequisites:

bun install                # the CLI's dependencies — the sidecar is compiled from its source
cd native
npm install
npm run build:desktop      # regenerates config, compiles the sidecar, builds the installers

Artifacts land in native/src-tauri/target/release/bundle/. Each installer must be built on its own OS and architecture — neither Tauri nor the bun build --compile sidecar cross-compiles, which is why .github/workflows/about-system-desktop.yml runs the same two commands on a Windows, a macOS, an x86_64 Linux, and an aarch64 Linux runner and attaches every artifact to one release.

The app is scaffolded from packages/native-app-wrapper — a Tauri shell that turns one JSON profile into a native app — and owns its whole identity (name, bundle id, version, window, sidecar command) in native/profiles/about-system.json. See native/README.md for the development loop, the universal-macOS build, and the known limitations (no Windows-on-ARM build, since Bun has no windows-arm64 compile target; and no mobile build, since Android and iOS don't let an app spawn a bundled executable).

Examples

systeminfo_greeting

👤 deck 🏠 steamdeck 📁 90% 💾 2/14GB 🔝 6% cursor ⏱️ 1d 7h 18m 🌎 174.194.193.230 📍 San Jose 🔗 http://230.sub-174-194-193.myvzw.com 👮 Verizon Business ⚡ SteamOS 📈 AMD Custom APU 0405 💻 Jupiter 🔧 6.11.11-valve12-1-neptune-611-g517a46b477e1 🐚 fish 🚀 npm pip docker nvim bun 📦 docker-node

👤 u0_a365 🏠 localhost 📁 54% 💾 1/5GB 🔝 1% fish ⏱️ 4d 9h 19m 🌎 174.194.193.230 🌐 192.168.42.229 📍 San Jose 🔗 http://230.sub-174-194-193.myvzw.com 👮 Verizon Business ⚡ Android 13 📈 Kryo-4XX-Silver 💻 SM-G781U 🔧 4.19.113-27223811 🐚 nu 🚀 apt npm pip hx nvim

CLI Usage

Basic Usage

# Show all system information
about-system

# Show specific fields
about-system cpu,ram_used,disk_used

# Output as JSON
about-system --json

# Get help
about-system --help

Installation as Shell Greeting

# Install as shell greeting (runs on terminal startup)
about-system --install

Configuration

# View current settings
about-system --settings-show

# Reset settings to defaults
about-system --settings-reset

# Set specific configuration values
about-system --set display.show_emojis false
about-system --set colors.user blue
about-system --set emojis.cpu "🚀 "
about-system --set labels.cpu "Processor"

# Clear cache
about-system --refresh

API Usage

You can import and use individual system info functions:

import { infoFunctions, getSystemInfo } from "about-system";

// Create a context with cache
const cache = {};
const context = { cache };

// Use individual functions
const cpu = infoFunctions.cpu(context);
const ram = infoFunctions.ram_used(context);
const uptime = infoFunctions.uptime();

// Build custom monitoring tools
async function getBasicInfo() {
  return {
    user: infoFunctions.user(),
    hostname: infoFunctions.hostname(),
    uptime: infoFunctions.uptime(),
  };
}

Available Info Blocks

BlockDescriptionExample Output
userCurrent username👤 username
hostnameSystem hostname🏠 hostname
ipPublic IP address🌎 192.168.1.1
iplocalLocal IP addresses🌐 192.168.1.100
cityLocation based on IP📍 San Francisco
domainReverse DNS hostname🔗 http://example.com
ispInternet service provider👮 Verizon Business
osOperating system⚡ Ubuntu 22.04
cpuCPU information📈 Intel Core i7-8700K
gpuGraphics card🎮 NVIDIA GeForce RTX 3080
disk_usedDisk usage percentage📁 75%
disk_sizeDisk size per real disk💽 256/512GB
ram_usedMemory usage💾 8/16GB
top_processHighest CPU process🔝 15% chrome
uptimeSystem uptime⏱️ 2d 5h 30m
deviceDevice model💻 MacBook Pro
kernelKernel version🔧 5.15.0-56-generic
shellCurrent shell🐚 fish
pacmanAvailable package managers🚀 apt npm pip docker
portsOpen network ports🔌 80http 443https 22ssh
containersRunning Docker containers📦 nginx redis postgres

Configuration

The script uses a JSON settings file located at:

  • Linux/macOS: ~/.config/systeminfo-settings.json
  • Windows: %APPDATA%\systeminfo-settings.json

Settings Commands

# Show current settings
about-system --settings-show

# Reset to defaults
about-system --settings-reset

# Set individual values
about-system --set display.show_emojis false
about-system --set colors.user blue
about-system --set emojis.cpu "🚀 "
about-system --set labels.hostname "Computer"
about-system --set cache.enabled true

# Clear cache
about-system --cache-clear

Example Settings

{
  "version": "1.0.0",
  "display_order": [
    ["user", "hostname", "os", "device", "kernel", "cpu", "gpu"],
    [
      "disk_used",
      "ram_used",
      "top_process",
      "uptime",
      "temperature",
      "battery"
    ],
    ["ip", "iplocal", "city", "domain", "isp"],
    ["shell", "pacman", "services_running", "containers"]
  ],
  "colors": {
    "user": "red",
    "hostname": "orange",
    "disk_used": "purple",
    "ram_used": "yellow",
    "uptime": "cyan",
    "ip": "green",
    "os": "blue",
    "cpu": "orange",
    "shell": "orange"
  },
  "emojis": {
    "user": "👤 ",
    "hostname": "🏠 ",
    "cpu": "📈 ",
    "gpu": "🎮 ",
    "disk_used": "📁 ",
    "ram_used": "💾 ",
    "ip": "🌎 ",
    "shell": "🐚 "
  },
  "labels": {
    "user": "User",
    "hostname": "Host",
    "cpu": "CPU",
    "gpu": "GPU",
    "disk_used": "Disk",
    "ram_used": "RAM",
    "ip": "IP",
    "shell": "Shell"
  },
  "display": {
    "show_emojis": true,
    "show_backgrounds": true,
    "single_line": true,
    "line_wrap_length": 100
  },
  "network": {
    "show_offline_message": true
  },
  "advanced": {
    "debug": false
  }
}

Customization Options

Colors

Available color options for each info block:

  • red, orange, yellow, green, blue, cyan, purple, magenta, gray, lightblue
  • Use multicolor for ports to get a rainbow effect

All colors use darker, more saturated shades so they stay readable on both light and dark terminal backgrounds.

about-system --set colors.user blue
about-system --set colors.hostname green

Backgrounds

By default, every info block is rendered as a colored background badge with a contrasting text color, so it stays legible no matter what background color your terminal uses. Disable it to fall back to plain colored text:

about-system --set display.show_backgrounds false

Emojis

Customize the emoji displayed for each info block. Emojis can be toggled on/off globally with display.show_emojis or individually customized:

# Toggle emojis on/off
about-system --set display.show_emojis false

# Customize individual emojis
about-system --set emojis.cpu "🚀 "
about-system --set emojis.hostname "🖥️ "
about-system --set emojis.battery "🔋 "

Labels

Customize the text labels for each info block:

about-system --set labels.cpu "Processor"
about-system --set labels.hostname "Computer"
about-system --set labels.ram_used "Memory"

Line Wrapping

By default, output is printed as one continuous line and lets the terminal soft-wrap it on resize. To instead hard-wrap at a fixed width (filling each line completely, breaking mid-block if needed), disable single_line:

about-system --set display.single_line false
about-system --set display.line_wrap_length 100

Platform-Specific Features

Windows

  • Detects Windows-specific package managers (choco, winget, scoop)
  • Uses wmic for system information
  • Supports PowerShell and Command Prompt integration

Linux

  • Detects Linux package managers (apt, yum, pacman, etc.)
  • Reads from /proc and /sys filesystems
  • Supports various shells (bash, zsh, fish, nushell)

macOS

  • Detects macOS-specific tools
  • Uses system_profiler for hardware info
  • Supports zsh and bash integration

Cache System

The script implements intelligent caching to improve performance:

  • IP Info: 5 minutes (network requests are expensive)
  • System Info: 24 hours (rarely changes)
  • Process Info: 5 seconds (changes frequently)
  • Disk/RAM: 1 minute (moderate change frequency)

Shell Integration

The --install flag automatically configures the script as a shell greeting:

  • Bash: Adds to ~/.bashrc
  • Zsh: Adds to ~/.zshrc
  • Fish: Adds to ~/.config/fish/config.fish
  • NuShell: Adds to ~/.config/nushell/config.nu
  • PowerShell: Provides instructions for profile setup

Documentation

JSDoc Comments

All API functions include comprehensive JSDoc documentation:

import { infoFunctions } from "about-system/api";

// Hover over any function in your IDE to see:
// - Function description
// - Parameter details
// - Return type information
// - Usage examples
// - Platform-specific notes

infoFunctions.cpu(context); // IDE shows full documentation

Features:

  • ✅ Every function documented with JSDoc
  • ✅ Parameter and return type descriptions
  • ✅ Real-world usage examples
  • ✅ Platform compatibility notes
  • ✅ IDE autocomplete support

TypeScript Support

Full TypeScript definitions with:

  • Complete SystemInfo interface
  • All 30+ field types documented
  • Platform-specific type unions
  • Exported helper types
import type {
  SystemInfo, // Main info object
  Platform, // Platform type
  SystemInfoOptions, // Config options
  InfoContext, // Context for functions
} from "about-system/types";

PRs Welcome

Please star this repo for updates! 🌟


Source: packages/about-system-info/README.md

Last updated on

On this page