Open-source project
termux/termux-app avatar
termux/termux-app

Termux: sources you cannot mix, and the process killer on Android 12

Termux - a terminal emulator application for Android OS extendible by variety of packages.

61,719 stars7,710 forksJavaNOASSERTION

At a glance

What is it?
Termux is an Android terminal emulator whose app repository and package repository are deliberately split, whose APKs from different sources refuse to coexist, and whose background processes Android 12 is documented to kill. An install is one universal APK of about 180MB plus a bootstrap, from a source you then have to stay on.
Who is it for?
Install Termux if you want a real shell environment on a phone and can commit to one distribution source for the app and every plugin, because the sharedUserId com.termux rule makes a mixed source a reinstall rather than a fix. Do not pick it for background or long-running jobs on Android 12 or later, where the documented phantom process killing applies, and upgrade at your own risk from Android 11 if you are not rooted.
Can I use it commercially?
Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
Is it still maintained?
Yes. The repository last received commits 4 days ago.
What is it written in?
Mainly Java, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 30, 2026, and from our analysis. They are not legal advice.

Editorial analysis

Android 12 kills phantom processes and hands you signal 9

The README opens its caveats with a stability notice rather than a feature list: Termux may be unstable on Android 12 and later, because the Android OS kills any phantom process beyond a limit of 32, where the limit applies to all apps combined, and also kills any process using excessive CPU. The symptom is concrete. You get `[Process completed (signal 9) - press Enter]` in the terminal without having exited the shell yourself. The README points at issue 2366, the Android issue tracker, a document on phantom cached and empty processes, and a TLDR comment explaining how to disable trimming of phantom and high CPU processes. The catch is that the fix depends on your OS version: the option to disable the killing is expected in Android 12L or 13, so upgrading carries its own risk if you sit on Android 11 and are not rooted. A proper documentation page is promised for later, which means today the answer lives in a comment thread.

The app is here, the packages are in another repository

This repository is scoped to the app itself: the user interface and the terminal emulation. Everything installable inside the shell comes from termux/termux-packages, which is where the bootstrap is built and released, as zips in that repository's releases rather than in this one. The split has a practical consequence for anyone who hits an error. When apt or pkg complains that a repository is under maintenance or down, the fix is not in the README here, it is in the package management wiki that belongs to the other project. So there are two upstream trees to watch, two sets of release notes, and no single place that explains a failure spanning both. For a user this only matters when something breaks, and then it matters a lot: the shell can be fine while the package feed underneath it is not.

Every source signs with a different key, so sources cannot be mixed

The Termux app and all of its plugins share the sharedUserId com.termux, and Android Package Manager enforces that every one of those APKs carries the same signature key. The consequence is that the app and its plugins must all come from one source. Mixing them produces failures such as `App not installed`, `Failed to install due to an unknown error`, `INSTALL_FAILED_UPDATE_INCOMPATIBLE`, `INSTALL_FAILED_SHARED_USER_INCOMPATIBLE` and `signatures do not match previously installed version`. Root access or a custom rom lifts the restriction, which is worth knowing but not a recommendation. The supported path is blunt: uninstall every existing Termux and plugin APK, then install all new APKs from the new source. That means your shell, its config and its installed packages go with it, which is why the README points at a backing up Termux guide before the uninstall. Switching sources is a migration, not an update.

F-Droid lags by days, and only one universal APK exists

Two F-Droid facts decide how fresh your Termux is. First, updates appear on F-Droid a few days, sometimes a week or more, after a GitHub release, because F-Droid builds once it detects a new GitHub release; the maintainers state they have no control over that build and no access to the F-Droid APK signing keys, so they cannot publish a GitHub APK that stays compatible with F-Droid builds. That is the same signature rule as the previous section, seen from the other side. Second, only a universal APK is released, it works on every supported architecture, and the APK plus bootstrap installation size is about 180MB. Architecture specific APKs are not supported on F-Droid, so there is no smaller download for a single device. You can skip the F-Droid app entirely and use the `Download APK` link on the package page, but the app itself often does not notify you of updates, and you have to pull down in its Updates tab with battery optimizations disabled.

v0.118.3 is the current version while the betas are numbered ahead

The installation section names v0.118.3 as the latest version, and the release feed agrees it exists. It also lists v0.119.0-beta.3 and v0.119.0-beta.2, both tagged on 2025-05-22 and 2025-03-29, so the newest tag in the list is a beta whose number sits ahead of the stable line. If you install by newest tag you have chosen a pre-release; if you install by the documented latest version you have chosen stability. Pick deliberately rather than by sort order. The same paragraph carries the security floor: updating to v0.118.0 or higher is described as highly recommended, for bug fixes including a critical world-readable vulnerability reported in a public disclosure. That is the one upgrade instruction in the README with a security reason attached, and it is the version number to check first on any device.

The Gradle tree splits the app into four modules and a JitPack coordinate

The build layout explains what this project is made of: app/, terminal-emulator/, terminal-view/ and termux-shared/ are the four Gradle modules, sitting alongside build.gradle, settings.gradle, gradle.properties, gradlew and gradlew.bat for the wrapper. There is also jitpack.yml at the root, which matches the JitPack badge pointing at jitpack.io/#termux/termux-app, so a dependency on this app can be resolved as a build artifact rather than only installed as an APK. Alongside the build sit art/ for assets, fastlane/ for release automation, site/ and docs/, plus SECURITY.md and .editorconfig. One detail deserves attention from anyone assessing the project: the repository metadata reports the licence as NOASSERTION, and the root LICENSE.md is the only statement of terms in the tree. Read that file before you redistribute anything built from this source.

Six plugin apps, each one subject to the same signature rule

The core app ships with optional plugin apps, and each is a separate project with its own repository: Termux:API, Termux:Boot, Termux:Float, Termux:Styling, Termux:Tasker and Termux:Widget. They are separate installs, not toggles inside the main app, and every one of them carries the sharedUserId com.termux, so each has to come from the same source as the app itself. That is where `INSTALL_FAILED_SHARED_USER_INCOMPATIBLE` usually comes from in practice, one plugin grabbed from a different channel than the rest. The functional reason to know the list is that API is what exposes device capabilities to shell scripts, Boot is what starts things after reboot, and the rest are interface pieces. Installing none of them costs nothing, but installing the wrong one from the wrong source costs a full uninstall cycle.

Editorial conclusion

Install Termux if you want a real shell environment on a phone and can commit to one distribution source for the app and every plugin, because the sharedUserId com.termux rule makes a mixed source a reinstall rather than a fix. Do not pick it for background or long-running jobs on Android 12 or later, where the documented phantom process killing applies, and upgrade at your own risk from Android 11 if you are not rooted. Check three things before you install: that your device is on Android 7 or higher, since full app and package support is limited to that range, that you are on v0.118.0 or higher, which the README calls out for a critical world-readable vulnerability, and that you have a backup path, because switching sources means uninstalling every Termux and plugin APK first. Then read the F-Droid section, which is where the update lag is explained.

Frequently asked questions

What is the Termux app used for?

It is an Android terminal application and Linux environment whose shell is extended by packages. The repository here holds the user interface and terminal emulation, while the installable packages come from the separate termux/termux-packages project.

How do I install the Termux app?

The sources listed are F-Droid, GitHub and others, and full support for both the app and packages is for Android 7 and above. Whichever you pick, every plugin must come from that same source, and F-Droid offers a direct `Download APK` link so you do not need the F-Droid app itself.

Why does Termux fail with App not installed?

The app and its plugins share the sharedUserId com.termux and must be signed with the same key, so APKs from F-Droid and GitHub cannot be mixed. You get errors like `INSTALL_FAILED_UPDATE_INCOMPATIBLE` or `signatures do not match previously installed version`, and the fix is to uninstall all of them and reinstall from one source.

Is it safe to install Termux on Android?

The README recommends updating to v0.118.0 or higher because of a critical world-readable vulnerability reported in a public disclosure. It also warns that Termux may be unstable on Android 12 and later, where the OS kills phantom processes and high CPU processes.

What is the difference between the Termux app and Termux:API?

Termux:API is one of six optional plugin apps, alongside Boot, Float, Styling, Tasker and Widget. It is a separate install, and like the app it must be signed from the same source as the main APK.

Is Termux still working?

The last push to master landed on 2026-09-26, and the latest documented version is v0.118.3 with v0.119.0 betas also tagged in 2025. The practical caveat is update timing: F-Droid builds a few days to a week or more after a GitHub release, and its signing keys are outside the maintainers' control.

Official sources

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/termux-termux-app.svg)](https://hysenlabs.com/projects/termux-termux-app)