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-emailto 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 (
#wireguardon Freenode) 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.
|WireGuard||Main WireGuard repository. Contains the Linux kernel module in
||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 Golang.||Jason A. Donenfeld||Complete||,|
|wireguard-hs||Sketches of WireGuard in Haskell.||Abandoned|
|wireguard-openbsd||OpenBSD kernel implementation of WireGuard.||Matt Dunwoodie||Active||,|
|wireguard-android||Android client of WireGuard.||Jason A. Donenfeld / Samuel Holland||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 / Roopesh Chandler||Complete||,|
|wireguard-windows||Windows client of WireGuard.||Jason A. Donenfeld||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||Complete||,|
|wg-dynamic||Dynamic configuration daemons to be layered ontop of WireGuard.||Thomas Gschwantner||Active||,|
|wgctrl-go||Library for programatic control of WireGuard instances in Golang.||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.