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

Features
- CPU model, vendor, microarchitecture, process node, core/thread count, cache sizes, frequency, and ISA feature flags
- Real microarchitecture detection: the
cpuidinstruction on x86/x86_64, MIDR register decoding on ARM/AArch64, PVR decoding on PowerPC, and device-tree/isastring 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|legacyand--color <scheme|R,G,B:...>— the same style/color model as upstream cpufetch, includingNO_COLORsupport- 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.