WireGuard, AmneziaWG and Cisco AnyConnect in one native, free and open-source macOS VPN client: SwiftUI app, Network Extension, kill switch, on-demand, and a wombat CLI
See the code⭐ If Wombat is useful to you, please star the repo. Stars help it get into the official Homebrew catalog.
A native, free and open-source WireGuard® client for macOS, built security-first: SwiftUI app,
Apple Network Extension, and a wombat command line for developers.
The official WireGuard app for macOS has been effectively abandoned: its last commit was in February 2023, and it still ships the wireguard-go of that era. The alternatives are either not native (Electron or web views), not pretty, or not free (Passepartout, Shimo and others).
Wombat is a modern replacement that feels like part of macOS:
wombat status, up, show, check, logs -f…),
JSON output, a config linter with CI exit codes, and a skill that teaches coding agents to
drive it.Wombat speaks standard wg-quick .conf files and imports the official app's
Export Tunnels to Zip archive directly, so switching takes a minute. It also speaks
AmneziaWG, the WireGuard variant that disguises
its traffic from deep packet inspection, so exports from the AmneziaWG app import too.
Or with Homebrew, which also puts the wombat command on your PATH:
brew install --cask ventz/tap/wombat-wireguard
Wombat is signed with a Developer ID, notarized by Apple, and updates itself. Requires macOS 15 or later (Apple silicon or Intel).
To build from source instead (needs a paid Apple Developer account: macOS only runs VPN system extensions that are Developer ID signed), see docs/DEVELOPING.md:
brew install go xcodegen
git clone https://github.com/ventz/wombat-wireguard-mac-app && cd wombat-wireguard-mac-app
scripts/build-signed.sh --install
.conf files, a zip of them, or paste from the clipboard. Every
import shows where traffic will go and what's risky before anything is saved.Jc, S1-S4, H1-H4,
I1-I5) run on amneziawg-go and connect to AmneziaWG servers. Plain WireGuard tunnels keep
running upstream wireguard-go; the two engines share one app.PostUp-style scripts.wombat import ~/Downloads/home.conf # approve in the app
wombat up home
wombat show home # like `wg show`
wombat check *.conf --strict # lint; exit 1 on errors or risks
wombat genkey | tee priv.key | wombat pubkey
wombat logs -f # stream app and tunnel logs
wombat help lists every command; see docs/CLI.md for the reference, exit codes and
shell completion. The Homebrew cask installs the CLI; otherwise Wombat's Settings › Command Line
shows the command and whether it is installed.
Credit: the command line's scope was modeled on the ctl tool of
wireguide by korjwl1.
Security is the first design goal, ahead of speed and convenience.
PostUp, PreDown and friends are parsed, flagged and ignored.
AmneziaWG settings are checked against Wombat's own limits, so a downloaded file can't make
the tunnel send oversized or endless junk before each handshake.Details and the threat model: docs/ARCHITECTURE.md. To report a vulnerability, see SECURITY.md.
| Document | What's in it |
|---|---|
| docs/ARCHITECTURE.md | Components, where secrets live, trust boundaries, leak protection |
| docs/CLI.md | Every wombat command, JSON output, exit codes, completion |
| docs/DEVELOPING.md | Building, signing, the test peer, debugging |
Issues and pull requests are welcome; see CONTRIBUTING.md. This is a personal project with no promise of support.
“WireGuard” and the “WireGuard” logo are registered trademarks of Jason A. Donenfeld. Wombat is not affiliated with or endorsed by the WireGuard project. See wireguard.com.
MIT © Ventz Petkov
WireGuard, AmneziaWG and Cisco AnyConnect in one native, free and open-source macOS VPN client: SwiftUI app, Network Extension, kill switch, on-demand, and a wombat CLI
See the code⭐ If Wombat is useful to you, please star the repo. Stars help it get into the official Homebrew catalog.
A native, free and open-source WireGuard® client for macOS, built security-first: SwiftUI app,
Apple Network Extension, and a wombat command line for developers.
The official WireGuard app for macOS has been effectively abandoned: its last commit was in February 2023, and it still ships the wireguard-go of that era. The alternatives are either not native (Electron or web views), not pretty, or not free (Passepartout, Shimo and others).
Wombat is a modern replacement that feels like part of macOS:
wombat status, up, show, check, logs -f…),
JSON output, a config linter with CI exit codes, and a skill that teaches coding agents to
drive it.Wombat speaks standard wg-quick .conf files and imports the official app's
Export Tunnels to Zip archive directly, so switching takes a minute. It also speaks
AmneziaWG, the WireGuard variant that disguises
its traffic from deep packet inspection, so exports from the AmneziaWG app import too.
Or with Homebrew, which also puts the wombat command on your PATH:
brew install --cask ventz/tap/wombat-wireguard
Wombat is signed with a Developer ID, notarized by Apple, and updates itself. Requires macOS 15 or later (Apple silicon or Intel).
To build from source instead (needs a paid Apple Developer account: macOS only runs VPN system extensions that are Developer ID signed), see docs/DEVELOPING.md:
brew install go xcodegen
git clone https://github.com/ventz/wombat-wireguard-mac-app && cd wombat-wireguard-mac-app
scripts/build-signed.sh --install
.conf files, a zip of them, or paste from the clipboard. Every
import shows where traffic will go and what's risky before anything is saved.Jc, S1-S4, H1-H4,
I1-I5) run on amneziawg-go and connect to AmneziaWG servers. Plain WireGuard tunnels keep
running upstream wireguard-go; the two engines share one app.PostUp-style scripts.wombat import ~/Downloads/home.conf # approve in the app
wombat up home
wombat show home # like `wg show`
wombat check *.conf --strict # lint; exit 1 on errors or risks
wombat genkey | tee priv.key | wombat pubkey
wombat logs -f # stream app and tunnel logs
wombat help lists every command; see docs/CLI.md for the reference, exit codes and
shell completion. The Homebrew cask installs the CLI; otherwise Wombat's Settings › Command Line
shows the command and whether it is installed.
Credit: the command line's scope was modeled on the ctl tool of
wireguide by korjwl1.
Security is the first design goal, ahead of speed and convenience.
PostUp, PreDown and friends are parsed, flagged and ignored.
AmneziaWG settings are checked against Wombat's own limits, so a downloaded file can't make
the tunnel send oversized or endless junk before each handshake.Details and the threat model: docs/ARCHITECTURE.md. To report a vulnerability, see SECURITY.md.
| Document | What's in it |
|---|---|
| docs/ARCHITECTURE.md | Components, where secrets live, trust boundaries, leak protection |
| docs/CLI.md | Every wombat command, JSON output, exit codes, completion |
| docs/DEVELOPING.md | Building, signing, the test peer, debugging |
Issues and pull requests are welcome; see CONTRIBUTING.md. This is a personal project with no promise of support.
“WireGuard” and the “WireGuard” logo are registered trademarks of Jason A. Donenfeld. Wombat is not affiliated with or endorsed by the WireGuard project. See wireguard.com.
MIT © Ventz Petkov