Skip to content

iSH Alternative: Cosyra for Linux on iPhone (2026)

By Cosyra Editorial Team

Published Last updated 11 min read

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.

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:

iSH: what you'd try (captured 2026-05-19)

$ 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

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.

cosyra, first session, coming from iSH

$ # 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.

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.

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.

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.

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.