I’m working on bringing the WireGuard VPN tunnel to iOS and macOS using the Network Extension framework. The iOS version is now in beta.

I initially tried to implement the WireGuard protocol in Swift, but abandoned that after learning that the WireGuard team had plans to make the Go implementation of WireGuard (used in their Android app) available for use in iOS.

When I took a look at WireGuard after a few months, they had a C API for the WireGuard protocol that could be used from iOS, and an effort to make an iOS app was underway.

I proposed a rewrite of the app to:

  • Use the VPN tunnel for data persistance instead of Core Data
  • Redo the UI to support both the iPhone and iPad
  • Redo the UI in code (no Interface Builder)
  • Enable a macOS version to be developed with the same code base

My pitch was accepted, and I’m currently working on this project.

Source code: https://git.zx2c4.com/wireguard-ios/