# mobile/android — Centralcloud On-Call Android App ## Role Engineer's single pane for on-call: paging, conference bridge, and agent chat. Centrally configured — one hardcoded URL, everything else pulled from the server. ## Bootstrap App hits `GET https://ops.centralcloud.com/api/android/config` on first launch (bearer token from QR/deep-link setup). Receives: ```json { "push_url": "https://push.infra.centralcloud.com", "push_topic": "oncall-", "push_token": "...", "agent_url": "https://ops.centralcloud.com/chat/", "agent_token": "...", "oncall_url": "https://ops.centralcloud.com/oncall-api/", "bridge_url": "https://ops.centralcloud.com/bridge" } ``` ## Features | Feature | Backend | |---|---| | Push alerts (DND-bypass) | oncall (`push.infra.centralcloud.com`) | | Incident acknowledge / resolve | `centralcloud-ops` API | | Join conference bridge | Twilio + `centralcloud-ops /bridge` | | Chat with ops agent | `operations-agent` (hermes-agent API) | | On-call schedule view | `centralcloud-ops /oncall-api/` → OnCall | ## Build Kotlin + Gradle. Nix flake for reproducible builds. Fastlane for signing + internal distribution. ```bash nix develop ./gradlew assembleDebug fastlane internal # push to internal track ``` Forgejo repo: `git.infra.centralcloud.com/centralcloud/mobile-android` CI: Forgejo Actions → builds APK → pushes to internal registry ## Notifications oncall topic per engineer, centrally assigned. DND-bypass requires `IMPORTANCE_MAX` notification channel — already configured. Do NOT use Firebase Cloud Messaging — oncall is the push provider.