bottom is a customizable cross-platform graphical process and system monitor that runs inside the terminal, written in Rust and aimed at developers, system administrators, and anyone who wants an interactive view of CPU, memory, network, disk, and process activity without leaving the shell.
What it is
bottom (invoked as btm) is a terminal user interface application that renders live system and process information as graphical widgets. It officially supports Linux, macOS, and Windows across the architectures the README lists, and it is distributed both as a crate on crates.io and through a long list of package managers and prebuilt binaries. The project is MIT licensed, developed by ClementTsang, and documents its behaviour at https://bottom.pages.dev.
It lives in the terminal monitoring ecosystem alongside top and the tools the README names as its inspirations, htop, gtop, and gotop. What it offers in place of a plain-text top session is a set of time-series widgets: CPU usage shown at both an average and a per-core level, RAM and swap usage, network I/O, temperature, and disk I/O, all plotted over time with support for zooming in and out of the displayed interval. The configuration story is likewise broader than a fixed column layout, since widget behaviour, layout, colour themes, and per-widget entry filtering can all be controlled either with command-line options or with a config file.
Key capabilities
- Graphical widgets for CPU usage over time at an average and per-core level, RAM and swap usage over time, network I/O, temperature, and disk I/O, with zooming in and out of the current time interval.
- Info widgets covering disk capacity and usage, temperature sensors, and battery usage.
- A process widget that displays, sorts, and searches process information, with kill signal support and a tree mode.
- Customizable behaviour through command-line options or a config file, including custom and built-in colour themes such as
--theme gruvbox, widget behaviour changes, layout changes, and filtering entries out of widgets.
- An htop-inspired basic mode for users who want the familiar single-view layout.
- Expansion of a single widget to fill the screen when one metric needs undivided attention.
- Shell auto-completion, with binaries available from Cargo, distro repositories, Homebrew, Chocolatey, Scoop, winget, an MSI installer, Snap, Nix, Conda, mise, and prebuilt downloads.
Who uses it and how
- Developers and operators who work primarily in a terminal and want monitoring that costs no browser tab, no agent, and no separate daemon.
- Administrators running it on Linux hosts, including headless or remote machines where the terminal is the interface they already have.
- macOS users on
x86_64 and aarch64, and Windows users on x86_64 and i686, using the Homebrew, MacPorts, Chocolatey, Scoop, winget, or MSI routes the README documents.
- Teams standardized on a single monitoring layout, since a config file can carry themes, widget arrangement, and filters to every machine instead of relying on per-session flags.
- Users who want a middle ground between a raw
top output and a full graphical desktop monitor.
Getting started
Install with cargo install bottom, or use whichever package manager matches the platform, since the README documents Cargo, Alpine, Arch, Debian/Ubuntu, Fedora/CentOS/AlmaLinux/Rocky, COPR, Gentoo, Nix, openSUSE, Snap, Solus, Void, Homebrew, MacPorts, Chocolatey, Scoop, winget, Conda, mise, gah, ghr, and prebuilt binaries. Documentation for both the stable and nightly builds is published at https://bottom.pages.dev.
How it compares
The README names three similar tools directly, htop, gtop, and gotop, and places bottom in the same lineage as a cross-platform terminal monitor built with the newer graphical widget set. It differs from the older htop in being written in Rust and in offering time-series graphs, battery and disk widgets, tree mode, and a config file alongside the htop-inspired basic mode. No paid products are listed anywhere in the provided facts, so no licence, hosting, or cost comparison against commercial monitoring services can honestly be drawn here.
When to use it — and when not to
bottom targets one machine at a time: it is an interactive terminal view, and the documented feature set contains no agent, no server component, no remote aggregation, and no persistent metrics store, so it is not a substitute for a fleet-wide observability platform or for retaining history after the session closes. Because everything is local and configuration lives in a file the user supplies, there is nothing extra to operate, no database, no SMTP, and no storage to provision. Anyone who needs alerting, long-term retention, or multi-host dashboards should look elsewhere, and anyone who wants a stable, unchanging interface should note that the project publishes both stable and nightly documentation branches, which reflects ongoing widget and configuration churn.
project readme (upstream, from github) — read inline
bottom (btm)
A customizable cross-platform graphical process/system monitor for the terminal.
Supports Linux, macOS, and Windows. Inspired by gtop, gotop, and htop.

Demo using the Gruvbox theme (--theme gruvbox), along with IBM Plex Mono and Kitty
Table of contents
Features
As (yet another) process/system visualization and management application, bottom supports the typical features:
Graphical visualization widgets for:
with support for zooming in/out the current time interval displayed.
Widgets for displaying info about:
A process widget for displaying, sorting, and searching info about processes, as well as support for:
Cross-platform support for Linux, macOS, and Windows, with more planned in the future.
Customizable behaviour that can be controlled with command-line options or a config file, such as:
- Custom and built-in colour themes
- Customizing widget behaviour
- Changing the layout of widgets
- Filtering out entries in some widgets
And more:
You can find more details in the documentation.
Support
Official
bottom officially supports the following operating systems and corresponding architectures:
- macOS (
x86_64, aarch64)
- Linux (
x86_64, i686, aarch64)
- Windows (
x86_64, i686)
These platforms are tested to work for the most part and issues on these platforms will be fixed if possible.
Furthermore, binaries are built and tested using the most recent version of stable Rust at the time.
For more details on supported platforms and known problems, check out the documentation.
Unofficial
bottom may work on a number of platforms that aren't officially supported. Note that unsupported platforms:
- Might not be tested in CI to build or pass tests (see here for checked platforms).
- Might not be properly tested by maintainers prior to a stable release.
- May only receive limited support, such as missing features or bugs that may not be fixed.
Note that some unsupported platforms may eventually be officially supported (e.g., FreeBSD).
A non-comprehensive list of some currently unofficially-supported platforms that may compile/work include:
- FreeBSD (
x86_64)
- Linux (
armv6, armv7, powerpc64le, riscv64gc, loongarch64)
- Android (
arm64)
- Windows (
arm64)
- NetBSD (
x86_64)
For more details on unsupported platforms and known problems, check out the documentation.
Installation
Cargo
Installation via cargo can be done by installing the bottom crate:
# You might need to update the stable version of Rust first.
# Other versions might work, but this is not guaranteed.
rustup update stable
# Install the binary from crates.io.
cargo install bottom --locked
# If you use another channel by default, you can specify
# the what channel to use like so:
cargo +stable install bottom --locked
# --locked may be omitted if you wish to not use the
# locked crate versions in Cargo.lock. However, be
# aware that this may cause problems with dependencies.
cargo install bottom
Alternatively, you can use cargo install using the repo as the source.
# You might need to update the stable version of Rust first.
# Other versions might work, but this is not guaranteed.
rustup update stable
# Option 1 - Download an archive from releases and install
curl -LO https://github.com/ClementTsang/bottom/archive/0.14.9.tar.gz
tar -xzvf 0.14.9.tar.gz
cargo install --path . --locked
# Option 2 - Manually clone the repo and install
git clone https://github.com/ClementTsang/bottom
cd bottom
cargo install --path . --locked
# Option 3 - Install using cargo with the repo as the source
cargo install --git https://github.com/ClementTsang/bottom --locked
# You can also pass in the target-cpu=native flag to try to
# use better CPU-specific optimizations. For example:
RUSTFLAGS="-C target-cpu=native" cargo install --path . --locked
Alpine
bottom is available as a package for Alpine Linux via apk:
apk add bottom
Packages for documentation (bottom-doc) and completions for Bash (bottom-bash-completion), Fish (bottom-fish-completion), and Zsh (bottom-zsh-completion) are also available.
Arch Linux
bottom is available as an official package that can be installed with pacman:
sudo pacman -S bottom
If you want th