A fast, modern Android VPN client built with Jetpack Compose and Kotlin, featuring DNS tunneling with support for multiple protocols.
Join our Telegram channel for updates, support, and discussions:
If you want to support development:
- USDT (BNB, ERC20):
0xd4140058389572D50dC8716e768e687C050Dd5C9
SlipNet supports multiple tunnel types with optional SSH chaining:
| Tunnel Type | Protocol | Description |
|---|---|---|
| DNSTT | KCP + Noise | Stable and reliable DNS tunneling |
| DNSTT + SSH | KCP + Noise + SSH | DNSTT with SSH chaining for zero DNS leaks |
| Slipstream | QUIC | High-performance QUIC tunneling |
| Slipstream + SSH | QUIC + SSH | Slipstream with SSH chaining |
| SSH | SSH | Standalone SSH tunnel (no DNS tunneling) |
| DOH | DNS over HTTPS | DNS-only encryption via HTTPS (RFC 8484) |
| Tor | Tor Network | Connect via Tor with Snowflake, obfs4, Meek, or custom bridges |
Note: DNSTT is the default and recommended tunnel type for most users. SSH variants add an extra layer of encryption and can prevent DNS leaks.
- Modern UI: Built entirely with Jetpack Compose and Material 3 design
- Multiple Tunnel Types: DNSTT, Slipstream, SSH, DOH, and Tor with optional SSH chaining
- SSH Tunneling: Chain SSH through DNSTT or Slipstream, or use standalone SSH
- DNS over HTTPS: Encrypt DNS queries via HTTPS without tunneling other traffic
- DNS Transport Selection: Choose UDP, DoT, or DoH for DNSTT DNS resolution
- SSH Cipher Selection: Choose between AES-128-GCM, ChaCha20, and AES-128-CTR
- DNS Server Scanning: Automatically discover and test compatible DNS servers
- Multiple Profiles: Create and manage multiple server configurations
- Configurable Proxy: Set custom listen address and port
- Quick Settings Tile: Toggle VPN connection directly from the notification shade
- Auto-connect on Boot: Optionally reconnect VPN when device starts
- APK Sharing: Share the app via Bluetooth or other methods in case of internet shutdowns
- Debug Logging: Toggle detailed traffic logs for troubleshooting
- Dark Mode: Full support for system-wide dark theme
To use this client, you must have a compatible server. Please configure your server in SOCKS or SSH mode using one of the following deployment scripts:
DNSTT: dnstt-deploy
SlipStream: slipstream-rust-deploy
- Android 7.0 (API 24) or higher
- Android Studio Hedgehog (2023.1.1) or later
- JDK 17
- Rust toolchain (for building the native library)
- Android NDK 29
-
Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
-
Add Android targets
rustup target add aarch64-linux-android armv7-linux-androideabi i686-linux-android x86_64-linux-android
-
Set up OpenSSL for Android
OpenSSL will be automatically downloaded when you build for the first time. You can also set it up manually:
./gradlew setupOpenSsl
This will download pre-built OpenSSL libraries or build from source if the download fails. OpenSSL files will be installed to
~/android-openssl/android-ssl/.To verify your OpenSSL setup:
./gradlew verifyOpenSsl
-
Clone the repository
git clone https://github.com/anonvector/SlipNet.git cd SlipNet -
Initialize submodules
git submodule update --init --recursive
-
Build the project
./gradlew assembleDebug
Or open the project in Android Studio and build from there.
app/
├── src/main/
│ ├── java/app/slipnet/
│ │ ├── data/ # Data layer (repositories, database, native bridge)
│ │ │ ├── local/ # Room database and DataStore
│ │ │ ├── mapper/ # Entity mappers
│ │ │ ├── native/ # JNI bridge to Rust
│ │ │ └── repository/ # Repository implementations
│ │ ├── di/ # Hilt dependency injection modules
│ │ ├── domain/ # Domain layer (models, use cases)
│ │ │ ├── model/ # Domain models
│ │ │ ├── repository/ # Repository interfaces
│ │ │ └── usecase/ # Business logic use cases
│ │ ├── presentation/ # UI layer (Compose screens)
│ │ │ ├── common/ # Shared UI components
│ │ │ ├── home/ # Home screen
│ │ │ ├── navigation/ # Navigation setup
│ │ │ ├── profiles/ # Profile management screens
│ │ │ ├── settings/ # Settings screen
│ │ │ └── theme/ # Material theme configuration
│ │ ├── service/ # Android services
│ │ │ ├── SlipNetVpnService.kt
│ │ │ ├── QuickSettingsTile.kt
│ │ │ └── BootReceiver.kt
│ │ └── tunnel/ # VPN tunnel implementation
│ └── rust/ # Rust native library
│ └── slipstream-rust/ # QUIC/DNS tunneling implementation
├── build.gradle.kts
└── proguard-rules.pro
SlipNet follows Clean Architecture principles with three main layers:
- Presentation Layer: Jetpack Compose UI with ViewModels
- Domain Layer: Business logic and use cases
- Data Layer: Repositories, Room database, and native Rust bridge
- UI: Jetpack Compose, Material 3
- Architecture: MVVM, Clean Architecture
- DI: Hilt
- Database: Room
- Preferences: DataStore
- Async: Kotlin Coroutines & Flow
- Native: Rust via JNI (QUIC protocol implementation)
- SSH: JSch (mwiede fork with AES-GCM, ChaCha20 support)
- HTTP: OkHttp (HTTP/2 for DoH requests)
Each server profile contains:
- Name: Display name for the profile
- Tunnel Type: DNSTT, Slipstream, SSH, DOH, or their SSH variants
- Domain: Server domain for DNS tunneling
- Resolvers: DNS resolver configurations
- Public Key: Server's Noise protocol public key (hex format)
- DNS Transport: UDP, DoT (DNS over TLS), or DoH (DNS over HTTPS)
- Congestion Control: QUIC congestion control algorithm (BBR, DCUBIC)
- Keep-Alive Interval: QUIC keep-alive interval in milliseconds
- Authoritative Mode: Use authoritative DNS resolution
- GSO: Generic Segmentation Offload for better performance
- SSH Host: SSH server address
- SSH Port: SSH server port (default 22)
- SSH Username/Password: Authentication credentials
- SSH Cipher: Preferred encryption algorithm (AES-128-GCM, ChaCha20, AES-128-CTR)
- DoH Server URL: HTTPS endpoint for DNS queries (e.g.,
https://cloudflare-dns.com/dns-query)
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is released under the SlipNet Source-Available License.
You are allowed to:
- View, study, and modify the source code for personal, private use
- Use the software locally for educational or research purposes
- Fork the repository to submit contributions (Pull Requests) to the original project
You are NOT allowed to:
- Distribute this software (source or binary) to third parties
- Publish this application on app stores (including Google Play, F-Droid, or Apple App Store)
- Commercialize the software or any derivative works
See LICENSE for the full legal terms.
"SlipNet" is the reserved project name.
Use of the project name, logo, or branding in derivative works or republished versions is strictly prohibited without explicit written permission from the maintainers. This applies even if you have modified or forked the code.
This project is not authorized for distribution on any application store, marketplace, or file-hosting service.
If you find this application on Google Play, the Apple App Store, or any other marketplace, it is an UNAUTHORIZED build. It may be outdated, modified, or malicious. Please download SlipNet only from the official repository.
- slipstream-rust - Rust QUIC tunneling library
- Stream-Gate - DNS tunnel scanning method


