Skip to content

Use the Android companion

The Android app uses the shared Rust mobile library and Android's VPN service. It imports a client configuration and establishes the tunnel on the phone.

Build

Use the checked-in Gradle wrapper and Android build scripts. Install the Android SDK/NDK and the Rust targets used by the script, then run:

make android-debug
make android-install

NDK_HOME=/path/to/ndk make android-debug selects an explicit NDK. make android-debug-apk rebuilds only the Kotlin app and requires an already current native library; it is not a substitute for rebuilding changed Rust code.

Import and connect

Provision a complete client configuration. Scan its QR code or use the application's import controls, check the server name and selected transport, and approve Android's VPN permission prompt. Keep the configuration and QR private: they may contain the client's private key.

Confirm traffic reaches the intended server, rather than relying only on the connected indicator. Android routing and background restrictions differ from the Linux systemd service; use the app's diagnostics and status screens for that platform.

Change or remove an identity

Keep the original credential securely if you need it again. An exported public-only server configuration cannot recreate a lost client private key. Provision a replacement and revoke the old identity when migrating credentials.

Source: VPN service, build targets, mobile crate.