Problem
NeMo Relay publishes Python wheels for glibc, musl, macOS, and Windows, but not Android/Bionic. This blocks consumers that declare Relay as a dependency on Android. NousResearch/hermes-agent#76643 currently works around the failure by excluding Relay on Android and falling back to its no-op Relay host.
The recent musllinux packaging work does not cover this case: Termux binaries use Android Bionic, not musl.
There are two distinct compatibility targets:
- Official CPython on Android (Python 3.13+, PEP 738), which selects
android_<api>_<abi> wheels accepted by PyPI.
- Legacy Termux Python installations that identify as
linux/aarch64 while linking against Bionic. PyPI does not accept a generic linux_aarch64 binary wheel, and those environments may not select PEP 738 Android tags.
Proposed work
- Build and publish CPython ABI3 wheels for
android_24_arm64_v8a and android_24_x86_64.
- Smoke-test wheel installation and
import nemo_relay in an Android x86_64 emulator in CI.
- Validate the ARM64 artifact on an Android device or ARM64 emulator before documenting it as supported.
- Document the supported Android Python versions and explicitly distinguish them from older Termux Python environments.
- Confirm whether current Termux Python selects PEP 738 Android tags. If it does not, keep consumer dependency markers fail-open and track any Termux-native distribution path separately.
Acceptance criteria
- Release workflows collect and publish both Android wheel artifacts.
- Wheel filenames use valid PEP 738 platform tags.
- CI installs and imports the x86_64 wheel under Android.
- ARM64 runtime validation is recorded before release.
- Installation documentation states the Android and Termux support boundary.
References
Problem
NeMo Relay publishes Python wheels for glibc, musl, macOS, and Windows, but not Android/Bionic. This blocks consumers that declare Relay as a dependency on Android. NousResearch/hermes-agent#76643 currently works around the failure by excluding Relay on Android and falling back to its no-op Relay host.
The recent musllinux packaging work does not cover this case: Termux binaries use Android Bionic, not musl.
There are two distinct compatibility targets:
android_<api>_<abi>wheels accepted by PyPI.linux/aarch64while linking against Bionic. PyPI does not accept a genericlinux_aarch64binary wheel, and those environments may not select PEP 738 Android tags.Proposed work
android_24_arm64_v8aandandroid_24_x86_64.import nemo_relayin an Android x86_64 emulator in CI.Acceptance criteria
References