purefetch: a fastfetch-style system info tool in Rust with zero dependencies A developer built purefetch, a system-info fetcher in Rust with zero dependencies from crates.io, using only std and raw Linux syscalls. The tool produces a ~484 KiB binary and supports four architectures via QEMU testing. It includes ZFS-aware memory reporting and 24 distro logos. I like neofetch / fastfetch , but I wanted one with a genuinely empty dependency graph — nothing pulled from crates.io. So I built purefetch : a small system-info fetcher written entirely in Rust using only std plus raw Linux syscalls. Disclosure up front:purefetch was built largely withAI assistance Claude Code . I directed the design, and every change was reviewed and tested — including running it on four architectures under QEMU — but most of the code is AI-generated. I'd rather be honest about that than pretend otherwise. ,met$$$$$gg. ooonea@unicorn ,g$$$$$$$$$$$$$$$P. ────────────── ,g$$P" """Y$$.". OS Debian GNU/Linux 13.5 trixie x86 64 ,$$P' $$$. Host ThinkPad P53 20QQS0JD01 ',$$P ,ggs. $$b: Kernel 6.12.94+deb13-amd64 d$$' ,$P"' . $$$ Uptime 6 days, 15 hours, 30 mins $$P d$' , $$P Packages 2477 dpkg , 1 flatpak $$: $$. - ,d$$' Shell zsh 5.9 $$; Y$b. ,d$P' Display 1920x1080 eDP-1 Y$$. . "Y$$$$P"' DE GNOME 48.7 $$b "-. WM Mutter Wayland Y$$ Terminal kitty 0.41.1 Y$$. CPU Intel R Core TM i7-9850H @ 4.60 GHz $$b. GPU Quadro RTX 3000 Y$$b. Memory 15.28 GiB / 62.61 GiB 24% "Y$b. Swap 0 B / 8.00 GiB 0% """ Disk / 8.52 GiB / 489.57 GiB 2% Locale en US.UTF-8 Battery 76% Not charging No libc crate, no sysinfo , no nix , no color crate — nothing from crates.io. Almost everything is just reading and parsing /proc and /sys . The result is a single ~484 KiB binary that builds offline. The only things std can't do are statfs disk usage and ioctl terminal size / tty check . Instead of pulling in a binding crate, those are issued as raw Linux syscalls via core::arch::asm : cfg target arch = "x86 64" unsafe fn syscall3 n: usize, a1: usize, a2: usize, a3: usize - isize { let ret: isize; core::arch::asm "syscall", inlateout "rax" n as isize = ret, in "rdi" a1, in "rsi" a2, in "rdx" a3, out "rcx" , out "r11" , options nostack , ; ret } Each architecture gets its own syscall3 a different instruction and register convention plus its syscall numbers. aarch64, riscv64 and loongarch64 share the "asm-generic" table statfs = 43 , ioctl = 29 ; x86 64 has its own. I validated all four end-to-end under qemu-user — cross-compiling to each On ZFS-on-root, a naive MemTotal - MemAvailable massively over-reports used RAM, because the ZFS ARC is kernel-slab cache that MemAvailable doesn't count as reclaimable. purefetch subtracts the reclaimable ARC arcstats size - c min , which lines up with what fastfetch and ZFS-aware htop show. On my box that's the difference between "37 GiB used" wrong and "15 GiB used" right . The 24 distro logos live as plain text in assets/logos/ .txt , and a small Python script generates src/logo.rs . Adding a logo is one text file plus a regen. It also taught me a lesson. An early version of the generator emitted the color as sgr: "215;7;81" instead of "38;2;215;7;81" — dropping the truecolor prefix. The terminal then read \e 215;7;81m as "code 215 ignored + 7 reverse video ", so every logo rendered washed-out instead of its brand color. I missed it because my render checks all ran with --no-color . Fixed in 0.1.2 — a good reminder to test the thing your users actually see . cargo install purefetch Source, issues and PRs: https://github.com/ooonea/purefetch MIT OR Apache-2.0 .