Source Code Repositories and Official Projects
WireGuard is divided into several sub-projects and repositories. The following is a list of official and supported WireGuard projects, along with their status and maintainer. Most repositories are hosted on git.zx2c4.com using free software, though some are hosted on GitHub, at the preference of the maintainer.
Repositories have an associated status:
- Complete: The repo completes its goal mostly and is actively maintained. There is still much todo, of course, and we're always looking for contributors.
- Complete: Complete, as above. While the current maintenance is healthy and solid, we'd be happy to have somebody new takeover maintenance of it, in which case, please get in touch.
- Active: Development is very actively underway but the project is not yet complete.
- Abandoned: The repo does not accomplish its goal entirely and has no active maintainer. If you'd like to pick this up, please get in touch.
The project accepts contributions through a variety of means, depending on the preference of the maintainer:
- : Send properly formatted patches using
git-send-email
to the WireGuard mailing list. - : Commit directly to prefixed feature branches. Email us to receive push access to all branches that begin with your initials, with discussions about merging on IRC (
#wireguard
on Libera.Chat) or on the mailing list. - : GitHub pull requests.
Similar to the policies of kernel.org, patches submitted should have a Signed-off-by:
line, which can be automatically added via git commit -s
, and we also generally prefer patches that use your full name.
Repository | Description | Maintainer | Status | Contrib |
---|---|---|---|---|
wireguard-linux | WireGuard for the Linux kernel. Commits in the devel branch are staged for the upstream net-next tree, and commits in the stable branch are staged for the upstream net tree. Commits in the backport-5.4.y are rebased against Greg KH's stable 5.4.y branch, and provide a backport of WireGuard for that older stable kernel. |
Jason A. Donenfeld | Complete | , |
wireguard-tools | Cross-platform userspace tools to configure WireGuard implementations, such as the wg(8) and wg-quick(8) programs, alongside useful other programs in contrib/ . |
Jason A. Donenfeld | Complete | , |
wireguard-linux-compat | Backports of the WireGuard kernel module for Linux to 3.10 ≤ kernel ≤ 5.5.y, as an out-of-tree module. | Jason A. Donenfeld | Complete | , |
wireguard-rs | Cross-platform high-performance userspace implementation of WireGuard in Rust. | Mathias Hall-Andersen | Active | , |
wireguard-go | Cross-platform userspace implementation of WireGuard in Go. | Jason A. Donenfeld | Complete | , |
wireguard-hs | Sketches of WireGuard in Haskell. | Abandoned | ||
wireguard-openbsd | OpenBSD kernel implementation of WireGuard. | Matt Dunwoodie | Active | , |
wireguard-freebsd | FreeBSD kernel implementation of WireGuard. | Jason A. Donenfeld | Active | , |
wireguard-android | Android client of WireGuard. | Jason A. Donenfeld / Harsh Shandilya | Complete | , |
android_kernel_wireguard | Tools for integrating WireGuard into Android ROM builds and kernel trees. | Jason A. Donenfeld | Complete | , |
android-wireguard-module-builder | Builder for modules for various Android devices. | Nathan Chancellor | Active | |
wireguard-apple | macOS and iOS client of WireGuard. | Jason A. Donenfeld | Complete | , |
wireguard-windows | Windows client of WireGuard. | Jason A. Donenfeld / Simon Rozman | Complete | , |
wireguard-nt | WireGuard implementation for the Windows NT kernel. | Jason A. Donenfeld / Simon Rozman | Complete | , |
wireguard-tamarin | Tamarin proof of WireGuard. | Kevin Milner / Jason A. Donenfeld | Complete | , |
wintun | Layer 3 TUN driver for the Windows kernel and NDIS stack. | Jason A. Donenfeld / Simon Rozman | Complete | , |
wg-dynamic | Dynamic configuration daemons to be layered on top of WireGuard. | Thomas Gschwantner | Active | , |
wireguard-vyatta-ubnt | Module, tools, and Vyatta integration for Ubiquiti devices. | Pascal Vorwerk | Complete | |
wgctrl-go | Library for programmatic control of WireGuard instances in Go. | Matt Layher | Complete | |
zinc | Next-generation cryptography library for the Linux kernel. | Jason A. Donenfeld / Samuel Neves | Complete | , |
kbench9000 | In-kernel cryptography measurement module. | Jason A. Donenfeld | Active | , |
Would you like to add your WireGuard-related project to the list and join our team? Feel free to get in touch.