⚠️ Configuration Required & Security Notice:
For security, this open-source repository does not include bundled server IP addresses or active private keys. Before connecting, you must configure your own WireGuard server details insrc/config/vpnConfig.ts. The mobile interface will automatically notify the user if placeholder values are detected.
- 1-Tap Connect & Disconnect: Minimal, responsive mobile interface featuring visual connection states and animated feedback.
- Native WireGuard Protocol: Direct integration with native Android VPN subsystems via
react-native-wireguard-vpn. - Decoupled Architecture: Clean separation between connection state management, UI rendering, and cryptographic peer credentials.
- Fail-Safe UI Guardrails: The client inspects configuration integrity before attempting tunnel initialization, preventing crashes or silent connection drops.
flowchart TD
subgraph UI ["Mobile Application Layer (React Native)"]
UserUI["1-Tap Connection Screen<br>(Animated Handshake State)"]
ConfigGuard["Config Guard and Validation<br>(Checks Placeholder Credentials)"]
end
subgraph NativeBridge ["Native Subsystems Layer"]
Bridge["React Native WireGuard Bridge<br>(react-native-wireguard-vpn)"]
VpnService["Android VpnService Subsystem<br>(Tun Interface Setup)"]
end
subgraph Tunnel ["Encrypted Network Layer"]
CryptoTunnel["ChaCha20-Poly1305 Tunnel<br>(UDP Port 51820)"]
Gateway["Remote WireGuard Peer<br>(Secure VPN Gateway)"]
end
UserUI --> ConfigGuard
ConfigGuard --> Bridge
Bridge --> VpnService
VpnService --> CryptoTunnel
CryptoTunnel --> Gateway
- Node.js 20+
- Android Studio & Android SDK (for Android build)
- Java 17 (recommended for modern React Native Android toolchains)
# Clone repository
git clone https://github.com/Lukecele/ARBVPN.git
cd ARBVPN
# Install dependencies
npm installOpen src/config/vpnConfig.ts and replace the placeholder values with your WireGuard server credentials:
export const DEFAULT_WG_CONFIG: WireGuardConfig = {
privateKey: '<YOUR_CLIENT_PRIVATE_KEY>',
publicKey: '<YOUR_SERVER_PUBLIC_KEY>',
presharedKey: '', // Optional
serverAddress: '<YOUR_SERVER_IP_OR_DOMAIN>',
serverPort: 51820,
address: '10.66.66.2/32',
dns: ['1.1.1.1', '1.0.0.1'],
allowedIPs: ['0.0.0.0/0', '::/0']
};npm run androidDistributed under the MIT License. Open-source client for privacy-conscious mobile developers.