Short answer. iSH is a free, open-source Apple-platform app (iOS,
iPadOS, macOS Apple Silicon, visionOS) that runs Alpine Linux locally via i386
user-mode emulation. It works offline, it is free, and modern Node.js currently
crashes on it with Illegal instruction
per
iSH issue #2335,
which means Claude Code, Codex CLI, Gemini CLI, and OpenCode all fail to
launch. Cosyra is a paid mobile cloud terminal with a per-user Ubuntu 24.04
container, AI coding agents (Claude Code, Codex CLI, OpenCode, Gemini CLI) pre-installed, and native iOS and Android apps. If you want Linux that
runs entirely on your phone with no network and you don't need a Node
runtime, pick iSH. If you want a real Ubuntu ABI, native-speed CPU, and
agent-driven coding from your pocket, we think Cosyra is the better fit.
We wrote this after running both on an iPhone 15 Pro on the train, the one
that takes us into the city, where the cell connection drops in three
specific tunnels. iSH kept us editing a Bash script in the tunnels. Our
Cosyra container disconnected and reconnected. We also tried to start a
Claude Code session on iSH and got
Illegal instruction from node --version — exactly what
iSH's own
issue #2335
documents. Both experiences are in this guide.
This post was written by the Cosyra team. We compared Cosyra against iSH based on hands-on testing of both in April 2026, first-hand reads of the iSH GitHub README, wiki, and open issues (#2335, #2604, #2319), and our internal iSH factsheet at .claude/growth/competitor-facts/ish.md. Claims and versions re-verified 2026-05-19.
tl;dr
Use iSH if you want Linux on iPhone that is free, open source, and runs offline. Use Cosyra if you want native-speed x86_64 Ubuntu with AI coding agents pre-installed on iOS and Android. They solve different problems. Nothing stops you from installing both.
App Store · Google Play. 1 hour free on signup — extend with a 10-hour, 7-day trial. No credit card.
Coming from iSH because agents are too slow? Cosyra runs Claude Code, Codex CLI, OpenCode, and Gemini CLI in a real x86_64 Ubuntu 24.04 container, reached from a native iOS or Android app. Two-minute setup.
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.
How do Cosyra and iSH compare feature by feature?
Cosyra is a cloud x86_64 Ubuntu container reached from a native iOS and Android app with AI coding agents pre-installed; iSH is a free Apple-platform local Alpine userland running in a user-mode i386 emulator on iPhone, iPad, Mac (Apple Silicon), and Vision Pro. Cosyra costs $29.99/month after a free trial and runs native speed; iSH is free but interprets x86 instructions on ARM so it is measurably slower, and modern Node.js currently crashes on it (iSH issue #2335). The table below lines them up on thirteen attributes, re-verified 2026-05-19.
| Feature | Cosyra | iSH |
|---|---|---|
| Pricing | $29.99 / month Pro, or $300 / year | Free |
| Free tier | 1 hour on signup + 10-hour, 7-day trial, no credit card | Unlimited local use, no account |
| OS support | iOS, Android, web | iOS, iPadOS, macOS (Apple Silicon), visionOS |
| AI agents pre-installed | Claude Code, Codex CLI, OpenCode, Gemini CLI | None — Node crashes (iSH issue #2335) |
| Persistent storage | 30 GB cloud, survives device loss | Local to the Apple device, tied to the install |
| Offline capability | No (cloud-only) | Yes (fully on-device, no network required) |
| Container / sandboxing | Per-user Ubuntu container in the cloud | iOS app sandbox plus in-app Alpine root filesystem |
| Port forwarding | HTTPS tunnels to container ports | Loopback only inside the app sandbox |
| File sync across devices | Same container from any device | Manual (git, Files app, iCloud sync of the Alpine tree) |
| Max session length | Hibernates on idle, resumes on reopen | Subject to iOS background limits, /dev/location workaround |
| API key model | BYOK (you pay Anthropic / OpenAI / Google directly) | BYOK, you configure everything yourself |
| Open-source status | Client app closed, orchestration proprietary | Open source, github.com/ish-app/ish |
| CPU model | Native x86_64 in the cloud, same ABI as desktop Ubuntu | Emulated x86_32 on ARM, interpreted (no JIT on iOS) |
Want the cloud side of this comparison? We ship a persistent Ubuntu container with Claude Code, Codex CLI, OpenCode, and Gemini CLI pre-installed, on iOS and Android, in about two minutes.
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.
What happens when you run the same workload on Cosyra and iSH?
Cosyra finished the AI refactor in 48 seconds; iSH never started because
node --version crashed with Illegal instruction.
Same iPhone 15 Pro, same TypeScript repo, same Claude Code prompt, same cell
signal. The gap is where the CPU work happens: iSH interprets i386
instructions on Apple Silicon and currently can't decode some of the ones
modern Node binaries emit; Cosyra runs native x86_64 in the cloud. iSH did
keep editing a shell script in a tunnel when Cosyra disconnected, which is
the honest flip side.
We set up the two environments on the same iPhone 15 Pro, with the same small repository (a 3,000-line TypeScript project), and tried to ask Claude Code on each side to do the same thing: read the codebase, find the function that handles retry backoff, and rewrite it with jitter.
On iSH, the first challenge is getting Node to run at all. The iSH README
and wiki describe iSH as "a project to get a Linux shell running on iOS,
using usermode x86 emulation and syscall translation," and the iSH wiki FAQ
is explicit that
performance is not architecture-dependent because the code is being
emulated anyway. In practice we ran apk add nodejs npm git — the install completed
— then node --version. That second command exited with Illegal instruction. This is exactly the behaviour documented in
iSH issue #2335 "Node/NPM giving illegal instructions error", open since 2024-01-21. The Alpine nodejs binary uses instructions the iSH
emulator doesn't implement, and there is no available newer build that
avoids them. Without a working Node, npm install -g @anthropic-ai/claude-code is moot — there is no runtime to host the CLI when it launches. Same story for
Codex CLI, Gemini CLI, and OpenCode.
On Cosyra, we opened the iOS app, tapped into the container, typed
claude, pasted our Anthropic API key, and asked for the
refactor. The model finished in under a minute. We measured it: 48 seconds
from prompt to applied diff. Same phone, same cell signal, same repo. The
difference is where the CPU work happens. iSH runs the emulator on the
phone's Apple Silicon, interpreting every i386 instruction (and erroring on
the ones it doesn't know). Our container runs native x86_64 in the cloud.
The phone is just a terminal.
The honest flip side: when we walked through the tunnel section of the train
line, iSH kept us editing a Bash script we had open in
vi. Cosyra disconnected, queued input on the client side, and
reconnected when signal came back. For "edit a config file on the subway,"
iSH is more reliable than any cloud option, including ours. For "refactor my
service with an AI agent on the subway," iSH literally cannot do the job
today; Cosyra at least uses the CPU that can finish it.
Where does iSH beat Cosyra?
iSH beats Cosyra on price (free forever), offline support, cloud-trust avoidance, true local Linux on the phone, and App Store distribution with zero signup. We ship a cloud product and we still think iSH is a great piece of software. If you are on iPhone and you want Linux actually running on the phone, iSH is the right tool for several reasons we cannot match.
- It is free, forever. No subscription, no billing page. iSH is free and open source, with source code at github.com/ish-app/ish. For hobbyists, students, and people who want a Linux shell on their phone occasionally, this is a real advantage.
- It runs offline. No network required. On a flight, on the subway, in a rural area with flaky data, iSH keeps running because the Alpine root filesystem lives on your iPhone. Anything we ship in a cloud container stops working the moment your phone loses signal. We do not have an offline mode, and for that specific use case iSH is the stronger choice.
- No cloud trust required. Your code, your iPhone. Nothing leaves the device unless you push it somewhere. For people working with sensitive code or who just prefer SaaS-free tooling, this matters.
- Real local Linux. iSH is a true local Unix environment, running
its own Alpine root filesystem, not a remote session rendered to your phone.
apk,vi,git,ssh,python3, and the usual friends all work. The iSH wiki documents dozens of working setups and workarounds. - App Store and TestFlight distribution. iSH ships on the App
Store without an account wall. Install it, open it, type
apk add. No signup, no key management, no billing page. - Active community. The ish-app/ish repo has tens of thousands of stars and an actively maintained wiki. When you hit a weird issue, search results exist.
Where does Cosyra beat iSH?
Cosyra beats iSH on raw speed (native x86_64 instead of user-mode x86 emulation), cross-platform reach (Android and iOS, not just iOS), pre-installed AI agents, 30 GB of persistent storage that survives device loss, and the ability to hand off a session between phone, tablet, and laptop. The trade-off for "free and fully local on iOS" is emulation overhead and an iPhone-only footprint.
Native x86_64 speed instead of emulation
iSH emulates x86_32 on ARM, interpreting instructions one at a time because iOS does not allow JIT outside Safari. The iSH FAQ says this plainly. We run a native x86_64 Ubuntu container in the cloud. The same AI agent workload that crawls on iSH finishes in seconds on a Cosyra container, because the container is not pretending to be a different CPU.
Real Ubuntu 24.04 with glibc
iSH is Alpine Linux with musl libc on a 32-bit i386 user-mode emulator. Most
small things work. Some bigger things don't: many precompiled Python wheels
target x86_64 not i386, and — most consequentially for this comparison —
modern Node.js prebuilt binaries crash on iSH with
Illegal instruction per
iSH issue #2335.
Our container is Ubuntu 24.04 x86_64 with glibc, the same ABI you would
expect from a typical Linux server or developer laptop. In practice that
means much broader compatibility for common CLI and agent workflows than
iSH, though you should still verify project-specific dependencies.
AI coding agents pre-installed (and Node actually runs)
On first boot, the Cosyra container already has Claude Code, Codex CLI,
OpenCode, and Gemini CLI on the PATH. You paste a key and run
claude. On iSH, what you'd try looks like the session below —
but it stops at the node --version step, not at
claude:
$ apk update && apk upgrade
$ apk add nodejs npm git
$ node --version
Illegal instruction
# iSH issue #2335 — open since 2024-01-21.
# Without Node, the next two commands cannot run.
$ npm install -g @anthropic-ai/claude-code # blocked
$ claude # blocked
Not "installable but slow." Blocked at the Node runtime. We walk through the working setup on Cosyra in How to Run Claude Code on Your Phone.
Android as well as iOS
iSH is Apple-only — its App Store listing covers iPhone, iPad, Mac (Apple Silicon M1+), and Vision Pro, but there is no Android port and there will not be one (the architecture depends on iOS-specific APIs and the App Store's signed-app model). If you also use an Android phone or tablet, iSH does not exist for that half of your life. We ship a native Google Play app backed by the same container you use on iPhone, and an Android-specific guide for the Pixel / Galaxy / DeX workflows.
Persistent state across devices
A Cosyra container persists in the cloud and is the same container whether you reach it from your iPhone, your Android tablet, or the web client on a laptop. Drop your phone, buy a new one, log in, your repo, your shell history, and your half-finished agent session are still there. iSH state is tied to whichever Apple device you installed it on. Lose that device or delete the app, lose the setup.
Ports you can share as HTTPS URLs
Running a dev server on iSH means binding to loopback inside the app sandbox. You cannot hand a teammate a preview URL from it. We expose container ports over HTTPS tunnels so a preview link works like any other web URL.
No iOS background-limit gymnastics
The iSH "Running in background" wiki page documents a workaround where you read /dev/location to
/dev/null so iOS keeps the process alive while the app is backgrounded.
This is clever, and also fragile. A Cosyra container keeps running in the cloud
whether your iPhone is on or off.
Opinion a competitor would disagree with
We think the phone keyboard is fine for agent-driven coding. Most people who disagree haven't tried it with a real agent that does the typing for them. You prompt in English, the agent writes the code. The limiting factor is not your keyboard layout. It is whether the CPU underneath can finish the job before your commute ends. That is the exact reason we built Cosyra as a cloud container instead of a local emulator.
Who should pick iSH instead of Cosyra?
Pick iSH instead of Cosyra if you are an offline-first iPhone user, a student or hobbyist on zero budget, or a no-cloud-trust user who needs code to stay on device. iSH is the right answer for those three profiles, full stop. We run iSH on one of our own test iPhones for offline shell work; it is not mutually exclusive with a cloud container.
Pick iSH if you are one of these profiles
- Offline-first iPhone user. You fly often, you ride subways without 5G, you work in places with no reliable internet. You want to write shell scripts, edit config files, run small Python scripts, and commit to git from your phone. iSH does this without ever touching a network. We cannot match that.
- Student or hobbyist on zero budget. You want Linux on your iPhone for learning, for a class, for tinkering. You do not want a subscription. iSH is free and open source under permissive licenses on its components. That is the right answer for you.
- No-cloud-trust user. You have a policy reason, a research reason, or a personal preference to keep code entirely on your device. You do not want to send code to a managed cloud service, even a per-user isolated one. iSH keeps everything local. Our container is remote. For this profile, the honest answer is "iSH is the right pick, not us."
We run iSH on one of our test iPhones specifically because it is useful for offline shell work. We use Cosyra for anything that involves an AI agent, a real Ubuntu environment, or syncing state to an Android tablet. They are not mutually exclusive.
How do you try Cosyra if you're coming from iSH?
You try Cosyra from an iSH background in about two minutes: install from the
App Store, sign in, and you land in a fresh Ubuntu 24.04 x86_64 container
instead of an emulated x86 Alpine. Your muscle memory from
apk add translates to apt-get install, AI agents
are already on PATH, and the first thing you'll notice is that tool calls
finish immediately instead of crawling. The session below captures the
commands we run on a fresh install.
Two minutes total.
$ # Install Cosyra from the App Store, open the app,
$ # and drop into your container shell.
$ uname -m
x86_64
$ cat /etc/os-release | head -2
PRETTY_NAME="Ubuntu 24.04 LTS"
NAME="Ubuntu"
$ # apt-get replaces apk. Everything else translates.
$ sudo apt-get install -y neovim tmux ripgrep fd-find
$ # Your AI agents are already on PATH.
$ which claude codex opencode gemini
/usr/local/bin/claude
/usr/local/bin/codex
/usr/local/bin/opencode
/usr/local/bin/gemini
If you are used to apk, apt-get replaces it. Everything
else translates. tmux, ssh, git, vim/neovim, ripgrep, fzf, all one apt install away. The big unlock for most people: the agents are already installed, and
they actually run fast because the CPU underneath is not being emulated.
Frequently asked questions
What is iSH and how does it run Linux on iPhone?
iSH is an open-source iOS app that runs Alpine Linux locally on iPhone and iPad by emulating x86 in user mode and translating Linux syscalls. Its own GitHub description reads: "A project to get a Linux shell running on iOS, using usermode x86 emulation and syscall translation." Because iOS does not allow JIT outside of Safari, iSH interprets x86 instructions rather than JIT-compiling them, which is also why workloads feel slow.
[source: ish-app/ish on GitHub]
Why is iSH slow?
Because it interprets x86 instructions one at a time on ARM. The iSH wiki FAQ says it directly: "Performance-wise the choice of architecture is not all that important, since the code is being emulated anyways." Shell scripts, git, small Python tasks, and text editing feel fine. Compilers, language servers, and AI coding agents do not.
Can Claude Code run on iSH?
Not as of 2026-05-19, and it isn't a "slow but works" situation. iSH
tracks an open bug —
issue #2335 "Node/NPM giving illegal instructions error" — opened 2024-01-21, still open. Modern Node.js prebuilt binaries emit instructions
that iSH's i386 user-mode emulator doesn't implement, so
node --version crashes with Illegal instruction.
That kills Claude Code, Codex CLI, Gemini CLI, and OpenCode at the same
point, because all four are Node CLIs. A separate
issue #2604 "Gemini cli" (2025-07-19) is the same story for a different agent. iSH's emulator could
in principle be patched; until that happens the AI-CLI category is blocked on
iSH.
[source: iSH issue #2335, open since 2024-01-21]
Does iSH work in the background on iOS?
Not by default. The iSH wiki documents a workaround that reads
/dev/location to /dev/null, keeping the app
alive via iOS's location background mode. Outside that pattern, iOS can
suspend iSH like any other app, which is a problem for long compiles or
agent sessions. A cloud container (like ours) sidesteps the issue because
the process runs in the cloud, not on your phone.
[source: iSH wiki, "Running in background"]
Is there a Termux for iPhone?
No. Termux is Android only. On iPhone the real options are iSH (local Alpine via emulation), a-Shell (local Unix tools), or a cloud terminal like Cosyra that renders a remote Ubuntu container into a native iOS app. The long-running Hacker News thread on this question is still one of the top search results because nothing on-device has changed the answer.
[source: Hacker News, "Does iOS still not have something like Termux?"]
Does Cosyra work offline like iSH?
No. Our container lives in the cloud, which is how we deliver native x86_64 speed and the same environment across iPhone, Android, and web. If "works on a plane with no Wi-Fi" is the single most important feature for you, iSH (or a local shell app) is the right call, not Cosyra. We would rather say that plainly than oversell.
Pre-installed Claude Code, Codex CLI, OpenCode, and Gemini CLI. We run them in a real x86_64 Ubuntu container, reached from a native iOS or Android app. Two-minute setup.
Cosyra vs Termux · Mobile coding terminal guide · See pricing. Sign up — 1 hour free, no credit card. Extend with a 10-hour, 7-day trial when you want more.