explaingit

polamgh/azaditunnel

18SwiftAudience · developerComplexity · 4/5LicenseSetup · hard

TLDR

An open-source iOS VPN app written in Swift that uses psiphon-tunnel-core for traffic routing, requiring Xcode to build from source with your own server credentials and specific Apple entitlements.

Mindmap

mindmap
  root((azaditunnel))
    What it does
      iOS VPN app
      Psiphon core routing
      Custom JSON config
    Build requirements
      Xcode
      App Group entitlement
      Packet Tunnel entitlement
      Build framework from source
    Legal
      GPLv3 license
      Source distribution rules
      App Store guidance
    Testing
      Physical device tests
      Xcode Cloud CI
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Build and sideload an open-source VPN app onto your iPhone or iPad using Xcode and your own Psiphon server credentials.

USE CASE 2

Use this codebase as a reference iOS app implementation for integrating psiphon-tunnel-core and Network Extension entitlements in Swift.

USE CASE 3

Study a real-world example of GPLv3 compliance documentation, App Store distribution requirements, and packet tunnel entitlement setup for iOS.

Tech stack

SwiftXcodepsiphon-tunnel-core

Getting it running

Difficulty · hard Time to first run · 1day+

Requires Xcode, an Apple developer account with Network Extension entitlements, building psiphon-tunnel-core from source via a shell script, and separately obtained Psiphon server credentials not included in the repo.

GPLv3: you can use, modify, and distribute this freely, including commercially, but any distributed binary must come with the full corresponding source code.

In plain English

AzadiTunnel is an open-source iOS app that provides a VPN connection on iPhones and iPads. Written in Swift, it relies on a separate library called psiphon-tunnel-core to handle the actual VPN traffic routing. The project is not affiliated with Psiphon Inc., which makes the underlying library, but it uses that library directly under the same GPLv3 license. Getting it running requires Xcode, Apple's development environment for iOS. You need to enable specific system permissions called entitlements, specifically an App Group and a Packet Tunnel capability, then build the psiphon-tunnel-core framework yourself from source using a shell script the repository provides. Real Psiphon server credentials are not included in the public code, you supply those separately in files that are kept off of version control. Once built and installed on a device, using the app is straightforward: tap Connect and the VPN starts. Configuration is already bundled inside the app. There is an optional Settings screen where you can import a custom JSON configuration if you have one. The codebase includes scripts for building from the command line and for running regression tests on a real physical device. Documentation files cover testing procedures, Xcode Cloud integration, legal compliance, and how the bundled configuration files work. Because psiphon-tunnel-core is also GPLv3, any distributed binary of AzadiTunnel must come with access to corresponding source code. The repository includes detailed legal documentation explaining the distribution requirements, App Store considerations, and third-party component attributions for the libraries it depends on.

Copy-paste prompts

Prompt 1
I cloned polamgh/azaditunnel and want to build it in Xcode. Walk me through enabling the App Group and Packet Tunnel entitlements, running the build script for psiphon-tunnel-core, and adding my server credentials before installing on a real iPhone.
Prompt 2
I built azaditunnel and installed it on my iPad but tapping Connect does nothing. What should I check first in the entitlements config and the bundled JSON configuration files?
Prompt 3
I want to import a custom JSON configuration into azaditunnel on my device. What format does the file need to be in and how do I load it through the Settings screen?
Prompt 4
I plan to distribute a modified version of azaditunnel. What source code and legal documentation does the repository say I must provide with my binary under GPLv3?
Open on GitHub → Explain another repo

← polamgh on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.