4 releases

0.1.3 Nov 19, 2023
0.1.2 Nov 19, 2023
0.1.1 Nov 11, 2023
0.1.0 Jan 6, 2023

#223 in Unix APIs

Download history 6/week @ 2023-08-12 3/week @ 2023-08-19 3/week @ 2023-08-26 3/week @ 2023-09-02 9/week @ 2023-09-09 4/week @ 2023-09-16 4/week @ 2023-09-23 10/week @ 2023-09-30 3/week @ 2023-10-07 6/week @ 2023-10-14 4/week @ 2023-10-21 6/week @ 2023-10-28 4/week @ 2023-11-04 41/week @ 2023-11-11 61/week @ 2023-11-18 18/week @ 2023-11-25

125 downloads per month
Used in mirro-rs


367 lines

GitHub Workflow Status GitHub Crates.io


A mirrorlist manager for Arch Linux systems
View usage examples »

Report Bug · Request Feature


mirro-rs provides a TUI to help you better visualise managing your mirrorlist.


  • Sorting
    • Completion - The number of mirror checks (as a percentage) that have successfully connected and disconnected from the given URL. If this is below 100%, the mirror may be unreliable.
    • Score - It is currently calculated as (hours delay + average duration + standard deviation) / completion percentage. Lower is better.
    • Standard deviation - The standard deviation of the connect and retrieval time. A high standard deviation can indicate an unstable or overloaded mirror.
    • Delay - The mean value of last check − last sync for each check of this mirror URL. Due to the timing of mirror checks, any value under one hour should be viewed as ideal.
    • Rate - sort by download speed
  • Filtering
    • Age
    • Country
    • ipv4, ipv6, isos
    • Protocol - http, https or rsync
    • Completion Percentage

Getting Started


mirro-rs is available in the AUR. If you're using paru:

paru -S mirro-rs-git

Note By default, this enables configuration through toml files. You should edit the PKGBUILD if you prefer another configuration format (or to disable configuration files altogether).

Manual Compilation

  • cargo

    You need to have cargo installed to build the application. The easiest way to set this up is installing rustup.

    pacman -S rustup

    Install a rust toolchain:

    rustup install stable
  • git

    Clone the repository:

    git clone https://github.com/rtkay123/mirro-rs

    You may then build the release target:

cargo build --release


Pass the -h or --help flag to mirro-rs to view configuration parameters. To preview http or https mirrors that were successfully synchronised in the last 24 hours and use /home/user/mirrorlist as an export location for the best (at max) 50:

mirro-rs --export 50 --protocols https --protocols http --age 24 --outfile "/home/user/mirrorlist"

To do the same but restrict the sources to be from France and the UK:

mirro-rs --export 50 --protocols https --protocols http --age 24 --outfile "/home/user/mirrorlist" -c France -c "United Kingdom"


For convenience, mirro-rs optionally supports reading a configuration [default: $XDG_CONFIG_HOME/mirro-rs/mirro-rs.toml] for general preferences. If none is available, [default: $XDG_CONFIG_HOME/mirro-rs.toml] will be used. If both are available, the former takes priority.

For toml support:

cargo build --release --features toml

For json support:

cargo build --release --features json

Likewise, for yaml support:

cargo build --release --features yaml

Note If you enable all configuration file features, if the configuration directory contains more than one valid file format, the order of priority goes from toml -> json -> yaml.

Sample configuration files are provided in the example folder.

A minimal mirro-rs.toml config file could look like:

cache-ttl = 24
timeout = 10

Note Changing the configuration file at runtime will overwrite the parameters that were set as CLI arguments


Licensed under either of


Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.




~262K SLoC