Skip to content

[Android/Termux] Gemini CLI build fails on Node v24 + arm64 #11254

Description

@Codeleafly

What happened?

Hello Gemini CLI team,

I am attempting to build and install Gemini CLI version 0.11.0-nightly on Termux (Android, arm64) using Node.js v24.9.0. The build fails due to native dependencies and platform-specific checks.

Issues observed:

  1. keytar fails to build: The package libsecret-1 is not found in the pkg-config search path, causing the build to fail.

  2. node-pty fails to build: The binding.gyp file references an undefined variable android_ndk_path, which prevents compilation.

  3. @vscode/vsce-sign is not supported on Android: The post-install script explicitly checks for supported platforms and fails on Android/arm64.

What did you expect to happen?

Expected behavior:
The CLI should build and install successfully, or at least fallback gracefully if some native modules are not supported. The CLI should not crash completely on unsupported platforms. A degraded mode where core functionality works, even if some native features are missing, would allow Android/Termux users to still use Gemini CLI.

Client information

Clone the repository, navigate to the directory, and run the standard installation commands:

Clone the repo from GitHub.

Run npm install.

Run npm run build.

Environment:

OS: Termux on Android 6.0.1 to 16

Architecture: arm64

Node.js version: v24.9.0 ( the latest stable version )

npm version: 10.x

Login information

No response

Anything else we need to know?

Older versions of Gemini CLI were buildable on Termux/Android, but recent versions fail completely. The failure appears to be related to platform-specific native modules (keytar, node-pty, @vscode/vsce-sign) and dependencies like NDK and libsecret, which are missing or unsupported on Android.
Additional feedback:
The current problem is that some native modules (like keytar, node-pty, @vscode/vsce-sign) fail to build on Android/Termux because of missing dependencies or platform-specific checks. Right now, when one of these modules fails, the entire build process stops, which prevents the Gemini CLI from running at all.

What should happen instead:

  1. Negative binding should not block the whole build:
    If a native module cannot be built (e.g., due to missing libsecret or NDK issues), the build should skip or disable only that module, instead of failing completely.

  2. Maintain functional CLI:
    Even if one module is missing or some features are unavailable, the CLI itself should remain fully usable. Core functionality like AI agent commands, file operations, or multimodal interactions should still work.

  3. Warn, but don’t crash:
    The system can log a warning about the missing module or unsupported feature, but it should not crash at runtime. The user should still be able to run the CLI and use all supported features.

  4. Degraded mode for unsupported modules:
    Missing modules can be marked as unavailable for now, but the CLI should run in a degraded mode, meaning the missing feature is just disabled, not the entire CLI.

Key benefit: This approach ensures that user experience is preserved. Users can still use the CLI even on platforms where certain native modules are unsupported, without encountering runtime crashes.

Metadata

Metadata

Assignees

Labels

Stalearea/platformIssues related to Build infra, Release mgmt, Testing, Eval infra, Capacity, Quota mgmtpriority/p2Important but can be addressed in a future release.status/need-triageIssues that need to be triaged by the triage automation.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions