Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
TR-300
Cross-platform system information report with Unicode box-drawing tables.
TR-300 is a standalone Rust CLI for fast, reliable, and readable terminal machine reports.
Latest release: v3.14.5 (2026-05-14), with cargo-dist artifacts for macOS, Linux, and Windows plus shell, PowerShell, MSI, and crates.io installation paths. The canonical crates.io package is tr300.
Features
- Cross-platform support (Windows, macOS, Linux)
- Beautiful Unicode box-drawing tables with ASCII fallback
- ASCII fallback mode for legacy terminals
- Bar graphs for CPU load, memory, and disk usage
- VPN-aware network information on Windows —
MACHINE IPandDNS IProws reflect the active default route (GetBestInterfaceEx-driven) so Tailscale / WireGuard / OpenVPN / corporate VPN tunnels are reported correctly instead of a coin-flip pick - Hypervisor / virtualization detection (CPUID-based; disambiguates Win11 VBS from real VMs)
- Session info with last-login/current-session tracking; Windows uses WTS APIs with a boot-time fallback
- Disk encryption status (BitLocker on Windows when readable)
- Fast Startup-aware uptime on Windows — when the kernel session age and the WMI cold-boot time diverge by >1h (typical on Win10/Win11 laptops with
HiberbootEnabled), theUPTIMErow renders both as9d 4h 12m (session: 7h 14m) - 5-state battery awareness on Windows — distinguishes
AC Power(plugged in, fully topped up),X% (Charging),X% (Plugged in)(gaming-laptop case where peak GPU draw exceeds the brick wattage, OR firmware-limited charging modes like ThinkPad battery longevity),X% (Discharging), plusCritical/Lowoverrides - Smart terminal detection on Windows — env-var pre-checks (
WT_SESSION,TERM_PROGRAM,CURSOR_TRACE_ID) then a parent-process walk via Toolhelp32 that recognizes Windows Terminal, WezTerm, Alacritty, VS Code, Cursor, Windsurf, Hyper, Tabby, Ghostty, Kitty, MinTTY, Claude Code, and Antigravity even when env vars are absent - PowerShell 7+ ("PowerShell Core") detection on Windows — reads
HKLM\SOFTWARE\Microsoft\PowerShellCore\InstalledVersions\<GUID>\SemanticVersionsopwshusers see the actual installed version instead of falling back to Windows PowerShell 5.x - JSON output for scripting
- Auto-save markdown report to Downloads folder on manual runs
- Fast mode (
--fast) for sub-second auto-run startup - Positional action syntax (
tr300 update,tr300 install,tr300 uninstall) with legacy flag compatibility - Resilient self-update with cargo-first probing and shell/PowerShell installer fallbacks
- Conditional platform detail rows for machine model, CPU core topology, ZFS health, motherboard, BIOS, and RAM slots when the host exposes them
- Self-installation with shell alias and auto-run
Installation
Cargo
Available on crates.io as tr300. Requires
Rust 1.95.0 or later:
Shell (macOS/Linux)
|
PowerShell (Windows)
powershell -ExecutionPolicy ByPass -c "irm https://github.com/QubeTX/qube-machine-report/releases/latest/download/tr300-installer.ps1 | iex"
Windows Installer (.msi)
Download the latest MSI installer from the Releases page.
Cargo from Git
Requires Rust 1.95.0 or later (run rustup update stable if needed —
older toolchains will fail with rustc … is not supported by … tr300):
Use the crates.io or release installers above for normal installs. For development workflows that need an exact Git tag:
From Source
Usage
# Display system report (default)
# Use ASCII characters instead of Unicode
# Output as JSON
# Custom title
# Disable colors
# Self-update to the latest release
# Legacy form still works:
# Install to shell profile (adds 'report' alias + auto-run)
# Legacy form still works:
# Remove from shell profile
# Legacy form still works:
# Show help
Example Output
┌┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┬┐
├┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┴┤
│ QUBETX DEVELOPER TOOLS │
│ TR-300 MACHINE REPORT │
├──────────────┬────────────────────────────────────┤
│ OS │ Windows 11 24H2 │
│ KERNEL │ Windows 10.0.26200 │
├──────────────┼────────────────────────────────────┤
│ HOSTNAME │ DESKTOP-ABC123 │
│ MACHINE IP │ 192.168.1.100 │
│ CLIENT IP │ Not connected │
│ DNS IP 1 │ 192.168.1.1 │
│ USER │ emmett │
├──────────────┼────────────────────────────────────┤
│ PROCESSOR │ Intel Core Ultra 7 155H │
│ CORES │ 22 vCPU(s) / 1 Socket(s) │
│ HYPERVISOR │ Bare Metal │
│ CPU FREQ │ 1.4 GHz │
│ LOAD 1m │ ███████░░░░░░░░░░░░░░░░░░░░░░░░░░░ │
│ LOAD 5m │ █████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ │
│ LOAD 15m │ ████░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ │
├──────────────┼────────────────────────────────────┤
│ VOLUME │ 848.18/935.54 GB [90.66%] │
│ DISK USAGE │ █████████████████████████████░░░░░ │
├──────────────┼────────────────────────────────────┤
│ MEMORY │ 18.00/31.52 GiB [57.1%] │
│ USAGE │ ██████████████████░░░░░░░░░░░░░░░░ │
├──────────────┼────────────────────────────────────┤
│ LAST LOGIN │ Login tracking unavailable │
│ UPTIME │ 5h 38m │
├──────────────┴────────────────────────────────────┤
└──────────────┴────────────────────────────────────┘
Command Line Options
Positional actions can be written without a double dash. They are mutually exclusive with each other and with the legacy action flags.
| Action | Description |
|---|---|
update |
Check for updates and install the latest version |
install |
Add to shell profile with alias and auto-run |
uninstall |
Remove from shell profile |
| Option | Description |
|---|---|
--ascii |
Use ASCII characters instead of Unicode |
--json |
Output in JSON format |
-t, --title <TITLE> |
Custom title for the report header |
--no-color |
Disable colored output |
--fast |
Fast mode: skip slow collectors for quick auto-run |
--no-elevation-hint |
Suppress the "Run with sudo / Administrator" footer hint |
--update |
Legacy flag form of tr300 update |
--install |
Add to shell profile with alias and auto-run |
--uninstall |
Remove from shell profile |
-h, --help |
Print help information |
-V, --version |
Print version information |
Self-Update
Both action forms update to the latest release:
The updater runs a probe-and-retry chain so one missing or failing tool does not block the update:
- Checks the latest release on GitHub. If the installed version is current, it exits 0 without changing anything.
- Tries
cargo install tr300 --forcefirst whencargo --versionsucceeds. Ifrustupis present, it first runsrustup update stablebest-effort so cargo installs against the current MSRV. - Falls through to the cargo-dist installer for the platform if cargo is absent
or fails:
curl | shthenwget | shon macOS/Linux,powershellthenpwshon Windows. - Reports every skipped or failed strategy in both terminal and
--jsonoutput.
In --json mode, successful updates include the legacy "method" field plus a
precise "strategy" value. Failed updates include an "attempts" array with each
strategy result and diagnostic message.
Release Automation
GitHub Actions handles both release assets and crates.io publishing:
CIruns formatting, clippy, tests, release builds, speed checks, audit, and cargo-dist planning on pushes to the default branch.Crates.io Publishruns only afterCIsucceeds for that default-branch commit, checks whether the manifest version is already on crates.io with a descriptive data-accessUser-Agent, reruns fmt/clippy/tests/package/dry-run with--locked, and publishestr300only when the repositoryCARGO_REGISTRY_TOKENActions secret is configured.Releaseis the cargo-dist workflow triggered by an explicit version tag such asv3.14.3; it builds the cross-platform archives and installers. New installer assets usetr300-installer.*; the workflow also publishestr-300-installer.*compatibility aliases so v3.14.2 binaries can self-update after the old package name was removed. The cargo-dist config permits that checked-in workflow customization withallow-dirty = ["ci"].
Cargo.lock is tracked so the crates.io publish workflow uses the same resolved
dependency set that local release verification used.
Elevation Tier
TR-300 detects whether it is running with elevated privileges (root on Unix / Administrator on Windows) and surfaces additional data when it is.
- Default (unelevated) — the report renders exactly as it always has, with one
small addition on Linux and Windows: a single dim line below the table noting that
running with sudo / Administrator would unlock more details (motherboard / BIOS /
RAM slots on Linux; BitLocker status on Windows). This hint is never shown
during
--fastauto-run, so the prompt-ready experience is unchanged. - Elevated — extra rows render inline (motherboard, BIOS, RAM slot summary on
Linux when
dmidecodeis available; BitLocker status when readable on Windows). - macOS — no elevation tier; everything TR-300 needs is accessible without sudo.
To opt out of the hint, run tr300 --no-elevation-hint (or wire the flag into your
shell alias). The hint is rendered with ANSI dim, so respects --no-color as well.
The JSON output exposes this state under top-level keys elevated and
elevation_unlocks_more for scripted consumers.
Installation to Shell Profile
Running tr300 install or tr300 --install will:
- Remove existing TR-300 configuration (if present)
- Add a
reportalias so you can typereportinstead oftr300 - Configure auto-run on new interactive shell sessions
This means you can safely run tr300 install multiple times without duplicating profile blocks.
On Unix/macOS: Modifies ~/.bashrc and/or ~/.zshrc
On Windows: Modifies the Windows PowerShell CurrentUserCurrentHost
profile ($PROFILE). Fresh Windows machines default ExecutionPolicy to
Restricted, which blocks every .ps1 including the profile itself, so
tr300 install runs a preflight that adjusts the CurrentUser scope to
RemoteSigned when needed. RemoteSigned is the minimum policy that lets
the local profile load — it still requires downloaded .ps1 files to be
Authenticode-signed. The change is HKCU-only, affects only your user
account, and does not require admin. If you have deliberately set
AllSigned, tr300 install will not silently downgrade it; it prints a
notice explaining the auto-run will not fire and leaves the policy alone.
See Microsoft Learn — about_Execution_Policies.
To remove these additions, run tr300 uninstall or tr300 --uninstall.
The uninstall does not roll back your execution policy — other PowerShell
tooling typically relies on RemoteSigned, so restoring it would surprise
users.
If tr300 install (or uninstall) hits a permissions error on Windows —
common on work machines managed by Intune, Group Policy, AppLocker, or
WDAC, and on personal machines where Documents is redirected to OneDrive
— the tool prints a multi-paragraph explanation of what likely caused the
failure (OneDrive offline / online-only files, an MDM lockdown, antivirus
blocking the profile edit, a sharing violation, a disk-full condition, or
a MAX_PATH overflow) along with concrete next steps: which path to ask IT
to allowlist, where to add an antivirus exclusion, or how to takeown
ownership. Manual tr300 invocations from the prompt always continue to
work in this case; only the auto-run on new shells is affected, and you
can re-run tr300 install once the underlying restriction is addressed.
Building from Source
Requirements:
- Rust 1.95.0 or later (
rustup update stable) - Cargo
# Debug build
# Release build
# Run tests
# Run clippy
# Check formatting
# Run with arguments
Man Page (Linux/macOS)
A man page is auto-generated during build via clap_mangen. After building from source:
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
License
This project is licensed under the PolyForm Noncommercial License 1.0.0 - see the LICENSE file for details. This license permits noncommercial use, personal use, and use by charitable organizations, educational institutions, and government agencies.