npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

tr200

v2.0.7

Published

Cross-platform system information report with Unicode box-drawing display

Readme

TR-200 Machine Report

SKU: TR-200, filed under Technical Reports (TR).

What is it?

A machine information report by SHAUGHNESSY V DEVELOPMENT INC. (originally from United States Graphics Company)

"Machine Report" is similar to Neofetch, but very basic. It's a bash script (or PowerShell on Windows) that's linked in the user's login startup script (.bashrc, .zshrc, or PowerShell profile); it displays useful machine information right in the terminal session. The report automatically displays when a user logs in, opens a new terminal, or SSHs into the machine. See installation instructions below.

🎉 Key Features

This version includes major enhancements:

  • Cross-Platform: Linux, macOS, Windows (PowerShell), BSD (partial)
  • Multi-Shell Support: bash, zsh (macOS default), PowerShell
  • Auto-Run Everywhere: Boot, login, SSH, new terminal windows
  • Clean Uninstall: uninstall command removes all configurations
  • lastlog2 Support: Works with modern Debian/Raspberry Pi OS (Trixie+)
  • Non-ZFS Support: Works on standard ext4/APFS/NTFS/other filesystems
  • Raspberry Pi Tested: Fully working on ARM64 systems

Status Update

~~‼️*** WARNING ***‼️~~

~~Alpha release, only compatible with Debian systems with ZFS root partition running as root user. This is not ready for public use at all.~~

✅ This fork is stable and tested on:

  • Raspberry Pi OS (Debian Trixie)
  • Standard Debian systems (with or without ZFS)
  • Non-root user installations
  • ARM64 and x86_64 architectures

Software Philosophy

Since it is a bash script, you've got the source code. Just modify that for your needs. No need for any abstractions, directly edit the code. No modules, no DSL, no config files, none of it. Single file for easy deployment. Only abstraction that's acceptable is variables at the top of the script to customize the system, but it should stay minimal.

Problem with providing tools with a silver spoon is that you kill the creativity of the users. Remember MySpace? Let people customize the hell out of it and share it. Central theme as you'll see is this:

ENCOURAGE USERS TO DIRECTLY EDIT THE SOURCE

When you build a templating engine, a config file, a bunch of switches, etc; it adds 1) bloat 2) complexity 3) limits customization because by definition, customization template engine is going to be less featureful than the source code itself. So let the users just edit the source. Keep it well organized.

Another consideration is to avoid abstracting the source code at the expense of direct 1:1 readability. For e.g., the section "Machine Report" at the end of the bash script prints the output using printf—a whole bunch load of printf statements. There is no need to add loops or functions returning functions. What you see is roughly what will print. 1:1 mapping is important here for visual ID.

Design Philosophy

Tabular, short, clear and concise. The tool's job is to inform the user of the current state of the system they are logging in or are operating. No emojis (except for the one used as a warning sign). No colors (as default, might add an option to add colors).

System Compatibility

Originally Designed For

  • AMD EPYC CPU
  • Debian OS
  • ZFS installed on root partition
  • VMWare Hypervisor

Now Also Works On

  • Raspberry Pi (ARM64 Cortex-A72)
  • Standard Linux filesystems (ext4, btrfs, xfs, etc.)
  • Bare metal and virtualized systems
  • Non-root user installations

Dependencies

  • lscpu (usually pre-installed)
  • lastlog2 (modern Debian/Raspberry Pi OS) OR lastlog (legacy systems)

If your system is different, things might break. Look up the offending line and you can try to fix it for your specific system.


Installation

📦 npm Install (Recommended - All Platforms)

The easiest way to install TR-200 on any platform:

npm install -g tr200

Run on-demand:

tr200
# or
report

Set up auto-run on terminal startup:

tr200 --install

Remove auto-run:

tr200 --uninstall

Completely uninstall:

tr200 --uninstall
npm uninstall -g tr200

Requirements: Node.js 14.0.0 or later


Quick Reference

| Command | Description | |---------|-------------| | tr200 | Run the machine report | | tr200 --help | Show help | | tr200 --version | Show version | | tr200 --install | Set up auto-run on terminal startup | | tr200 --uninstall | Remove auto-run configuration |


⚡ Alternative: install.sh (No Node.js Required)

For users without Node.js:

cd ~/git-projects && gh repo clone RealEmmettS/usgc-machine-report && \
cd RealEmmettS-usgc-machine-report && ./install.sh

The install.sh script handles everything: OS detection, dependency installation, backup, configuration, and auto-run setup.


🧳 Downloadable Installer Bundle (GUI-friendly)

Prefer not to touch the terminal? Download the pre-packaged zip (hosted soon at a friendly URL like https://…/tr-200-machine-report.zip), extract it anywhere, and double-click one of these launchers inside the extracted folder:

| Platform | Launcher | What it does | | --- | --- | --- | | Windows | install_windows.exe | Runs the PowerShell installer via the bundled ps2exe executable so it works from Explorer | | macOS | install_mac.command | Opens Terminal automatically and runs install.sh with full macOS detection | | Linux (Debian/Ubuntu/Arch/Fedora/etc.) | install_linux.sh | Finds your terminal emulator, launches it, and runs install.sh with all the existing distro detection |

Each launcher simply calls the same install.sh/install_windows.ps1 logic already in this repo, so you get identical results without typing commands manually. Keep the extracted directory structure intact so the launchers can find the scripts.

Building the zip yourself

Maintainers can regenerate the bundle with:

./tools/package_release.sh

The script creates dist/tr-200-machine-report.zip containing the launchers, machine_report.sh, documentation, and the latest Windows assets. If pwsh + ps2exe are available it also builds install_windows.exe automatically; otherwise it leaves the PowerShell installer in place with a warning so you can build the executable later on Windows.


🤖 Claude Code Installation

Ask Claude Code:

npm install -g tr200 && tr200 --install

🛠️ Manual Installation (Advanced)

For login sessions over ssh, reference the script ~/.machine_report.sh in your .bashrc file. Make sure the script is executable by running chmod +x ~/.machine_report.sh.

Copy machine_report.sh from this repository and add it to ~/.machine_report.sh ('.' for hidden file if you wish). Reference it in your .bashrc file as follows:

# This is your .bashrc file.
# Add the following lines anywhere in the file.

# Machine Report alias - run anytime with 'report' command
alias report='~/.machine_report.sh'

# Run Machine Report only when in interactive mode
if [[ $- == *i* ]]; then
    ~/.machine_report.sh
fi

🚀 Using the Report Command

Once installed, you can run the machine report anytime with:

report

Or directly:

~/.machine_report.sh

Automatic display: Machine Report will automatically appear when you open a new terminal or SSH into the machine.


🔧 Customization

Following the project's philosophy, directly edit the source to customize:

nano ~/.machine_report.sh

Common customizations:

  • Line 15: report_title - Change the header text
  • Line 18: zfs_filesystem - Set your ZFS pool name
  • Lines 6-11: Adjust column widths and padding

✅ Compatibility Matrix

| System | Architecture | Filesystem | Bash | Status | |--------|-------------|------------|------|--------| | Raspberry Pi OS (Trixie) | ARM64 | ext4 | 5.x | ✅ Tested | | macOS Sonoma/Ventura | ARM64/x86_64 | APFS | 4.0+ | ✅ Full Support | | macOS (default Bash 3.2) | ARM64/x86_64 | APFS | 3.2 | ⚠️ Works with warnings | | Debian 13 (Trixie) | x86_64 | ext4/ZFS | 5.x | ✅ Working | | Debian 12 (Bookworm) | x86_64 | ext4/ZFS | 5.x | ✅ Working | | Ubuntu 24.04+ | x86_64 | ext4/ZFS | 5.x | ✅ Should work | | Fedora/RHEL 9 | x86_64 | ext4/xfs/btrfs | 5.x | ✅ Should work | | Arch/Manjaro | x86_64 | ext4/btrfs | 5.x | ✅ Should work | | Alpine Linux | x86_64 | ext4 | varies | ⚠️ May need tweaks | | BSD (FreeBSD/OpenBSD) | x86_64 | UFS/ZFS | varies | ⚠️ Partial support |


🐛 Troubleshooting

lastlog command not found

Solution: Install lastlog2 package:

sudo apt install -y lastlog2

This fork automatically handles both lastlog2 (modern) and lastlog (legacy).

CPU frequency shows blank

This is normal on some ARM systems where CPU frequency isn't exposed via /proc/cpuinfo. The script continues to work normally.

Disk usage shows wrong partition

Edit ~/.machine_report.sh and modify:

  • Line 293: root_partition="/" to your desired partition

For ZFS systems, edit:

  • Line 18: zfs_filesystem="zroot/ROOT/os" to your pool name

📝 Changelog (Fork-specific)

v2.0.1 (2026-01-30) - INSTALL FLAGS + PS 5.1 FIXES

New CLI Flags + PowerShell Compatibility

  • --install flag: Set up auto-run on terminal startup via npm
  • --uninstall flag: Remove auto-run configuration cleanly
  • --help flag: Show usage information (all scripts)
  • --version flag: Show version information (all scripts)
  • 🔧 PowerShell 5.1 compatibility: Fixed [System.Net.Dns]::GetHostName() and null-conditional operators
  • 📚 Simplified README: npm + --install promoted as primary installation method

Upgrade path:

npm update -g tr200
tr200 --install  # Re-run to update shell config if needed

v2.0.0 (2026-01-30) - SHAUGHV REBRAND + NPM RELEASE

Complete Rebrand + Auto-Run Enhancements + npm Publishing

  • 📦 Published to npm: Install globally with npm install -g tr200
    • Package name: tr200 (https://www.npmjs.com/package/tr200)
    • Commands: tr200 and report work globally after npm install
    • Cross-platform Node.js wrapper auto-detects OS and runs appropriate script
  • 🎨 Rebranded to SHAUGHNESSY V DEVELOPMENT INC.: New company branding throughout
  • 🎨 TR-200 MACHINE REPORT: Updated product line designation
  • 📜 Copyright Updated: Now under ES Development LLC (https://emmetts.dev)
  • 🔄 uninstall Command: Clean removal of all configurations on all platforms
  • 🐚 zsh Support: Full support for macOS default shell (Catalina+)
  • 🔐 Login Shell Support: Auto-runs on SSH/console login via .profile/.zprofile
  • Boot-Time Execution (Linux): systemd user service runs report at boot
  • Boot-Time Execution (macOS): LaunchAgent runs report at login
  • Boot-Time Execution (Windows): Task Scheduler runs report at login
  • 🧹 Clear Screen: Screen cleared before auto-run for clean display
  • 🗂️ File Renames: TR-100-MachineReport.ps1 → TR-200-MachineReport.ps1
  • 📁 Install Directory: Windows now uses $HOME\TR200 instead of $HOME\TR100
  • 🛠️ Enhanced Windows Installer: Task Scheduler integration, uninstall support
  • 🤖 GitHub Actions: Automated npm publishing on GitHub release

npm Packaging Details:

  • Node.js wrapper (bin/tr200.js) detects OS and spawns bash/PowerShell
  • Package includes: machine_report.sh, WINDOWS/TR-200-MachineReport.ps1
  • Requires Node.js 14+ (uses child_process.spawn() with stdio: 'inherit')
  • Supports: Windows, macOS, Linux, FreeBSD, OpenBSD

Breaking Changes:

  • Windows install directory changed from TR100 to TR200
  • PowerShell function names changed from Show-TR100Report to Show-TR200Report
  • Users upgrading should run uninstall first, then reinstall

Tested On:

  • Windows 11 (PowerShell 7+)
  • Raspberry Pi OS (Debian Trixie, ARM64)
  • macOS (zsh and bash shells)
  • Linux (bash and zsh shells)

v1.2.0-RealEmmettS (2025-11-10) - PRODUCTION READY

Cross-Platform Compatibility Release

  • Full macOS Support: Native sysctl, vm_stat, scutil integration
  • Multi-Linux Support: Works on Debian, Ubuntu, Arch, Fedora, RHEL
  • Robust Error Handling: Graceful fallbacks, no crashes on missing commands
  • Fixed ZFS Bug: Correct disk percentage calculation
  • ARM Improvements: CPU frequency now displays on Raspberry Pi
  • Bash 4.0+ Support: With Bash 3.2 compatibility warnings
  • Enhanced install.sh: macOS detection, Bash version checking
  • 🔧 OS Detection Framework: Automatic platform-specific command selection
  • 🔧 Helper Functions: command_exists, file_readable, is_ipv4
  • 📚 Updated Documentation: macOS installation guide, compatibility matrix

Breaking Changes: None - fully backward compatible

Tested On:

  • Raspberry Pi OS (Debian Trixie, ARM64)
  • macOS Sonoma (ARM64) - via analysis
  • Compatible with Debian 12/13, Ubuntu 24.04+, Arch, Fedora, RHEL

v1.1.0-RealEmmettS (2025-11-10)

  • Added lastlog2 support for modern Debian systems
  • Added graceful fallback between lastlog2 and lastlog
  • Improved non-ZFS filesystem support
  • Tested and verified on Raspberry Pi OS (ARM64)
  • Added comprehensive installation documentation
  • Added Claude Code optimized installation instructions
  • Added report alias for convenient on-demand execution

v1.0.0 (Original - US Graphics)

  • Initial release
  • Designed for Debian + ZFS + VMWare environments

🤝 Contributing

This project is maintained by ES Development LLC (https://emmetts.dev).

For the original upstream project, see: usgraphics/usgc-machine-report

Feel free to:

  • Fork this repository
  • Submit issues
  • Customize for your own needs (that's the philosophy!)

📄 License

BSD 3 Clause License. Copyright 2026, ES Development LLC (https://emmetts.dev). See LICENSE file for license information.

Based on original work by U.S. Graphics, LLC.