11 releases (7 breaking)

0.8.1 Feb 14, 2023
0.7.0 Oct 29, 2020
0.6.0 Oct 28, 2020

#154 in Authentication

Download history 50/week @ 2024-02-13 4/week @ 2024-02-20 47/week @ 2024-02-27 9/week @ 2024-03-05 4/week @ 2024-03-12 14/week @ 2024-03-26 25/week @ 2024-04-02

64 downloads per month


735 lines


Crates.io GitHub All Releases Crates.io GitHub Workflow Status (branch)

MozWire is an unofficial cross-platform client for MozillaVPN, finally giving Linux, macOS, FreeBSD, OpenBSD and others (all platforms supporting the WireGuard protocol) users access to this VPN provider. MozWire also supports Windows.


  • Support for multihop servers (Not available on official clients) (--hop)
  • Select individual servers (as opposed to being limited to choosing cities) (Not available on official clients)
  • Select custom remote port, bypassing firewalls (Not available on official clients) (--port)
  • Support for other operating systems (Not available on official clients)
  • Use "native" WireGuard clients with more customizability (Not available on official clients)
  • Tunnel only IPv6 traffic (Not available on official clients) (--tunnel)
  • Supports kill switch (--killswitch)
  • Works with socks5 multihop


Linux, macOS and Windows binaries are available on the release page. These binaries are built by GitHub Actions CI.

Using the AUR for Arch Linux users

The package name is mozwire and can be installed using your favourite AUR helper:

yay -S mozwire

Using Nix

mozwire is now packaged in nixpkgs, make sure your nixpkgs-unstable channel is up to date (nix-channel --update nixpkgs-unstable), then run

nix-env -i MozWire

Using cargo install

From crates.io

cargo install mozwire

From git

cargo install --git https://github.com/NilsIrl/MozWire.git --branch trunk


git clone https://github.com/NilsIrl/MozWire.git
cd MozWire
cargo build


mozwire relay save to generate a WireGuard configuration. --help to get help on a subcommand, e.g. mozwire relay --help, mozwire relay save --help.


Output configuration for all servers into the /etc/wireguard directory.

mozwire relay save -o /etc/wireguard -n 0

Use MOZ_TOKEN to "cache" the token instead of specifying it each time with --token or log in each time.

export MOZ_TOKEN=$(mozwire --print-token) # save the token in the MOZ_TOKEN environment variable
mozwire .... # mozwire commands can be run without having to log in


mozwire 0.8.1
Nils <nils@nilsand.re>
MozillaVPN wireguard configuration manager

    mozwire [OPTIONS] [SUBCOMMAND]

    -h, --help             Print help information
        --no-browser       By default, mozwire will open the login page in a browser,
                           this option prevents mozwire a browser page from being opened
        --print-token      Print the token used to query the Mozilla API, so that it can
                           be reused with --token, without having to sign in each time
        --token <TOKEN>    The token used to communicate with the Mozilla API. If
                           unspecified, a web page will be opened to retrieve the token.
                           the MOZ_TOKEN environment variable can also be used instead
                           [env: MOZ_TOKEN=]
    -V, --version          Print version information

    device    Add, remove and list devices. To connect to MozillaVPN, a device needs
                  to be on the list
    help      Print this message or the help of the given subcommand(s)
    relay     List available relays (VPN Servers) and save WireGuard configurations
                  for these

To query MozillaVPN, mozwire requires a token, specified with --token. If it is left
unspecified, mozwire will generate a token by opening a login page, the token generated
can be printed using --print-token, so that it can be reused. To generate a WireGuard
configuration use `mozwire relay save`.



MozWire is licensed under the GNU GENERAL PUBLIC LICENSE Version 3. I am willing to relicense it.

Copyright © 2020-2023 Nils André


~489K SLoC