Skip to content

Cosyra vs iSH: Honest Linux-on-iPhone Comparison

· 11 min read

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 and wiki, and our internal iSH factsheet at .claude/growth/competitor-facts/ish.md. Claims and versions are current as of 2026-04-16.

Short answer. iSH is a free, open-source iOS app that runs Alpine Linux locally on your iPhone via x86 user-mode emulation. It works offline, it is free, and it is slow (the iSH wiki says so itself). 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, 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 working in the tunnels. Our Cosyra container disconnected and reconnected. We also watched a Claude Code session on iSH stall out for minutes on a single tool call because the x86 emulator was interpreting every instruction. Both experiences are in this guide.

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. Free trial, 10 hours or 7 days. 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. Free trial, 10 hours or 7 days. No credit card.

Feature-by-feature comparison (as of 2026-04-16)

Feature Cosyra iSH
Pricing $29.99 / month Pro, or $300 / year Free
Free tier 10 hours or 7 days of full access, no credit card Unlimited local use, no account
OS support iOS, Android, web iOS and iPadOS only
AI agents pre-installed Claude Code, Codex CLI, OpenCode, Gemini CLI None (installable, practically too slow)
Persistent storage 30 GB cloud, survives device loss Local to the iPhone, tied to the device
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. Free trial, 10 hours or 7 days. No credit card.

Hands-on: we ran the same workload on both

We set up the two environments on the same iPhone 15 Pro, with the same small repository (a 3,000-line TypeScript project), and asked Claude Code 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 Claude Code installed. 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, waited, then ran npm install -g @anthropic-ai/claude-code, and waited some more. The install itself took around fifteen minutes, which by itself is not fatal. Launching claude and watching it enumerate files was what broke the experience. A single tool call that returns instantly on a laptop took 40 to 90 seconds. The model waits, times out on some operations, and the session becomes an exercise in patience.

On Cosyra, we opened the iOS app, tapped into the container, typed claude, pasted our Anthropic API key, and asked for the same 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 x86 instruction. 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 editing the file we had open. Cosyra disconnected, queued input on the client side, and reconnected when signal came back. For "write a shell script on the subway," iSH is more reliable. For "refactor my service with an AI agent on the subway," neither is ideal, but Cosyra at least uses the CPU that can finish the job.

Where iSH wins

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 that we cannot match.

Where Cosyra wins

The trade-off for "free and fully local on iOS" is emulation overhead and an iPhone-only footprint. Here is where a cloud container changes the shape of the problem.

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. Most small things work. Some bigger things (native Node addons built for glibc, many precompiled Python wheels, and some server-oriented CLI toolchains) do not. 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

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, you do:

iSH, installing Claude Code the slow way

$ apk update && apk upgrade

$ apk add nodejs npm git

$ npm install -g @anthropic-ai/claude-code

# npm install takes a long time under emulation.

# Expect ~15 minutes on an iPhone 15 Pro.

$ export ANTHROPIC_API_KEY=sk-ant-...

$ claude

# Every tool call, every file read, every edit

# runs through the x86 interpreter. Slow.

It is installable. It is not usable as a daily driver. We walk through the smooth setup on Cosyra in How to Run Claude Code on Your Phone.

Android as well as iOS

iSH is iOS and iPadOS only, by design. It uses App Store distribution and iOS-specific sandbox behavior. 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.

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 the iPhone. Lose the device, 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

The best answer is not always "use our product." We mean this:

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 to try Cosyra if you're coming from iSH

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?

Technically yes. You install Node.js with apk add nodejs npm, then npm install -g @anthropic-ai/claude-code, then run claude. In practice the x86 emulation makes even small agent sessions unusably slow, and Alpine's musl libc occasionally breaks native Node addons that assume glibc. It runs. It is not a reasonable daily-driver setup for agent-driven coding.

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.

Download for iOS · Download for Android · Cosyra vs Termux · Mobile coding terminal guide · See pricing. Free trial, 10 hours or 7 days. No credit card.