Short answer. If you want a UserLAnd alternative because UserLAnd stalls on setup or dies when you switch apps, the honest options split by where the Linux runs. Stay on-device with Termux plus proot-distro if your code must never leave the phone. Move the Linux off the phone with Cosyra, a persistent Ubuntu 24.04 container we run on Azure, if the phone was never the point. UserLAnd itself is free, Android-only, and stranger than its reputation: the app froze in 2021, and its Linux images shipped a new release seven weeks ago.
We went into this expecting to write that UserLAnd is abandoned. The release feeds said otherwise, so this page says otherwise.
This post was written by the Cosyra team. We compared Cosyra against
UserLAnd based on hands-on use of our own product and first-hand
inspection of UserLAnd on 2026-07-23: the GitHub REST API for the app and
all five asset repositories, the Kotlin and XML sources read at commit
0867f15, live HTTP probes against the release CDN, and the
Google Play listing for tech.ula. We did not install UserLAnd
on a handset for this page, so nothing below describes its on-device feel,
and we flag every claim we could not verify rather than implying a test we
did not run.
tl;dr
Use UserLAnd if you want Linux on an Android phone for nothing, with no account, working offline, with nothing leaving the device, and you can absorb a 361 MiB first download and an unmaintained app around it. Use Cosyra if you want an x86_64 machine that is already awake when you open your phone, with four AI coding agents installed and a session that survives Android deciding to kill things. UserLAnd puts Linux inside your phone. We put it somewhere your phone can reach.
App Store · Google Play. Sign up, 1 hour free, no credit card. Extend with a 10-hour, 7-day trial when you want more.
No 361 MiB download, no PRoot. Our container is a real x86_64 Ubuntu 24.04 environment on Azure AKS with Claude Code, Codex CLI, OpenCode, and Gemini CLI already on the PATH, reached from a native iOS or Android app.
App Store · Google Play · Pricing. Sign up, 1 hour free, no credit card.
How do Cosyra and UserLAnd compare feature by feature?
These two are not really competitors, which is the most useful thing to establish before a table. UserLAnd is an Android app that turns your phone into the Linux box. We rent you a Linux box and hand your phone a terminal onto it. Everything below follows from that. Every UserLAnd value was verified 2026-07-23 against the repository, the release API, or the Play listing.
| Feature | Cosyra | UserLAnd |
|---|---|---|
| Pricing | $29.99 / month Pro, or $300 / year | Free download, GPL-3.0 source |
| Free tier | 1 hour on signup + 10-hour, 7-day trial, no credit card | Entirely free to use; Play listing declares in-app purchases at $0.99–$19.99 per item, purpose undocumented |
| OS support | iOS, Android, web | Android only. No iOS build, no web client |
| CPU architecture | x86_64, on a real kernel | Your phone's ARM, under PRoot syscall interception |
| AI agents pre-installed | Claude Code, Codex CLI, OpenCode, Gemini CLI | None. Untested by us; see the FAQ before you count on any |
| Persistent storage | 30 GB in the cloud, survives a lost or reset phone | Your phone's storage; dies with the app or the handset |
| Offline capability | No. The container is in the cloud, so no network means no terminal | Yes, once the filesystem is unpacked. This is its best feature |
| Container / sandboxing | Per-user Ubuntu container on Azure AKS | PRoot chroot emulation inside the app sandbox. No root, no kernel isolation |
| Port forwarding / remote reach | Built-in HTTPS from native apps, no tunnel to configure |
Local only. SSH and VNC to localhost on the same handset
|
| File sync across devices | Same container from iPhone, Android, and web | None. Files live on that one phone |
| Max session length | Hibernates on idle, resumes right where you left it | Until Android reclaims the process. Issue #490 has tracked this since 2019 |
| API key model | BYOK. You pay Anthropic, OpenAI, or Google directly | Not applicable. It ships no agents |
| Open-source status | Client app closed, orchestration proprietary | GPL-3.0 (CypherpunkArmory/UserLAnd), 4,243 stars, 560 forks |
| App code last released | Continuously | v2.8.3 on 2021-10-08; 990 open issues, 18 open PRs |
Want the other side of that table? A persistent Ubuntu 24.04 x86_64 container, provisioned on first launch in about 15 seconds in our testing, with four agent CLIs already installed and 30 GB that outlives your handset.
App Store · Google Play · Pricing. Sign up, 1 hour free, no credit card. Extend with a 10-hour, 7-day trial when you want more.
We read the UserLAnd source to find out why it hangs at "0 of 2"
Search for a UserLAnd alternative and the first thing you find is not a
review, it is people asking why the install never finishes. Issue #982, "Bug
report - Stuck at downloading assets, 0 of 2", was filed on 2019-08-02, has
13 comments, and is still open in 2026. Using GitHub's issue search on
2026-07-23, 29 open issues match stuck and 15 match
downloading assets. Google's top results for those queries are
the issue threads themselves, because nobody has published the answer.
Here it is. We measured four things against the current Debian release:
-
A Debian install enqueues exactly two files:
arm64-assets.tar.gzat 1,022,658 bytes andarm64-rootfs.tar.gzat 378,321,418 bytes, which is 361 MiB in one unchunked object. -
A
HEADon that root filesystem returns200withaccept-ranges: bytes. -
A
Range: bytes=0-99request returns206and exactly 100 bytes. The server will resume a partial download. -
The progress string is
<string name="progress_downloading_out_of">%1$d out of %2$d complete</string>, andAssetDownloader.ktsupplies the first number fromcompletedDownloadIds.size.
That last line is the whole answer to the first question. The counter increments when a file finishes, not as bytes arrive. On a phone pulling 361 MiB over hotel wifi, the screen reads "0 out of 2 complete" for twenty minutes while everything is working perfectly, which is indistinguishable from a hang. Six years of bug reports are a progress bar measuring the wrong quantity.
The second question, why retries feel worse than the first attempt:
fun downloadRequirements(downloadRequirements: List<DownloadMetadata>) {
clearPreviousDownloadsFromDownloadsDirectory()
...
}
fun handleDownloadComplete(downloadId: Long): AssetDownloadState {
if (downloadManagerWrapper.downloadHasFailed(downloadId)) {
val reason = downloadManagerWrapper.getDownloadFailureReason(downloadId)
downloadManagerWrapper.cancelAllDownloads(enqueuedDownloadIds)
...
Any single failed download cancels the entire set, and the next attempt
deletes whatever partial data survived before enqueueing again. Drop the
connection at 340 MB and you start at zero, on a CDN that answered our range
request with a 206. This is not incompetence, it is 2021 code that nobody
has been able to merge a fix into: master has taken no functional
commit since 2021-10-08 and 18 pull requests sit open.
0867f15. This is a data figure, not a device screenshot; we
did not install the app on a handset.
The app is frozen. The Linux images are not. Both facts matter.
Every aggregator page about UserLAnd says some version of "not updated since 2021." That is true of the app and false of the product, and the difference is the reason we are not calling this project dead.
UserLAnd's README points at separate repositories for the filesystems it downloads: a shared support bundle plus one per distribution. We pulled the release feed for each on 2026-07-23. The shared support bundle released v1.5.1 on 2026-06-01. Debian released v7.8.15 on 2026-05-29, its third release that month. Ubuntu released v0.0.21 on 2026-05-15, Arch v0.0.6 on 2026-05-22, and Kali v0.0.10 on 2026-04-30. Somebody is still building and signing these images.
Which makes the Play listing's claim that UserLAnd "is being actively maintained by the folks behind GNURoot Debian" more defensible than the repository alone suggests, and the listing's 2026-05-23 refresh less of a pure compliance artifact than we assumed. We think the fair summary is: the filesystem pipeline is alive and the Android client is not, and you inherit every bug in the client. A 2026 Debian image downloaded by a 2021 downloader still hangs at 0 of 2.
We are also correcting ourselves here. Our own earlier research notes said the bundled images had aged five years. They had not. We checked, and the correction is worth more than the tidier story.
Where does UserLAnd beat Cosyra?
Four places, and the first two are not close.
1. It is free, forever, with no account. No signup, no subscription, no key. We charge $29.99/month after the free tier. If your budget for this is zero, that is the end of the comparison and we are not going to argue you out of it.
2. It works with no network at all. Once the filesystem is unpacked, UserLAnd runs on a plane, in a tunnel, on a mountain. We cannot do that and never will: our container lives in Azure, so no signal means no terminal. This is the honest structural gap in what we sell, and the underground stretch of a commute is exactly where it bites.
3. Nothing leaves the device. Your code, your keys, and your history stay inside the app sandbox on hardware in your pocket. For client work under a contract that forbids third-party infrastructure, that is not a preference, it is the requirement, and it rules us out on page one.
4. The wizard is genuinely kinder than a package manager.
Pick Debian from a list and tap go. Compare that to
pkg install proot-distro && proot-distro install ubuntu
for somebody who has never used a terminal. UserLAnd earned its 1M+ installs and
4.6 rating across 20.8K reviews on that one design decision, and it is still the
friendliest on-ramp to Linux on Android.
Where does Cosyra beat UserLAnd?
Android does not get a vote on whether your session lives. Since Android 12, the phantom process killer reaps process trees an app spawns outside its own lifecycle, which is what issue #490 has described since 2019 and what produces signal 9 kills in Termux. Our container runs on Azure AKS, so your phone's memory manager is not part of the story. Lock the screen, take a call, come back.
x86_64 on a real kernel instead of ARM under PRoot. PRoot intercepts
syscalls with ptrace, which costs real time on syscall-heavy
work like package installs and git on a large tree. It also means
anything shipping x86_64-only binaries simply does not run. Our container is the
architecture the rest of your toolchain was built for.
Four AI coding agents already installed. Claude Code, Codex CLI, OpenCode, and Gemini CLI are on the PATH the first time you open the app. We ship them pre-installed because setup friction is the single thing that kills agent-driven mobile development, and the fourteen unanswered Node.js issues on UserLAnd's tracker are what that friction looks like when nobody is maintaining the client.
Storage that outlives the phone. 30 GB persists in the cloud. UserLAnd's filesystem lives in an app sandbox; uninstall the app, crack the screen, or factory reset, and it is gone.
The same machine from any device. Phone on the train, tablet on the couch, browser at a desk, one container. UserLAnd is one filesystem on one handset with no sync at all.
We will state one opinion plainly, because it is the one people push back on: the phone keyboard is fine for agent-driven coding. You are writing prompts and approving diffs, not hand-typing a refactor. Most of the people who tell us a phone cannot be a development machine are describing typing, and typing stopped being the bottleneck.
Who should pick UserLAnd instead of Cosyra?
Choose UserLAnd if you are on Android, you want to spend nothing, your code cannot leave the handset, or you need Linux to work with no signal.
Choose Cosyra if you want x86_64 rather than ARM emulation, you want agents installed rather than installable, you are on iOS at all, or you are tired of Android deciding when your session ends.
Try UserLAnd first if:
- You are learning Linux and have never opened a terminal. The wizard removes every decision that stops beginners, and free is the right price for finding out whether you like this.
- Your commute has no signal. Offline is our real gap. A subway line with dead track is a genuine reason to keep the Linux on the phone, and we would rather say so than sell around it.
- You want a scratch Kali or Arch box in your pocket. Short-lived, disposable, nothing that matters if the OS reaps it. Renting a cloud container for that is over-buying.
If you land on the on-device side of that split but UserLAnd's frozen client worries you, the maintained version of the same idea is Termux with proot-distro. We compared all three paths in running a Linux container on Android, and the head-to-head with the more active project is Cosyra vs Termux.
How do you choose between them?
One question settles it: when the Linux is running, does it need to be inside the phone in your hand? If the answer is yes, because of a contract, a dead-track commute, or a budget of zero, then the phone is the computer and UserLAnd is a reasonable free way to make it one. Accept the 361 MiB download, the progress bar that lies, and a client nobody has patched since 2021.
If the answer is no, then you have been solving the wrong problem. The reason UserLAnd is hard is that a phone is a hostile place to run Linux: ARM, no root, an OS that kills background processes, and storage that disappears with the handset. Put the Linux somewhere it is not fighting the operating system, and every one of those constraints goes away. That is what we sell, and it is why the comparison is architectural rather than a feature race. For the wider landscape, see our roundups of the mobile coding terminal and AI coding agents on mobile, or the Android device hub, coding on Android.
Linux that is already unpacked and already awake. No 361 MiB first download, no PRoot, no phantom process killer. A persistent Ubuntu 24.04 x86_64 container with four agent CLIs installed, reached from a native iOS or Android app.
App Store · Google Play · Pricing. Sign up, 1 hour free, no credit card. Extend with a 10-hour, 7-day trial when you want more.
Frequently asked questions
Is UserLAnd still maintained in 2026?
Half of it is, and the half that gets checked is the half that looks dead.
The Android app is frozen: v2.8.3 shipped 2021-10-08 and the newest commit
on master is a README edit from 2022-04-10, with 990 open issues
and 18 open pull requests as of 2026-07-23. The Linux images the app downloads
are a separate story. We pulled the release feeds for every asset repository
on 2026-07-23 and found Kali v0.0.10 on 2026-04-30, Ubuntu v0.0.21 on 2026-05-15,
Arch v0.0.6 on 2026-05-22, Debian v7.8.15 on 2026-05-29, and the shared support
bundle v1.5.1 on 2026-06-01. So the distro images are current and the app that
unpacks them is five years old.
[source: UserLAnd releases, last tag v2.8.3 dated 2021-10-08]
Why does UserLAnd get stuck at "downloading assets, 0 of 2"?
In most reports it is not stuck, it is just not telling you anything. A
Debian install enqueues two files: an 1,022,658-byte assets tarball and a
378,321,418-byte root filesystem. The Android string resource is
progress_downloading_out_of, whose value is
%1$d out of %2$d complete, and AssetDownloader.kt fills the first number from completedDownloadIds.size. That
counter only moves when an entire file finishes, so the display sits at 0
out of 2 for the whole 361 MiB transfer. The real failure comes next:
downloadRequirements() calls
clearPreviousDownloads before enqueueing,
and handleDownloadComplete() calls
cancelAllDownloads() when any single download fails, so a dropped
connection at 340 MB restarts from zero. GitHub's release CDN answers a Range
request with HTTP 206, so resume was available and unused.
[source: UserLAnd issue #982, "Stuck at downloading assets, 0 of 2", open since 2019-08-02]
Does UserLAnd cost money?
The download is free and the source is GPL-3.0. As of 2026-07-23, the
Google Play listing for tech.ula also carries an "In-app purchases"
badge with a price band of $0.99 to $19.99 per item, and the store description
never says what those purchases buy. There is a
BillingManager.kt in the repository wired to Google Play Billing
for both subscriptions and one-time products, so the plumbing is real. We did
not buy anything, so we cannot tell you what is behind it, and we are not going
to repeat the third-party claim that UserLAnd "moved to a freemium model" because
we could not verify it first-hand.
[source: UserLAnd on Google Play, in-app-purchase price band]
Does a UserLAnd session keep running when I switch to another app?
Not reliably, and it is the longest-running open complaint on the tracker. Issue #490, filed 2019-01-02 with 28 comments, describes background sessions dropping their networking as soon as you click away. Android 12 made this structural for every on-device Linux app by adding the phantom process killer, which reaps process trees an app spawns outside its own lifecycle. UserLAnd's documentation predates that change and offers no in-app workaround. The same root cause is what produces signal 9 kills in Termux, which we wrote up separately.
[source: UserLAnd issue #490, background session drops networking, 28 comments]
Can I run Node-based AI coding CLIs inside UserLAnd?
We have not tested Claude Code, Codex CLI, Gemini CLI, or OpenCode inside UserLAnd, so we are not going to tell you they work or that they do not. What we can tell you is the shape of the problem: it is a glibc ARM userland running under PRoot, so the constraints match Termux with proot-distro rather than a normal x86_64 Linux box. Fourteen issues on the tracker mention Node.js, including #1181 asking for help installing VS Code, Node.js, and npm, and #1672 reporting an npm cache error the reporter saw only on UserLAnd. Those are open and unanswered. If you need a specific agent CLI working today, the ARM-under-PRoot path is the one that will cost you an evening.
[source: UserLAnd issue #1181, "Help - Install VSCode, nodejs & npm"]
Is UserLAnd a fork of Termux?
No. They are unrelated codebases that arrived at the same technique. Both
end up running a Linux root filesystem under PRoot, which is userspace
syscall interception using ptrace rather than a kernel namespace
or a virtual machine. The difference is packaging: Termux gives you a package
manager and expects you to run proot-distro
yourself, and UserLAnd gives you a wizard that picks a distribution, downloads
it, and drops you into an SSH or VNC session. UserLAnd is the friendlier of
the two for a first-time Linux user, and that is still true in 2026.
[source: UserLAnd wiki, Getting Started, distributions and session types]
The Linux, somewhere your phone can just reach it. x86_64 Ubuntu 24.04 on Azure AKS, four agent CLIs already installed, 30 GB that survives the handset, and no progress bar counting the wrong thing.
Linux containers on Android · Cosyra vs Termux · Coding on Android · See pricing. Sign up, 1 hour free, no credit card. Extend with a 10-hour, 7-day trial when you want more.