HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
ish-app
ish
C2017–2024
ish-app / ish

ish

Linux shell for iOS

46Distinct people
65Mentions
0Explicit recommenders
20.7KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Linux shell for iOS

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 3:56:07 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year65 dated mentions

Observed mentions: 2017-10-23 02:56:06 UTC to 2024-12-30 01:43:25 UTC.

05101520252017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments20172018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 6 mentions; 3 submissions, 3 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 10 mentions; 0 submissions, 10 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 23 mentions; 2 submissions, 21 comments20202021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 5 mentions; 2 submissions, 3 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 7 mentions; 2 submissions, 5 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 5 mentions; 1 submissions, 4 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 8 mentions; 2 submissions, 6 comments2024

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC101
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC633
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC10010
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC23221
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC523
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC725
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC514
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC826

From the project README

An excerpt from the repository, fetched Nov 13, 2026.

Read the project’s introduction
iSH A project to get a Linux shell running on iOS, using usermode x86 emulation and syscall translation. For the current status of the project, check the issues tab, and the commit logs. App Store page TestFlight beta Discord server Wiki with help and tutorials README中文 (如若未能保持最新,请提交PR以更新) Hacking This project has a git submodule, make sure to clone with --recurse-submodules or run git submodule update --init after cloning. You'll need these things to build the project: Python 3 Meson (pip3 install meson) Ninja Clang and LLD (on mac, brew install llvm, on linux, sudo apt install clang lld or sudo pacman -S clang lld or whatever) sqlite3 (this is so common it may already be installed on linux and is definitely already installed on mac. if not, do something like sudo apt install libsqlite3-dev) libarchive (brew install libarchive, sudo port install libarchive, sudo apt install libarchive-dev) TODO: bundle this dependency Build for iOS Open the project in Xcode, open iSH.xcconfig, and change ROOT_BUNDLE_IDENTIFIER to something unique. You'll also need to update the development team ID in the project (not target!) build settings. Then click Run. There are scripts that should do everything else automatically. If you run into any problems, open an issue and I'll try to help. Build command line tool for testing To set up your environment, cd to the project and run meson build to create a build directory in build. Then cd to the build directory and run ninja. To set up a self-contained Alpine linux filesystem, download the Alpine minirootfs tarball for i386 from the Alpine website and run ./tools/fakefsify, with the minirootfs tarball as the first argument and the name of the output directory as the second argument. Then you can run things inside the Alpine filesystem with ./ish -f alpine /bin/sh, assuming the output directory is called alpine. If tools/fakefsify doesn't exist for you in your build directory, that might be because it couldn't find libarchive on your system (see above for ways to install it.) You can replace ish with tools/ptraceomatic to run the program in a real process and single step and compare the registers at each step. I use it for debugging. Requires 64-bit Linux 4.11 or later. Logging iSH has several logging channels which can be enabled at build time. By default, all of them are disabled. To enable them: In Xcode: Set the ISH_LOG setting in iSH.xcconfig to a space-separated list of log channels. With Meson (command line tool for testing): Run meson configure -Dlog="<space-separated list of log channels>". Available channels: strace: The most useful channel, logs the parameters and return value of almost every system call. instr: Logs every instruction executed by the emulator. This slows things down a lot. verbose: Debug logs that don't fit into another category. Grep for DEFAULT_CHANNEL to see if more log channels have been added since this list was updated. A note on the interpreter Possibly the most interesting thing I wrote as part of iSH is the interpreter. It's not quite a JIT since it doesn't target machine code. Instead it generates an array of pointers to functions called gadgets, and each gadget ends with a tailcall to the next function; like the threaded code technique used by some Forth interpreters. The result is a speedup of roughly 3-5x compared to emulation using a simpler switch dispatch. Unfortunately, I made the decision to write nearly all of the gadgets in assembly language. This was probably a good decision with regards to performance (though I'll never know for sure), but a horrible decision with regards to readability, maintainability, and my sanity. The amount of bullshit I've had to put up with from the compiler/assembler/linker is insane. It's like there's a demon in there that makes sure my code is sufficiently deformed, and if not, makes up stupid reasons why it shouldn't compile. In order to stay sane while writing this code, I've had to ignore best practices in code structure and naming. You'll find macros and variables with such descriptive names as ss and s and a. Assembler macros nested beyond belief. And to top it off, there are almost no comments. So a warning: Long-term exposure to this code may cause loss of sanity, nightmares about GAS macros and linker errors, or any number of other debilitating side effects. This code is known to the State of California to cause cancer, birth defects, and reproductive harm.
Read the full README on GitHub

What Hacker News says

65 sources
For iOS I’ve been using iSH. It’s on GitHub (and the AppStore) and is an Alpine Linux shell for iOS. It provides no creature comforts for managing SSH connections, but does drop you into a pretty standard Linux shell. I believe it’s a stock Alpine install. iSH is an interesting project in and of itself, but in this context, you can also install a standard openssh client. This is usually as much support as I need on my phone or iPad to connect to a remote server. https://github.com/ish-app/ish
In Coding on iPad using self-hosted VSCode, Caddy, and code-server
Available on the ios AppStore free. [0] Homepage: [1] ish on Github [4] A similar app is a-Shell [2] Also free. Homepage: [3] Most commands are compiled for iOS native Arm64 format, making them fast and well integrated with iOS underlying BSD Unix. Both apps require M1 chip or newer on mac. [0]: https://apps.apple.com/us/app/ish-shell/id1436902243 [1]: https://ish.app [2]: https://apps.apple.com/us/app/a-shell/id1473805438 [3]: https://holzschu.github.io/a-Shell_iOS/ [4]: https://github.com/ish-app/ish?tab=readme-ov-file
In ISH: Linux shell running on iOS, using usermode x86 emulation
If you're curious, iSH's source is public: https://github.com/ish-app/ish You're correct that there is no Linux kernel emulation. They went with reimplementation for that. However, the userland is very much emulated x86 binaries. You can even compile your own C code inside iSH and run it. When you syscall, control passes from the threaded code[0] interpreter into the Linux reimplementation. The reason why they aren't shipping Debian is that the threaded code technique being used as a JIT substitute in both iSH and UTM SE is far too slow to run a full Debian derivative. Believe me, I tried installing Ubuntu on UTM SE and it took literal hours and flattened my iPad battery in the process. iSH uses Alpine Linux because it's very lightweight[1]. As far as I'm aware there's no secret deal with Apple to lock iSH down. The only limitations I've
Read the rest
ran into have to do with MySQL, which wants unaligned atomics, which you can't do on ARM64 without compromising the performance of the emulator. I actually had a discussion with the developer of iSH about this and put in a PR to make MySQL stop crashing iSH. [0] return-oriented programming [1] So lightweight it doesn't even ship anything GNU, making it one of the few genuine "Linux distros" with no slash or plus or "I would just like to interject"
In Apple blocks PC emulator in iOS App Store and third-party app stores
False. iSH is an x86 "bytecode" emulator. "Possibly the most interesting thing I wrote as part of iSH is the JIT. It's not actually a JIT since it doesn't target machine code. Instead it generates an array of pointers to functions called gadgets, and each gadget ends with a tailcall to the next function; like the threaded code technique used by some Forth interpreters." https://github.com/ish-app/ish
In ScummVM on the App Store
Not making any statement regarding the mentioned workflow issues (I mostly agree with them), I really like iSH [1] for this sort thing. It’s a “good enough” solution for the “I just quickly need to do something in a terminal” problems. And because it’s an x86 Alpine Linux it can even run simple binaries if needed. But for me it still couldn’t replace a dedicated laptop for proper tasks. [1]: https://github.com/ish-app/ish
In Buying an iPad Pro for coding was a mistake

Showing the 15 most recent of 65 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.