Repository navigation
Releases
π v2.0.0 β DNS Fixed + Patched musl Loader
π Termux Claude Code Installer v2.0.0
π₯ Run Claude Code natively on Termux β 100% WORKING, 0% PROOT, DNS FIXED, one command and you're in! π
π Major update β DNS now works!
This release fixes the #1 issue from v1.0.0: DNS resolution failures inside Claude Code.
If you had EAI_AGAIN, getaddrinfo failed, or network errors on v1.0.0, v2.0.0 fixes it.
β‘ Install in 10 seconds
curl -fsSL https://raw.githubusercontent.com/Ryovx/Termux-Claude-Code/main/install.sh | bashThen run:
claudeThat's it. π―
Upgrading from v1.0.0? Just re-run the command above. The installer detects and replaces the old Alpine musl runtime automatically.
π What was broken in v1.0.0
Claude Code needs network access. The stock Alpine musl loader reads /etc/resolv.conf, which is not readable inside Termux. Android routes DNS through the netd system service, so musl-based lookups were failing with:
EAI_AGAIN
getaddrinfo failed
Result: claude would launch, but every API call to Anthropic would fail with a network error.
β¨ What's new in v2.0.0
π DNS fixed β patched musl loader
We now ship a patched musl loader built from Ryovx/Musl-on-Termux that adds:
| Addition | Behavior |
|---|---|
MUSL_ON_TERMUX=1 env var |
Read DNS configuration from $PREFIX/etc/resolv.conf |
| Deterministic fallback | If no nameserver found β 1.1.1.1 β 8.8.8.8 β 127.0.0.1 |
The launcher sets MUSL_ON_TERMUX=1 unconditionally, so DNS works with zero user configuration.
π SHA256-verified runtime
The musl runtime is now downloaded from a signed release archive and verified against a pinned SHA256 before extraction. Installation aborts on any mismatch.
MUSL_ZIP_SHA256 = e4f456187a54f6fbbcda31026354728262b5acfce11642eaca2df88722c9870b
π Automatic resolv.conf setup
The installer creates $PREFIX/etc/resolv.conf with sane defaults if it doesn't exist:
nameserver 1.1.1.1
nameserver 8.8.8.8
If you already have a resolv.conf, it is preserved β never overwritten.
π‘οΈ Safer installer
- Atomic swap β the old package is only removed after the new one is validated (size + executability)
--forcewipes musl runtime β clean re-download when neededclaude-uninstallsafety guard β refuses to run outside a Termux$PREFIXreadelfinstead offileβ more reliable ELF inspection across Termux versions- Minimum free space raised to 800 MB (peak during atomic swap)
π¦ What gets installed
| Path | Purpose |
|---|---|
$PREFIX/bin/claude |
Launcher (6 lines of bash) |
$PREFIX/bin/claude-fix |
Restores launcher from template |
$PREFIX/bin/claude-update |
Updates to latest npm release |
$PREFIX/bin/claude-uninstall |
Removes everything |
$PREFIX/lib/claude-musl/ |
Patched musl loader + libc + headers |
$PREFIX/lib/node_modules/@anthropic-ai/claude-code-linux-arm64-musl/claude |
The official 280 MB binary |
$PREFIX/etc/resolv.conf |
DNS servers (created if missing) |
Nothing is written outside $PREFIX.
π₯ Breaking changes
If you're upgrading from v1.0.0:
β οΈ The Alpine musl runtime is removed. The installer downloads the patched musl fromRyovx/Musl-on-Termuxinstead.β οΈ MUSL_ON_TERMUX=1is now mandatory. The launcher sets it automatically β no action needed from you.β οΈ Minimum free space raised from 700 MB β 800 MB.β οΈ Minimum installer version is now 2.0.0. Older v1.0.0 launchers will not be upgraded by the new installer'sclaude-fixβ re-runinstall.shinstead.
Migration:
curl -fsSL https://raw.githubusercontent.com/Ryovx/Termux-Claude-Code/main/install.sh | bashThat's it. The installer handles everything.
π Requirements
| Requirement | Details |
|---|---|
| Termux | From F-Droid or GitHub Releases β NOT Play Store |
| Architecture | aarch64 (ARM64) only |
| Free space | ~800 MB |
| Internet | Required during install and update |
| Root | β Not required |
π Documentation
Full documentation in three languages:
| Language | README | Contributing | Security | Support | Code of Conduct |
|---|---|---|---|---|---|
| π¬π§ English | README.md | CONTRIBUTING.md | SECURITY.md | SUPPORT.md | CODE_OF_CONDUCT.md |
| πΈπ¦ Ψ§ΩΨΉΨ±Ψ¨ΩΨ© | README.ar.md | CONTRIBUTING.ar.md | SECURITY.ar.md | SUPPORT.ar.md | CODE_OF_CONDUCT.ar.md |
| π¨π³ δΈζ | README.zh.md | CONTRIBUTING.zh.md | SECURITY.zh.md | SUPPORT.zh.md | CODE_OF_CONDUCT.zh.md |
π Known limitations
- β x86_64 and armv7 not supported (only
aarch64) - β Play Store Termux not supported (use F-Droid or GitHub Releases)
β οΈ OAuth login may be unreliable on some Termux setups β use API key instead:
export ANTHROPIC_API_KEY=sk-ant-...
claudeπ License
Licensed under the GNU General Public License v3.0 or later (SPDX: GPL-3.0-or-later). See LICENSE for full text.
π€ Open Invention Network (OIN)
Ryovx is a proud member of the Open Invention Network (OIN). In line with OIN's mission and our commitment to the Termux community, most of Ryovx's service products are released under GNU GPLv3.
The patched musl runtime bundled by this installer is distributed under the MIT License by Ryovx/Musl-on-Termux. The musl sources it is based on are released under the MIT License by the musl project.
π Ethical Request β Not a Legal Restriction
Just as we provide this tool completely free of charge, we kindly ask that you do the same: please keep it free.
This is a friendly request, not a legal prohibition. Under GPLv3, you retain the full right to redistribute this software, including commercially. We simply hope you'll choose to honor the spirit in which it was shared.
π Full Changelog
Full Changelog: v1.0.0...v2.0.0
See CHANGELOG.md for the complete changelog.
π v1.0.0 β Native Claude Code on Termux
π Termux Claude Code Installer v1.0.0
π₯ Run Claude Code natively on Termux β 100% WORKING, 0% PROOT, one command and you're in! π
π First stable release!
This is the initial public release of the Termux Claude Code Installer β a permanent, system-level installer that makes claude work natively on Android's Termux without proot, chroot, or patchelf.
β‘ Install in 10 seconds
curl -fsSL https://raw.githubusercontent.com/Ryovx/Termux-Claude-Code/main/install.sh | bashThen run:
claudeThat's it. π―
β¨ What's included
π Core
- Native execution β Runs the official
linux-arm64-muslbinary published by Anthropic - No
proot, nochrootβ No containers, no VMs, no emulation - No
patchelfβ Deliberately avoids the SIGSEGV that happens when you patch musl binaries on Android kernels - One-command install β Copy, paste, done
- Zero rc-file changes β Never touches
~/.bashrcor~/.zshrc
π§ Tools
| Command | Description |
|---|---|
claude |
Run Claude Code (interactive session) |
claude-update |
Smart updater β skips download if already latest |
claude-fix |
Self-healing launcher restoration |
claude-uninstall |
Clean removal of every artifact |
π¦ What gets installed
| Path | Purpose |
|---|---|
$PREFIX/bin/claude |
Launcher (6 lines of bash) |
$PREFIX/bin/claude-fix |
Restores launcher from template |
$PREFIX/bin/claude-update |
Updates to latest npm release |
$PREFIX/bin/claude-uninstall |
Removes everything |
$PREFIX/lib/claude-musl/ |
Alpine's musl loader + libraries |
$PREFIX/lib/node_modules/@anthropic-ai/claude-code-linux-arm64-musl/claude |
The official 280 MB binary |
Nothing is written outside $PREFIX.
π Requirements
| Requirement | Details |
|---|---|
| Termux | From F-Droid or GitHub Releases β NOT Play Store |
| Architecture | aarch64 (ARM64) only |
| Free space | ~700 MB |
| Internet | Required during install and update |
| Root | β Not required |
π Documentation
Full documentation in three languages:
| Language | README | Contributing | Security | Support | Code of Conduct |
|---|---|---|---|---|---|
| π¬π§ English | README.md | CONTRIBUTING.md | SECURITY.md | SUPPORT.md | CODE_OF_CONDUCT.md |
| πΈπ¦ Ψ§ΩΨΉΨ±Ψ¨ΩΨ© | README.ar.md | CONTRIBUTING.ar.md | SECURITY.ar.md | SUPPORT.ar.md | CODE_OF_CONDUCT.ar.md |
| π¨π³ δΈζ | README.zh.md | CONTRIBUTING.zh.md | SECURITY.zh.md | SUPPORT.zh.md | CODE_OF_CONDUCT.zh.md |
π§ How it works (short version)
Claude Code ships a linux-arm64-musl ELF binary. Termux runs on Android's Bionic libc, not musl. Direct execution fails with cannot execute: required file not found because the binary requests /lib/ld-musl-aarch64.so.1.
What doesn't work:
- β
patchelfβ SIGSEGV on Android kernels - β
proot/chrootβ slow, breaksclaude's bash tool - β npm wrapper
claude-code-termuxβ broken with Claude Code β₯ 2.1.x
What does work (this project):
- Download Alpine's musl loader +
.sofiles into$PREFIX/lib/claude-musl/ - Download the official
linux-arm64-muslbinary from npm - Create a 6-line launcher that unsets
LD_PRELOAD, invokes the musl loader with--library-path, and execs the real binary
No patchelf, no proot, no chroot, no magic.
π Known limitations
- β x86_64 and armv7 not supported (only
aarch64) - β Play Store Termux not supported (use F-Droid or GitHub Releases)
β οΈ OAuth login may be unreliable on some Termux setups β use API key instead:
export ANTHROPIC_API_KEY=sk-ant-...
claudeπ License
Licensed under the GNU General Public License v3.0 or later (SPDX: GPL-3.0-or-later). See LICENSE for full text.
π€ Open Innovation Network (OIN)
Ryovx is a proud member of the Open Innovation Network (OIN). In line with OIN's mission and our commitment to the Termux community, most of Ryovx's service products are released under GNU GPLv3.
π Ethical Request β Not a Legal Restriction
Just as we provide this tool completely free of charge, we kindly ask that you do the same: please keep it free.
This is a friendly request, not a legal prohibition. Under GPLv3, you retain the full right to redistribute this software, including commercially. We simply hope you'll choose to honor the spirit in which it was shared.
π Full Changelog
Initial release β no previous version to compare against.
See CHANGELOG.md for the complete changelog.