.github/workflows/deploy-relay.yml | 1 + apps/mobile/app.config.ts | 9 +- apps/mobile/modules/t3-agent-notifications/android/build.gradle | 34 + apps/mobile/modules/t3-agent-notifications/android/src/main/AndroidManifest.xml | 14 + apps/mobile/modules/t3-agent-notifications/android/src/main/java/expo/modules/t3agentnotifications/AgentNotifications.kt | 336 +++++++ apps/mobile/modules/t3-agent-notifications/android/src/main/java/expo/modules/t3agentnotifications/T3AgentNotificationsModule.kt | 25 + apps/mobile/modules/t3-agent-notifications/android/src/test/java/expo/modules/t3agentnotifications/AgentNotificationsTest.kt | 430 +++++++++ apps/mobile/modules/t3-agent-notifications/expo-module.config.json | 4 + apps/mobile/package.json | 1 + apps/mobile/src/features/agent-awareness/androidNotifications.test.ts | 63 ++ apps/mobile/src/features/agent-awareness/androidNotifications.ts | 35 + apps/mobile/src/features/agent-awareness/capabilities.ts | 6 +- apps/mobile/src/features/agent-awareness/notificationPermissions.test.ts | 59 ++ apps/mobile/src/features/agent-awareness/notificationPermissions.ts | 17 +- apps/mobile/src/features/agent-awareness/registrationPayload.ts | 34 +- apps/mobile/src/features/agent-awareness/remoteRegistration.test.ts | 253 +++++- apps/mobile/src/features/agent-awareness/remoteRegistration.ts | 86 +- apps/mobile/src/features/settings/SettingsRouteScreen.logic.test.ts | 6 +- apps/mobile/src/features/settings/SettingsRouteScreen.logic.ts | 4 +- apps/mobile/src/features/settings/SettingsRouteScreen.tsx | 74 +- apps/web/src/components/clerk/MobileClientsUserProfilePage.logic.test.ts | 11 + apps/web/src/components/clerk/MobileClientsUserProfilePage.logic.ts | 8 +- docs/operations/android-notifications.md | 121 +++ docs/operations/connect-setup.md | 12 + docs/user/mobile-notifications.md | 11 + infra/relay/.env.example | 7 +- infra/relay/README.md | 8 +- infra/relay/migrations/postgres/20260906042516_android_devices/migration.sql | 2 + infra/relay/migrations/postgres/20260906042516_android_devices/snapshot.json | 1516 ++++++++++++++++++++++++++++++++ infra/relay/package.json | 2 + infra/relay/scripts/android-push-smoke.ts | 152 ++++ infra/relay/scripts/android-push-watch.ts | 227 +++++ infra/relay/src/Config.ts | 3 +- infra/relay/src/WebCrypto.ts | 5 + infra/relay/src/agentActivity/AgentActivityPublisher.test.ts | 78 +- infra/relay/src/agentActivity/AgentActivityPublisher.ts | 16 +- infra/relay/src/agentActivity/ApnsDeliveries.test.ts | 44 +- infra/relay/src/agentActivity/ApnsDeliveries.ts | 22 + infra/relay/src/agentActivity/Devices.ts | 8 +- infra/relay/src/agentActivity/FcmAssertionSigner.ts | 76 ++ infra/relay/src/agentActivity/FcmClient.test.ts | 254 ++++++ infra/relay/src/agentActivity/FcmClient.ts | 166 ++++ infra/relay/src/agentActivity/FcmDeliveries.test.ts | 836 ++++++++++++++++++ infra/relay/src/agentActivity/FcmDeliveries.ts | 345 ++++++++ infra/relay/src/agentActivity/FcmDeliveryQueueConsumer.ts | 25 + infra/relay/src/agentActivity/FcmDeliveryQueueSender.ts | 14 + infra/relay/src/agentActivity/LiveActivities.ts | 4 +- infra/relay/src/agentActivity/MobileRegistrations.test.ts | 12 +- infra/relay/src/agentActivity/fcmPayloads.ts | 86 ++ infra/relay/src/http/Api.test.ts | 109 ++- infra/relay/src/http/Api.ts | 22 + infra/relay/src/persistence/schema.ts | 5 +- infra/relay/src/queues.ts | 5 + infra/relay/src/worker.ts | 89 +- packages/client-runtime/src/relay/managedRelay.test.ts | 27 +- packages/client-runtime/src/relay/managedRelay.ts | 2 +- packages/contracts/src/relay.test.ts | 47 +- packages/contracts/src/relay.ts | 35 +- 58 files changed, 5761 insertions(+), 142 deletions(-)