macOS
brew install wireguard-golocal Homebrew formula metadata
sudo port install wireguard-goMacPorts ports tree · net/wireguard-go/Portfile · source: api.github.com
brew
Userspace Go implementation of WireGuard. Version 0.0.20250522 via Homebrew; verified from local package data.
install
brew install wireguard-golocal Homebrew formula metadata
sudo port install wireguard-goMacPorts ports tree · net/wireguard-go/Portfile · source: api.github.com
sudo apk add wireguard-goAlpine Linux edge package indexes · wireguard-go · source: dl-cdn.alpinelinux.org
sudo apt install golang-golang.zx2c4-wireguard-devDebian stable package indexes · golang-golang.zx2c4-wireguard-dev · source: deb.debian.org
nix profile install nixpkgs#wireguard-gonixpkgs package indexes · pkgs/by-name/wi/wireguard-go/package.nix · source: api.github.com
overview
Userspace Go implementation of WireGuard
history
wireguard-go is the official Go userspace implementation of WireGuard, the modern encrypted layer-3 VPN protocol created by Jason A. Donenfeld. It exists alongside the Linux kernel implementation and is most useful where a kernel driver is unavailable, undesirable, or less portable than a userspace tunnel process.
WireGuard itself was designed as a small, auditable alternative to IPsec and OpenVPN, with a public technical paper describing it as a secure network tunnel implemented as a Linux kernel virtual network interface. The WireGuard project later organized several official implementation repositories, including the kernel implementation, cross-platform tools, and wireguard-go as a cross-platform userspace implementation maintained by Donenfeld.
The role of wireguard-go became clearer after WireGuard entered the Linux kernel line: Linux users are generally expected to use the kernel module for performance and integration, while wireguard-go remains the portable fallback for platforms and situations where a userspace TUN implementation is the practical route. Its README explicitly tells Linux users that the kernel module is faster and better integrated, which gives the package a deliberately narrow but important niche.
WireGuard's wider adoption accelerated when it was merged for Linux 5.6 in 2020, turning the protocol from an out-of-tree module plus tools into a standard Linux networking feature. That made userspace implementations less central on modern Linux but more valuable as cross-platform compatibility pieces for macOS, BSD-derived systems, containers, embedded environments, and application stacks that need a WireGuard tunnel without depending on a kernel module.
In package-manager culture, wireguard-go is commonly installed with wireguard-tools or used by higher-level products that need an implementation of the WireGuard protocol in userspace. It is not the glamorous default path on current Linux, but it is the package that makes the same protocol available when the native interface is missing.
A typical invocation creates a WireGuard-style network interface by running a command such as `wireguard-go wg0`; the interface can then be configured with `wg(8)` plus ordinary platform networking tools. The upstream README describes it as creating the interface and then forking into the background, with a foreground mode available for supervision and logging.
The package is usually part of a larger WireGuard setup rather than a complete VPN product by itself. Users still need keys, peers, allowed IPs, routing, and address configuration, usually handled through `wg`, `wg-quick`, system network managers, or application-specific wrappers.
For package maintainers, wireguard-go is the portability valve in the WireGuard ecosystem: small, official, and intentionally less preferred than the kernel implementation on Linux, but essential when kernels, operating systems, or sandboxed deployments cannot provide a native WireGuard device.
Its significance is mostly negative space: if the platform has first-class WireGuard support, users may never notice it; when it does not, this package is often the thing that lets the rest of the WireGuard tooling keep working.
security posture
narrow executable package without higher-risk signals.
green risk · low confidence · appliance
Before unattended agent use, check whether the tool reads plaintext credentials, writes remote state, publishes artifacts, or shells out to plugins.
executables
| Command | Kind | Exposure | Note |
|---|---|---|---|
wireguard-go | cli | global executable |
freshness
These signals separate page generation age, package-manager activity, and upstream release comparison. Version lag is warned only when an evidence URL and comparable versions are present.
install metadata
| Package key | brew:wireguard-go |
|---|---|
| Version | 0.0.20250522 |
| Package manager | Homebrew |
| Package manager page | https://formulae.brew.sh/formula/wireguard-go |
| Homepage | https://www.wireguard.com/ |
| Repository | https://git.zx2c4.com/wireguard-go |
| Upstream docs | https://git.zx2c4.com/wireguard-go/about |
| License | MIT |
| Source archive | https://git.zx2c4.com/wireguard-go/snapshot/wireguard-go-0.0.20250522.tar.xz |
| Build dependencies | go |
| Bottle | available (on arm64_linux, arm64_sequoia, arm64_sonoma, arm64_tahoe, arm64_ventura, sonoma, ventura, x86_64_linux) |
| Homebrew post-install | not defined |
| Service | none declared |
registry facts
| Source Database | Homebrew formula API |
|---|---|
| Tap | homebrew/core |
| Full Name | wireguard-go |
| Version Scheme | 0 |
| Revision | 0 |
| Head Version | HEAD |
| Bottle Stable Root URL | https://ghcr.io/v2/homebrew/core |
| Deprecated | no |
| Disabled | no |
| Keg Only | no |
| URL Keys |
|
source database matches
Matches are pulled from external package-manager indexes and kept separate from local Automic Vault package links.
golang-golang.zx2c4-wireguard-dev 0.0.20231211-1
Userspace implementation of WireGuard in Go (library)
https://git.zx2c4.com/wireguard-go/about/
sudo apt install golang-golang.zx2c4-wireguard-devwireguard-go 0.0.20231211-1+b9
Userspace implementation of WireGuard in Go (program)
https://git.zx2c4.com/wireguard-go/about/
sudo apt install wireguard-gowireguard-go
nix profile install nixpkgs#wireguard-gogolang-golang.zx2c4-wireguard-dev 0.0.20230223-1
Userspace implementation of WireGuard in Go (library)
https://git.zx2c4.com/wireguard-go/about/
sudo apt install golang-golang.zx2c4-wireguard-devwireguard-go 0.0.20230223-1
Userspace implementation of WireGuard in Go (program)
https://git.zx2c4.com/wireguard-go/about/
sudo apt install wireguard-gowireguard-go 0.0.20250522-r9
Next generation secure network tunnel: userspace implementation in go
sudo apk add wireguard-gowireguard-go-doc 0.0.20250522-r9
Next generation secure network tunnel: userspace implementation in go (documentation)
sudo apk add wireguard-go-docwireguard-go
sudo port install wireguard-gosource trail
This page is generated by av-web from the private package SQLite artifact built by scripts/generate-pkg-sqlite.py.
View the package source record on GitHub.