Kotlin/Android port of the Guardian Rust Linux client. See the Android agent documentation (docs/platforms/android-agent.md) for architecture and deployment notes.
- Copy
app/google-services.json.example→app/google-services.json(Firebase console). - Set server
FCM_SERVER_KEYorFIREBASE_CREDENTIALS_JSON. - Build:
python scripts/i18n/manage.py bundle --target android && ./gradlew assembleDebug - Install the APK, scan the server Settings QR, approve in Admin → Devices.
- Provision as Device Owner so capabilities are granted automatically:
adb dpm set-device-owner com.guardian.agent/com.guardian.agent.admin.GuardianDeviceAdminReceiver(device must have no accounts; factory reset or new user profile). Without device owner, enable Device Admin, Usage Access, and VPN manually on the phone.
Connectivity uses FCM + short WebSocket sessions, not a 24/7 socket. See the Android agent docs.
protocol/— WebSocket JSON messages and ephemeralAgentWebSocketClientpush/— FCM (GuardianMessagingService) and token registrationwork/— WorkManager periodic sync and pairing pollservice/—AgentSessionCoordinator(schedules sync sessions)policy/— Time limits, domain blocklists, app rulesvpn/— Domain filtering VPN tunnelmonitor/— Usage stats and alert generationadmin/— Device Admin receiverui/— Pairing wizard, QR scanner, status screen