93 stable releases (10 major)

Uses new Rust 2021

10.2.4 Dec 18, 2022
10.2.1 Nov 30, 2022
9.0.1 May 28, 2022
8.3.0 Mar 23, 2022
0.10.0 Jul 10, 2018

#77 in Operating systems

Download history 757/week @ 2022-10-07 321/week @ 2022-10-14 1457/week @ 2022-10-21 1078/week @ 2022-10-28 2069/week @ 2022-11-04 692/week @ 2022-11-11 531/week @ 2022-11-18 2174/week @ 2022-11-25 1838/week @ 2022-12-02 1005/week @ 2022-12-09 1110/week @ 2022-12-16 377/week @ 2022-12-23 337/week @ 2022-12-30 372/week @ 2023-01-06 319/week @ 2023-01-13 295/week @ 2023-01-20

1,386 downloads per month

GPL-3.0 license

6.5K SLoC


GitHub Release crates.io AUR Homebrew



Note This is a fork of topgrade by r-darwish to keep it maintained.

Keeping your system up to date usually involves invoking multiple package managers. This results in big, non-portable shell one-liners saved in your shell. To remedy this, Topgrade detects which tools you use and runs the appropriate commands to update them.


Packaging status

Other systems users can either use cargo install or the compiled binaries from the release page. The compiled binaries contain a self-upgrading feature.

Topgrade requires Rust 1.60 or above.


Just run topgrade.

Visit the documentation at topgrade-rs.github.io for more information.

Warning Work in Progress


See config.example.toml for an example configuration file.

Configuration Path

The configuration should be placed in the following paths depending on the operating system:

  • Windows - %APPDATA%/topgrade.toml
  • macOS and other Unix systems - ${XDG_CONFIG_HOME:-~/.config}/topgrade.toml

Remote Execution

You can specify a key called remote_topgrades in the configuration file. This key should contain a list of hostnames that have Topgrade installed on them. Topgrade will use ssh to run topgrade on remote hosts before acting locally. To limit the execution only to specific hosts use the --remote-host-limit parameter.


Problems or missing features?

Open a new issue describing your problem and if possible provide a solution.

Missing a feature or found an unsupported tool/distro?

Just let us now what you are missing by opening an issue. For tools, please open an issue describing the tool, which platforms it supports and if possible, give us an example of its usage.

Want to contribute to the code?

Just fork the repository and start coding.

Contribution Guidelines

  • Check if your code passes cargo fmt and cargo clippy.
  • Check if your code is self explanatory, if not it should be documented by comments.
  • Make a pull request to the dev branch for new features or to the bug-fixes branch for bug fixes.


  • Add a proper testing framework to the code base.
  • Add unit tests for package managers.
  • Split up code into more maintainable parts, eg. putting every linux package manager in a own submodule of linux.rs.


~817K SLoC