About
JetBird is an implementation of the NetBird client for Android.
It has been built with privacy in mind and contains no blobs or trackers.
Features
- Native UI
- Use SSO or setup keys
- Use pre-shared keys
- See all logs in real time
- Quick tile
- Exclude apps from the tunnel
- Exit nodes (with client-side customisation)
- Tablet support
- Reconnect on restart
- Relay support from JetBird v1.0.4+ (with NetBird v0.29.0+ peers)
- TV support
- Lazy connection support - NetBird docs
- External broadcast receiver for automation (e.g. via Tasker)
Differences
There are a few differences between NetBird official Android client and JetBird. Some of these features rely on patches to the NetBird source (these are in patches/):
- See all peer info
- Use setup keys even with SSO support
- Rosenpass support
- Split tunneling via routes and/or per app
- l18n
Install
Prebuilt binaries
- Available to download in the releases tab
- You can see the steps of the build on JetBird's CI page
- Where possible, download the specific build for your device's architecture because the NetBird client is ~25MB and downloading the universal version will download all 4 architectures regardless of if you need them
Build from source
- Build NetBird
./scripts/build_netbird.sh
JetBird's NetBird client patches will be applied automatically.
- Build APK
./gradlew :app:assembleRelease
Privacy
JetBird does not, and never will, call home.
JetBird/NetBird has to talk to your management server, which will have it's own privacy policy.
In the NetBird management portal, admins will be able to see:
- You are using JetBird
- JetBird and NetBird versions
- Device model e.g. Pixel 9 Pro Fold
- Operating system e.g. Android 14
JetBird makes no extra connections or requests outside of the NetBird client.
Permissions
JetBird requires a few permissions in order to function:
INTERNETFOREGROUND_SERVICE/FOREGROUND_SERVICE_SYSTEM_EXEMPTED- used to run the VPN serviceACCESS_NETWORK_STATE/CHANGE_NETWORK_STATE- used to monitor network to check if VPN is already running etc.POST_NOTIFICATIONS- used for notifications when JetBird is running and when upstream sends new routesQUERY_ALL_PACKAGES- used so you can choose which apps aren't tunneledRECEIVE_BOOT_COMPLETED- used to start the tunnel when the device reboots - this is disabled by default in the manifest and will enable itself once you enable it in settings
Notifications
Notifications are optional but Android requires JetBird to show a notification when the tunnel is running. This is dismissible on Android 13+.
JetBird will also send you a notification when there are route changes, as you will need to restart the tunnel. This can be configured in the settings to automatically restart the tunnel but this process will stop the VPN momentarily.
Screenshots
Phone
Tablet
Issues
As JetBird is just a wrapper around the official NetBird client, most connection/peer/management issues will reside with upstream.
Please open an issue using the template provided if you believe you have found a bug or have a feature request!
Translations
You can contribute to JetBird translations here
Libraries
See a full list of libraries used here
License
JetBird is free software: you can redistribute it and/or modify it under the terms of the GNU GPL-3.0-or-later License as published by the Free Software Foundation.
This software is provided with no warranty.
Other
"NetBird" and the "NetBird" logo are copyright owned by or licensed to Wiretrustee UG.
"WireGuard" and the "WireGuard" logo are registered trademarks of Jason A. Donenfeld.
"IzzyOnDroid" and the "IzzyOnDroid" logo are registered trademarks of IzzySoft.









