Developer programme · Early access

Ship Android. Without GMS.

OS91 is GMS-free AOSP. Your existing Android codebase runs as-is. Swap the four Google runtime dependencies, and your app reaches India’s most security-sensitive fleet.

Platform specs →
terminal
$ os91-compat-check --src ./app/src --report
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Scanning 2,847 API calls across 143 files...
android.hardware.* .......... 341
androidx.security.* ......... 28
kotlin.coroutines ........... 156
android.nfc.* ............... 14
com.google.firebase.* ...... 4
→ Replace with in.elements91.push:1.9.0
com.google.android.gms.* ... 2
→ Replace with in.elements91.identity:1.2.3
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✓ 2,841 compatible ⚠ 6 require migration
Migration guide → docs.e91.in/migrate
$
SDK architecture

Five APIs. One dependency.

Your application APK / AAB · Java / Kotlin · NDK
os91-sdk:2.4.1
SecureStorage Attestation e91-push:1.9.0 e91-identity:1.2.3 BharatMaps PolicyHooks
AOSP runtime Android CTS-compliant · ARM64 + x86_64 · Full NDK/JNI
OS91 kernel 5-layer security · Hardware TEE · No GMS · Air-gap capable

gradle: implementation "in.elements91:os91-sdk:2.4.1"

API reference

Key surfaces.

E91Storage.put(key, data, level)
SecureStorage API · TEE-backed
Hardware-backed encrypted key-value store. level accepts TEE, KEYSTORE, or SOFTWARE. Per-app namespace. Auto-cleared on EDM91 remote wipe.
E91Attest.requestToken(nonce)
Attestation API · Replaces SafetyNet
Returns a signed JWT attestation from the OS91 hardware trust anchor. No Google dependency. Verifiable offline using the OS91 public certificate chain.
E91Push.register(gatewayUrl, token)
Push Gateway · Replaces Firebase FCM
Register for push notifications via your on-premise e91 gateway or the MeghRaj-hosted endpoint. Zero Google routing. Works in air-gapped environments with gateway access.
E91Identity.verify(biometricToken)
Identity SDK · Aadhaar-linked
Biometric-bound federated identity. Supports offline verification for air-gapped deployments. Token signed against the OS91 hardware root, not a cloud service.
E91Policy.on(event, handler)
Policy Hooks · Kernel-level events
Subscribe to EDM91 fleet events in real time. WIPE, LOCK, GEOFENCE_BREACH, POLICY_CHANGE. Handler fires before the system acts.
BharatMaps.init(ctx, key, offline)
BharatMaps SDK · NAVIC-integrated
Drop-in Google Maps replacement backed by ISRO’s NAVIC constellation. Offline tile support. No foreign location telemetry. Pass offline=true for air-gapped deployments.
Compatibility

What runs as-is. What needs migration.

Android CTS hardware APIs Fully compatible
Java / Kotlin standard library Unmodified
NDK / JNI · ARM64, x86_64 Full support
Jetpack Compose / View system Fully compatible
Firebase Cloud Messaging (FCM) Replace with e91-push
Google Play Services (GMS) Use e91-sdk equivalents
Google Maps SDK Replace with BharatMaps
Widevine DRM Use e91 DRM (auditable)
Distribution

From build to fleet.

01
Build & sign
Generate APK or AAB. Sign with your e91 Developer Certificate, issued after KYC via the developer portal.
02
Compatibility scan
Run os91-compat-check locally. Resolve any GMS or Widevine dependencies flagged in the report before submission.
03
Security review
Automated static analysis plus manual review for GOI and defence categories. Typically 3–5 business days. Classified submissions follow a separate SLA.
04
Publish
App appears in the Sovereign App Store, visible to all OS91 devices and fleet admins. Enterprise and classified channels available for restricted distribution.
Early access · Limited seats

Apply for the OS91 developer programme.

Full tech stack →