rcpufetch 0.0.5

[ALPHA] A rusty crossplatform, but simple CLI binutil for reading CPU information.
rcpufetch-0.0.5 is not a library.

rcpufetch

rcpufetch is a fast, cross-platform command-line tool that displays detailed CPU information in a clean and beautiful way — complete with colorful vendor ASCII art.

It is a ground-up Rust rewrite of cpufetch, the C tool by Dr-Noob that pioneered this exact idea. This project aims for command-line and feature parity with upstream cpufetch (same flags, same style/color model, same microarchitecture-name tables) while being written entirely in Rust with zero external dependencies — everything is std-only, which keeps compile times fast and the dependency tree at exactly one crate: this one.

[!WARNING] This project is in active development. Some upstream cpufetch features (the full ARM SoC marketing-name database, the x86 AVX timing-loop frequency fallback) are only partially ported — see Implementation notes below. Please report bugs under the issues tab.

Screenshots

Main Screenshot Secondary Screenshot

Features

  • CPU model, vendor, microarchitecture, process node, core/thread count, cache sizes, frequency, and ISA feature flags
  • Real microarchitecture detection: the cpuid instruction on x86/x86_64, MIDR register decoding on ARM/AArch64, PVR decoding on PowerPC, and device-tree/isa string matching on RISC-V — not just a vendor string
  • Colorful ASCII art logo per vendor, or override it with --logo <vendor> regardless of your actual CPU
  • --style fancy|retro|legacy and --color <scheme|R,G,B:...> — the same style/color model as upstream cpufetch, including NO_COLOR support
  • Full flag parity with upstream cpufetch (see Usage below)
  • Shell completions for fish, bash, and zsh

Support table

OS x86_64 / x86 ARM / AArch64 PowerPC RISC-V
Linux
macOS - -
Windows - -
FreeBSD ✅ (partial) ✅ (partial) -
OpenBSD

✅ = builds, runs, and is exercised in CI. ❓ = should work (same code path as a ✅ cell on that architecture) but isn't covered by a CI runner/VM yet. "Partial" on FreeBSD/ARM/PowerPC means vendor and core-count detection work via sysctl, but microarchitecture-name decoding is best-effort (see src/bsd.rs).

FreeBSD and OpenBSD are notable here: upstream cpufetch only builds x86 on FreeBSD and has no OpenBSD support at all. rcpufetch fixes both gaps — see CONTRIBUTING.md for how.

Installation

From crates.io

cargo install rcpufetch

From source

git clone https://github.com/rockenman1234/rcpufetch.git
cd rcpufetch
cargo build --release
./target/release/rcpufetch

No other dependencies are required — the build is std-only.

Usage

rcpufetch [OPTIONS]
Flag Description
-h, --help Print help information
-V, --version Print version information
--license Display license information
-n, --no-logo Disable logo display
-l, --logo <VENDOR> Override the logo (nvidia, powerpc, arm, amd, intel, apple)
-s, --style <STYLE> fancy (default), retro, or legacy
-c, --color <SCHEME> intel, intel-new, amd, ibm, arm, rockchip, sifive, or a custom R,G,B:R,G,B:R,G,B:R,G,B:R,G,B (3 logo colors + 2 text colors)
-r, --raw Dump raw cpuid data (x86 only)
-F, --full-cpu-name Show the unabbreviated CPU name (x86 only)
--logo-long / --logo-short Force the large/small logo variant
--logo-intel-new / --logo-intel-old Force the modern/classic Intel logo
--accurate-pp Measure peak performance instead of estimating it (x86+Linux)
--measure-max-freq Measure max frequency instead of reading it from the OS
-d, --debug Print low-level identifying register info and exit
-v, --verbose Print diagnostic warnings about info gathering
--completions <SHELL> Generate shell completions (fish, bash, zsh)

Examples

rcpufetch                       # your CPU, your vendor's logo
rcpufetch --logo nvidia         # your CPU, NVIDIA's logo
rcpufetch --no-logo             # clean text output, no logo
rcpufetch --style retro         # retro-style colored glyphs instead of solid blocks
rcpufetch --color amd           # force AMD's color scheme regardless of vendor
rcpufetch --completions fish > ~/.config/fish/completions/rcpufetch.fish

Implementation notes

rcpufetch ports cpufetch's microarchitecture lookup tables (x86 family/model/stepping, ARM MIDR implementer/part, PowerPC PVR) mechanically from the upstream C source, so name coverage matches upstream closely. Two things are intentionally scoped down for now:

  • ARM SoC marketing names: upstream cpufetch has a ~415-entry table plus a multi-source fallback chain (Android sysprops, PCI IDs, device-tree, NVMEM). rcpufetch ships a smaller curated hint table (src/cpu/arm.rs) covering common Raspberry Pi/Snapdragon/Exynos/Dimensity/Rockchip/Ampere parts.
  • x86 frequency measurement: upstream cpufetch has AVX/AVX-512/no-AVX inline-asm timing-loop fallbacks for systems where the OS doesn't expose max frequency. rcpufetch reads frequency from the OS (sysfs/sysctl/WMI) only.

See CONTRIBUTING.md for the full architecture writeup, how the lookup tables were generated, and how to extend either of the above.

Contributing

See CONTRIBUTING.md for the architecture, build process, and how to add a vendor, an architecture, or a logo.

Acknowledgements

rcpufetch would not exist without Dr-Noob's cpufetch, which this project reimplements in Rust. Go star the original.

License

GPLv3 — see LICENSE.md.