Skip to content

[Enhancement]: Evaluate NeMo Relay support for Termux/Bionic Python #639

Description

@afourniernv

Affected area

  • Python binding
  • Build, packaging, or CI
  • Documentation or examples

Problem or opportunity

Termux Python environments can identify as Linux/AArch64 while linking against Android's Bionic libc. These environments do not select manylinux or musllinux wheels and may not emit the PEP 738 Android tags targeted by #637 and #638.

Hermes Agent currently exempts Android from its core NeMo Relay dependency in NousResearch/hermes-agent#76643. That keeps installation working, but Relay functionality is unavailable on Termux.

This issue is intentionally separate from #637 and #638, which target official Android CPython 3.13+ distributions using PEP 738 wheel tags.

Proposed enhancement

Investigate whether Termux-native NeMo Relay support is technically and operationally viable before committing to first-class support:

  • Record the Python versions and compatibility tags used by current Termux/AArch64 environments.
  • Test a clean source build, installation, import, and basic scope lifecycle on Termux.
  • Evaluate viable distribution channels, such as a Termux package, source-first installation, a custom package index, or release assets.
  • Define the required CI or device coverage, release process, and maintenance ownership.
  • If support is viable, implement a separate Termux/Bionic packaging path without labeling artifacts as manylinux, musllinux, or generic Linux wheels.

Runtime contract and binding impact

The investigation does not propose runtime semantic changes. It affects Python packaging only; Rust, Node.js, Go, and raw FFI behavior are unchanged.

If Termux support is added, the public Python runtime contract should match other supported platforms. Downstream consumers should continue to exclude Android from mandatory Relay installation until a validated Termux artifact or installation path exists.

Alternatives considered

  • PEP 738 Android wheels do not solve environments whose Python installation reports Linux compatibility tags.
  • manylinux and musllinux wheels are not compatible with Bionic.
  • Source builds may be a reasonable best-effort fallback, but they require a validated Termux toolchain and dependency path.
  • Keeping the Hermes Android dependency exemption is the current production-safe behavior.
  • Declaring Termux unsupported remains a valid outcome if the distribution and maintenance burden is disproportionate to demand.

Acceptance criteria

  • Capture a reproducible compatibility report for a current Termux Python/AArch64 environment, including sysconfig.get_platform() and packaging.tags.sys_tags().
  • Record source build, installation, import, and basic runtime smoke-test results.
  • Document viable distribution options and their PyPI, release, and maintenance constraints.
  • Make an explicit support decision: first-class, source-first/best-effort, or unsupported.
  • If first-class support is selected, add an owned release path and CI or device-level import smoke coverage.
  • Keep the Hermes Android dependency exemption until the selected support path is validated.
  • Cross-reference Support Android/Bionic Python packaging and document Termux compatibility #637, ci: package Android Python wheels #638, and NousResearch/hermes-agent#76643.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions