Skip to content

Projects and integration boundaries

The nl2sh organization maintains distinct components. Clone and build each from its own root; the main repository does not build the Android companion projects from adjacent directories or submodules.

Project Role Runtime and permissions Guide
nl2sh Agent, TUI/Web/CLI, Tool Runtime Single Rust device binary; privileges follow caller/root policy Start
Built-in src/protocol/ A2A 1.0, HTTP/stdio MCP One device Rust executable; direct tools need no model, runtime ADB or Python MCP/A2A
android-bridge Accessibility, Unicode input and gestures Optional installed API 26+ APK; provider/broadcasts require shell/root; services enabled manually Integration
jadx-helper One-class APK decompilation API 26+ DEX JAR through app_process; not installed as an APK APK/JADX
nl2sh-helper Android ADB installer and browser launcher API 26+ controller, TCP or target Android 11+ wireless pairing; deploys ARM64/ARMv7/x86_64 releases Installation (repository access required)

The ADB installer is separate from the Accessibility companion. It authenticates signed releases, deploys /data/local/tmp/nl2sh, manages the native service, and uses its actual Web port. It also offers explicit Bridge inspection and installation, and opens system settings for manual service enablement. It does not supply model credentials or serve A2A/MCP. See installation for usage.

Companion/helper release cycles are independent. The native release aggregates the selected artifacts in an authenticated compatibility manifest. Bridge tagged releases require APK signing; local unsigned builds remain available for development. JADX prefers an explicit source, then the signed embedded policy. Source builds without an embedded policy fall back to a compile-time pinned release URL and SHA-256; an invalid embedded policy never falls back. Preserve package names, provider authority and DEX entrypoint when coordinating interfaces.

Protocol tool and Agent mutations default to device-terminal approval. Explicit protocol_auto_approve permits all risk levels while retaining risk and capability checks. Full UI automation requires shell/root. Web and protocol services have separate ports and access policies.

Report bugs in the component repository with version, Android API/ABI, caller UID, backend/transport and redacted evidence. Shared organization contribution guidance is maintained in .github. The organization's TUR fork serves packaging/upstream contribution work, not Agent runtime development.