Skip to content

// guides

Cosyra vs Crush: An Agentic Terminal on a Phone

Short answer. Cosyra vs Crush is two different shapes, not a head-to-head. Crush is Charm's terminal AI coding agent: a single Go binary, source-available under FSL-1.1-MIT, free to run, that talks to 20+ model providers. But it has no mobile app, so on a phone it only runs inside a terminal — Termux on Android, and nothing native on iOS. Cosyra is a hosted Ubuntu 24.04 container you reach from native iOS and Android apps, with Claude Code, Codex CLI, OpenCode, and Gemini CLI pre-installed, and Crush installs on top in one command. If you own a machine that stays on, run Crush. If the device in your hand is a phone, we think Cosyra is the better fit.

We wrote this after running both: Crush on a Linux laptop the way Charm intends, then the same kind of agent loop from a cloud container on a phone while standing on a train platform. Both are good. Only one of them runs when there is no laptop in front of you.

Quick decision: pick the path that matches your situation:

tl;dr

Use Crush if you code on a machine you own and want a free, source-available terminal agent with Charm's terminal polish, 20+ providers, and full local control. Use Cosyra if you want to actually run an agentic terminal from a phone, with agent CLIs already installed in a container that follows you across devices — and add Crush on top in one command. Different tools for different places.

App Store · Google Play. 1 hour free on signup — extend with a 10-hour, 7-day trial. No credit card.

This post was written by the Cosyra team. We compared Cosyra against Crush based on hands-on testing of both — Crush on Linux, Cosyra on iPhone and Android — plus first-hand reads of the Crush GitHub repository via the GitHub API, its README, charm.land, and our internal Crush factsheet. Crush facts and version numbers were re-verified first-hand on 2026-06-30 (v0.81.0, 25,907 stars).

Came here to run Crush on your phone and found there's no app? We ship a persistent Ubuntu 24.04 container with Claude Code, Codex CLI, OpenCode, and Gemini CLI pre-installed, reached from a native iOS or Android app. Add Crush with npm install -g @charmland/crush. 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 Crush compare feature by feature?

The core difference in Cosyra vs Crush is what you get for your money. Crush is free software you run on a machine you supply; Cosyra is the machine itself, hosted and reached from a phone. Crush is source-available and local; Cosyra is a closed-source hosted container. The table below lines them up on thirteen attributes as of 2026-06-30.

Feature Cosyra Crush
Pricing $29.99 / month Pro, or $300 / year Free tool; you pay your own model provider (BYOK)
Free tier 1 hour on signup + 10-hour, 7-day trial, no credit card Free forever; the binary itself never costs money
OS support iOS, Android (native apps), plus web macOS, Linux, Windows, Android (Termux); no mobile app
AI agents pre-installed Claude Code, Codex CLI, OpenCode, Gemini CLI in the container Crush is the agent; 20+ providers, mid-session model switch
Persistent storage 30 GB per user, hibernates and resumes in place Your local disk; nothing hosted to persist between machines
Offline capability No: the container is in the cloud, needs a network Partial: the tool runs locally, but the model is a remote API
Container sandboxing Per-user isolated Ubuntu 24.04 container on Azure AKS None: runs directly on your host OS or Termux userland
Port forwarding HTTPS tunnels to container ports Local ports directly; remote is up to your own machine
File sync across devices Same container from iPhone, Android, and web Machine-bound; tied to whatever host you installed it on
Max session length Persistent; hibernates after 10 min idle, resumes As long as your machine stays on and the terminal is open
API key / billing model BYOK: pay Anthropic / OpenAI / Google directly BYOK: pay any of 20+ providers directly
Open-source status Closed-source SaaS, orchestration proprietary Source-available, FSL-1.1-MIT (converts to MIT after 2 years)
Runs on a phone Yes, that is the entire point Only inside a terminal; Termux on Android, nothing on iOS
Diagram comparing Crush the source-available terminal AI agent binary (macOS, Linux, Windows, Termux, no mobile app) against Cosyra the hosted Ubuntu container reached from native iOS and Android apps with AI CLIs pre-installed
Crush vs Cosyra as two shapes: Crush is a free binary you run on a machine you own, Cosyra is a hosted box you reach from a phone. Stars and version verified first-hand via the GitHub API on 2026-06-30.

Want the phone-shaped place to run Crush? Native iOS and Android, Ubuntu 24.04, four agent CLIs already on the PATH, and npm install -g @charmland/crush adds Crush in one command.

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 actually happens when you try to run Crush on a phone?

On Android, it half-works and then fights you. Crush's README lists Android among supported systems, which is true in the narrow sense that the Go binary runs in a Linux userland. But the packaged install is rough. We followed the Termux path a developer took in GitHub issue #793: install Node, grab the Termux .deb, run dpkg -i, and watch it fail with a Read-only file system error because the package writes to the Android system root instead of Termux's sandboxed $PREFIX. The reconstruction below quotes that exact error.

Reconstructed Termux terminal showing dpkg failing to install the Crush package with a Read-only file system error when creating /etc/bash_completion.d, quoting GitHub issue #793
Reconstruction of the Termux install failure reported in Crush issue #793 — the .deb targets /etc, which Termux mounts read-only. Not a device capture; error text read from the issue on 2026-06-30.

The workaround is real: install Crush with npm install -g @charmland/crush after Node, or pull the prebuilt android-arm64 archive Charm now ships, and it runs. But you inherit every Termux trade-off — Android killing background sessions when you switch apps, ephemeral default storage, manual provisioning of Node and Git before Crush even starts. On iOS the story is shorter: there is no terminal that runs arbitrary Linux binaries, so there is no native Crush at all.

So the honest test is not "Crush on a phone vs Cosyra on a phone." The test is: you want the thing Crush gives you at a desk — a terminal agent that reads your code and edits files — while you are away from your machine. We did exactly that on an iPhone from a train platform. We opened the Cosyra iOS app, dropped into a full-screen Ubuntu shell, ran npm install -g @charmland/crush, exported a provider key, typed crush, described a change, and approved the diff. No home server to keep awake, no Termux read-only error, no $PREFIX archaeology. That is the part a cloud container reproduces.

Where does Crush beat Cosyra?

Crush is free, local, source-available, provider-flexible, and carries the best terminal UX in the business. We ship a product that competes for the same agentic-coding job, and Crush is still the better answer for several real situations. Here are five, each grounded in a first-hand source.

Where does Cosyra beat Crush?

Cosyra beats Crush on the one axis Crush does not contest: it runs on a phone with no home server. Add pre-installed agent CLIs, a persistent workspace that follows you across devices, and not having to supply or maintain a machine. These are different-shape strengths, so we are precise about each.

A real terminal on a phone, with Crush one command away

Cosyra gives you an interactive Ubuntu 24.04 shell from the iOS and Android apps. Crush's only phone path is Termux on Android, which fights you at install time (issue #793) and dies when Android reclaims the background session. In our container, npm install -g @charmland/crush just works, because it is a standard x86_64 Ubuntu box, not an Android userland. You get Crush plus the four CLIs we pre-install, all in one shell.

Claude Code, Codex CLI, OpenCode, and Gemini CLI pre-installed

On a fresh Cosyra container, four agent CLIs are already on the PATH. You export a provider key and type claude, or add Crush on top. We pre-install the standalone CLIs because setup friction is the main thing that kills agent-driven mobile coding; nobody wants to provision Node, Git, and a toolchain one-handed on a phone keyboard before the first prompt.

cosyra, first boot, then add crush

$ uname -m

x86_64

$ cat /etc/os-release | head -1

PRETTY_NAME="Ubuntu 24.04 LTS"

$ which claude codex opencode gemini

/usr/local/bin/claude

/usr/local/bin/codex

/usr/local/bin/opencode

/usr/local/bin/gemini

$ npm install -g @charmland/crush

added 1 package in 3s

$ export ANTHROPIC_API_KEY=sk-ant-...

$ crush

A persistent workspace that follows you across devices

Cosyra containers carry 30 GB of persistent storage and hibernate after 10 minutes idle, resuming in place on next open. The same container is reachable from your iPhone, your Android tablet, and the web: clone a repo on the couch, pick it up from the waiting room, finish at your desk, all in one shell. Crush is tied to whatever machine you installed it on; there is no hosted workspace that travels with you, and a Termux session that Android killed does not come back mid-thought.

You don't have to supply or maintain the machine

Crush needs a computer you own and keep running, or a Termux session you babysit. We run the machine for you. There is nothing to leave powered on at home and SSH back into; the container is the thing you connect to. For a developer whose only always-available device is a phone, that removes the biggest hidden dependency in every "run Crush remotely" workaround.

An opinion the Crush crowd would push back on

Here is where we disagree with the prevailing terminal-agent view. Charm's choice to ship a clean binary and let you run it wherever is the right call, and we admire it. But the assumption underneath most terminal-agent culture — that you obviously have a trusty local machine to run the binary on — is the part we think is dated. Plenty of people's primary computer is a phone. We think the phone keyboard is fine for agent-driven coding, because when the agent does the typing your job shrinks to prompt, review, and approve, and that fits a phone on a train fine. Most developers who scoff at coding from a phone have never actually driven an agent from a real shell on one. Crush's fans would likely say a terminal belongs on a machine you own; we built Cosyra because we don't think you should need to own and babysit one.

Who should pick Crush instead of Cosyra?

Pick Crush if you are a desktop-primary developer who wants a free, source-available terminal agent on a machine you already run, you value provider breadth and mid-session model switching, or you want to read and self-build your tooling. We run Crush ourselves on a laptop and Cosyra from our phones; they are not mutually exclusive, and Crush installs cleanly inside Cosyra when you want both.

Try Crush first if you are one of these profiles

We use Crush when we are at a desk with a machine already running. We use Cosyra when the only device we have is a phone — and then we install Crush inside it. Different tools, different places. Choose by where you are, not by which is "better."

How do you try Cosyra if you're coming from Crush?

You try Cosyra from a Crush background in about two minutes: install from the App Store or Google Play, open the app, and you land in a fresh Ubuntu 24.04 x86_64 container with Claude Code, Codex CLI, OpenCode, and Gemini CLI already on PATH. The git and shell commands you run around Crush translate one-to-one; the difference is there is no read-only $PREFIX fight and no machine to keep powered on. If you want Crush specifically, one npm command puts it there.

cosyra, first session, coming from Crush

$ # Install Cosyra from the App Store or Google Play,

$ # open the app, drop into the container shell.

$ uname -m

x86_64

$ git clone https://github.com/you/your-repo

$ cd your-repo

$ npm install -g @charmland/crush

added 1 package in 3s

$ export OPENAI_API_KEY=sk-...

$ crush

# Crush on a real shell in your pocket. No machine to keep on.

If you wrap long Crush sessions so they survive interruptions, the Cosyra equivalent is tmux: start a named session, detach, and reattach after your phone locks or the connection drops — the thing a killed Termux session cannot do. We walk the full Crush-on-mobile flow in our guide to running Crush on your phone, and the broader setup in How to Run Claude Code on Your Phone. For the full map of mobile coding options, the AI coding agents on mobile pillar lays out every route. If your real comparison set is other terminal agents, the same shape shows up in OpenCode on your phone, Cosyra vs Kilo Code (whose CLI is built on the same OpenCode base), and Cosyra vs Termux, and the raw Android-userland trade-offs are in running a Linux container on Android.

Frequently asked questions

Can you run Crush on an iPhone or Android phone?

Only inside a terminal, and only really on Android. Crush is a single Go binary, not a phone app. On Android you install a Linux userland like Termux and run the binary there, though the packaged install is fiddly: GitHub issue #793 reports the Termux .deb failing with a Read-only file system error because it writes to the Android system root instead of Termux's $PREFIX. On iOS there is no terminal that runs arbitrary Linux binaries, so there is no native Crush path at all. The honest way to get Crush on a phone is a cloud Linux container you reach from a native app and install Crush into with one npm command. That is what we built Cosyra to be.

Does Crush have a mobile app?

No. Crush's README lists Android among supported operating systems, but that means the Go binary runs in an Android Linux userland (Termux), not that there is a Crush app in the Play Store or App Store. There is no iOS or Android app to download. When people say "Crush on a phone" they mean running the CLI in a terminal, which on a phone is Termux on Android or a cloud container reached from a native app.

Is Crush open source?

Not in the OSI sense. Crush is source-available under FSL-1.1-MIT, the Functional Source License. The code is public and free to use, and each release converts to a plain MIT license two years after it ships, but until then the license forbids using Crush to build a competing product. GitHub reports the license as NOASSERTION because FSL is not OSI-approved. So the accurate phrasing is "source-available," not a flat "open source." If you need a truly OSI-open agent, that is a real distinction, and it is a point against both Crush and our closed-source orchestration.

How much does Crush cost compared to Cosyra?

Crush the tool is free to download and run; you pay your own model provider through BYOK. The only paid plans Crush surfaces are specific model vendors' subscriptions (Synthetic, GLM, Kimi Code, MiniMax), not a Crush license fee. Cosyra is a flat $29.99/month after a free hour on signup. These buy different things: Crush's zero price is for software you run on a machine you already own and keep on; Cosyra's price is the hosted Ubuntu machine and 30 GB of storage itself. It is not a like-for-like dollar comparison, so we do not present it as one.

Why does the Crush Termux package fail to install on Android?

Because the packaged Termux .deb tries to write into the Android system root rather than Termux's sandboxed prefix. GitHub issue #793 shows dpkg failing with "error creating directory ./etc/bash_completion.d: Read-only file system" — Termux installs everything under $PREFIX (/data/data/com.termux/files/usr), so a package that targets /etc cannot write there. The workarounds are to install via npm (npm install -g @charmland/crush) after installing Node, or pull the prebuilt android-arm64 binary archive Charm ships, rather than the .deb. Inside a cloud Ubuntu container this class of Android-userland friction disappears; the npm install just works.

Is Crush better than OpenCode or Claude Code for coding from a phone?

For the editing experience on a machine you own, Crush is genuinely nice — Charm's terminal UX is a real draw, and the Hacker News thread on Crush is full of people praising the polish. But "from a phone" changes the question. None of these tools ships a phone app; all of them are terminal binaries. So the deciding factor is where the terminal runs. On Cosyra we pre-install Claude Code, Codex CLI, OpenCode, and Gemini CLI in a container you reach from a native iOS or Android app, and Crush installs on top in one command. The agent you pick matters less than having a real shell in your pocket to run it in.

Pre-installed Claude Code, Codex CLI, OpenCode, and Gemini CLI — and Crush one command away. We run them in a real x86_64 Ubuntu container, reached from a native iOS or Android app. Two-minute setup, no Termux read-only fight.

Crush on your phone · Cosyra vs Termux · AI coding agents on mobile · See pricing. Sign up — 1 hour free, no credit card. Extend with a 10-hour, 7-day trial when you want more.