Cross-platform VPN client suite (Android, iOS, macOS, Windows) integrating Shadowsocks-based engines, tun2socks and platform packet processors. This repo contains platform-specific apps, native engines, helper libraries and build files.
AppGo is a multi-platform VPN client and toolkit. It provides:
- A user-facing VPN client (Android/iOS/macOS/Windows) with UI, preferences, and purchase flow.
- A native VPN engine stack: Shadowsocks (shadowsocks-libev/Shadowsocks frameworks), tun2socks, redsocks and PacketProcessor frameworks for packet handling.
- DNS/ACL helpers (e.g., Overture) and platform integrations (Android VpnService, iOS PacketTunnel / NetworkExtension, macOS NetworkExtension, Windows service).
Why this matters:
- The project brings together cross-platform UI and robust native networking components to deliver reliable VPN/proxy functionality across major desktop and mobile platforms.
- /android โ Android app (Kotlin), Gradle config, native libs (.so), plugin module
- android/mobile โ Android application module (manifest, Kotlin sources, assets)
- /ios โ iOS app (Swift/ObjC), frameworks in ios/Library, PacketTunnel provider
- /macos โ macOS app (Swift/ObjC), NetworkExtension and helper libs
- /windows โ Windows app (C#), service and helper binaries
- /android/plugin โ plugin module for Android
- LICENSE โ MIT license
- .gitignore โ recommended ignores and generated files
Quick mapping:
- Android entry: android/mobile/src/main/java/com/appgo/appgopro/AppGoApplication.kt
- iOS entry: ios/AppGo/AppDelegate.swift
- macOS entry: macos/AppGo/AppDelegate.swift
- Windows entry: windows/Program.cs
- Languages: Kotlin (Android), Swift / Objective-C (iOS & macOS), C# (Windows), C for native tools.
- VPN / networking engines:
- Shadowsocks (native libs and platform frameworks)
- tun2socks (transparent SOCKS proxying)
- redsocks (redirector)
- PacketProcessor (iOS/macOS kernel-level/tunnel helpers)
- Overture (DNS/ACL resolver)
- Libraries / frameworks:
- iOS / macOS: Alamofire, CocoaAsyncSocket, CocoaLumberjack, Sentry
- Android: Gradle/Kotlin tooling, JNI native libraries (.so)
- Windows: .NET 4.5.1 (project targets), native helper executables packaged under windows/Data
- Build & packaging:
- Android: Gradle wrapper (android/gradlew), Android SDK/NDK, Go (for parts)
- iOS / macOS: Xcode projects and embedded frameworks (ios/Library, macos/Library)
- Windows: Visual Studio / MSBuild (.sln and .csproj files)
- End-to-End Encryption: Implements industry-standard AES-256-GCM encryption to ensure all data remains private from ISPs and hackers.
- Secure Tunneling Protocols: Supports high-performance protocols including WireGuard and OpenVPN for the best balance of speed and security.
- Zero-Logs Policy: Designed with a strict no-logs architecture; the application does not monitor, record, or store any user activity or connection timestamps.
- DNS Leak Protection: Built-in protection to prevent your ISP from seeing which websites you visit, even when the VPN is active.
- Kill Switch: Automatically disconnects your device from the internet if the VPN connection drops, preventing accidental data exposure.
- Obfuscation Technology: Features stealth mode to bypass firewalls and DPI (Deep Packet Inspection) in restricted network environments.
General note: this is a large multi-project repo. The steps below are the minimal developer quickstarts (focused on local dev builds). See platform-specific module READMEs (android/README.md) for deeper detail.
- Git (repo has submodules in some forks; run git submodule update --init --recursive if needed)
- Ensure you have the platform toolchains installed for the target you intend to build.
Requirements:
- JDK 1.8
- Android SDK (Build Tools 27+)
- Android NDK r16+ (optional if native code needs rebuild)
- Go (for some native toolchains) โ set GOROOT_BOOTSTRAP if required
Build (from repository root):
- Configure environment variables:
- ANDROID_HOME=/path/to/android-sdk
- optionally ANDROID_NDK_HOME=/path/to/android-ndk
- GOROOT_BOOTSTRAP=/path/to/go
- Build an APK (Gradle wrapper included):
- cd android
- ./gradlew assembleDebug
- Install on device:
- adb install -r mobile/build/outputs/apk/debug/mobile-debug.apk
Notes:
- Android manifest and components: android/mobile/src/main/AndroidManifest.xml
- Native libraries (.so) are under android/mobile/src/main/jniLibs/ for multiple ABIs.
Requirements:
- Xcode (matching iOS deployment target in project)
- CocoaPods / Carthage not required if frameworks are prebundled (ios/Library contains frameworks)
Build:
- Open workspace/project:
- Open ios/AppGo.xcworkspace or ios/AppGo.xcodeproj in Xcode.
- Select a signing team and device, then build & run (โR).
Notes:
- Packet tunnel / VPN provider code in: ios/Share/Vpn and ios/Share/Vpn/PacketTunnelProvider.*
- App configuration: ios/AppGo/AppGo-Info.plist and ios/config.plist
Requirements:
- Xcode
- Network Extension entitlements for VPN functionality
Build:
- Open macos/AppGo.xcodeproj in Xcode.
- Choose the App target or AppGoLauncher and run.
Notes:
- PacketProcessor/NetworkExtension integration resides in macos/Share/Vpn and macos/Library.
Requirements:
- Visual Studio (2015/2017/2019) with .NET Framework 4.5.1 or higher
Build:
- Open windows/AppGo.sln in Visual Studio.
- Restore NuGet packages and build the solution.
- Run AppGo.exe from build output or install using the provided installer configuration.
Notes:
- The main entry is windows/Program.cs. The service helper is in windows/AppGoService.
- Android: strings, configs and assets under android/mobile/src/main/res and android/mobile/src/main/assets (ACL lists, hosts, gfwlist, etc.).
- iOS/macOS: ios/AppGo/AppGo-Info.plist and ios/config.plist contain configuration, ATS exceptions, and URL schemes.
- Windows: windows/Data includes prebuilt native executables and drivers (tap drivers packaged as gz). Windows build references them under windows/Data.
Be careful when changing secrets/keys โ some API keys/fabric keys appear in Info.plist and manifest metadata (check before public use or App Store submission).
- Fork โ branch โ pull request.
- Keep changes per-platform under the relevant folder (android/, ios/, macos/, windows/).
- Code style:
- Android: Kotlin + Gradle; follow idiomatic Kotlin and Android Studio lint rules.
- iOS / macOS: Swift/ObjC; use Xcode's recommended style.
- Windows: C# .NET conventions.
- Please run platform-specific linters/builds locally before PRs.
- If you add native binaries, include build steps or scripts to regenerate them.
- This repository is licensed under the MIT License โ see LICENSE.
| Priority | Area | Planned work | Notes |
|---|---|---|---|
| ๐ฅ High | Stability | Harden VPN reconnection & error handling | Improve native engine restart logic across platforms |
| ๐ท Medium | Features | Per-app split tunneling & per-network profiles | Platform-specific implementation (Android VpnService, macOS NE) |
| ๐ก Low | UX | Redesign settings & onboarding | Multi-language strings already present |
| ๐ข Backlog | CI/Automation | Add cross-platform CI builds and tests | Automate Android Gradle, iOS unit tests and Windows builds |
- Android module: android/mobile
- iOS project: ios/AppGo.xcodeproj
- macOS project: macos/AppGo.xcodeproj
- Windows solution: windows/AppGo.sln
- Android README: android/README.md (contains additional Android build details)
If you want, I can:
- Expand any platform's Quick Start into a stepโbyโstep tutorial (including provisioning, signing, and native binary rebuild).
- Generate CONTRIBUTING.md with PR template and commit message guidance.
- Produce a short architecture diagram or a CONTRIBUTOR checklist.
Thank you โ happy hacking! โจ
