managed_device
Managed device
Private provisioning QR flows for Device Owner enrollment. The machine-facing metadata stays stable while the tenant-bound bootstrap token remains short-lived.
/android/channels/managed_device/latest.json
Android distribution surface
SecPal keeps Device Owner provisioning, direct APK delivery, GitHub releases, and Obtainium compatibility on the same signed app package: app.secpal.
The APK stays identical. Channel metadata, provisioning context, and rollout policy decide how the same package is delivered and updated.
managed_device
Private provisioning QR flows for Device Owner enrollment. The machine-facing metadata stays stable while the tenant-bound bootstrap token remains short-lived.
/android/channels/managed_device/latest.json
direct_apk
Human-driven installs that should always resolve to a latest APK URL, checksum, and metadata document under apk.secpal.app.
/android/channels/direct_apk/latest.json
github_release
Public release notes can continue to live on GitHub Releases while the canonical machine endpoints stay anchored on apk.secpal.app.
/android/channels/github_release/latest.json
obtainium
Update tooling can poll a stable JSON endpoint instead of scraping HTML or guessing release filenames.
/android/channels/obtainium/latest.json
The landing route stays human-readable on secpal.app. All machine-facing URLs are defined against apk.secpal.app so later release automation can switch storage backends without changing clients.
https://apk.secpal.app/android/channels/{channel}/latest.json
https://apk.secpal.app/android/channels/{channel}/app.secpal-latest.apk
https://apk.secpal.app/android/channels/{channel}/SHA256SUMS.txt
https://apk.secpal.app/android/releases/{version}/metadata.json
https://apk.secpal.app/android/releases/{version}/app.secpal-{version}.apk
https://apk.secpal.app/android/releases/{version}/SHA256SUMS.txt
This repository now defines the public route structure and metadata contract. The backing APK storage choice, such as GitHub Releases, object storage, or a CDN, still needs an explicit release-time decision before automation is wired up.