a-Shell: A Multiple Windows Terminal App for iOS

a-Shell is a free and open-source terminal app for iOS. It uses ios_system for command interpretation, and will ultimately include all commands from the ios_system ecosystem (nslookup, whois, python3, lua, pdflatex, lualatex…)

The project relies on iOS 13 to create and manage multiple windows. Each window has its own context, command history and current directory.


  • Create directories, move files, compress them, uncompress them, edit them, run python, lua or Tex on your files, move them to other apps.
  • Check connectivity with ping, check site identity with nslookup or whois, transfer files with curl or scp
  • a-Shell comes with Vim included. You can edit your files and even run syntax checkers using e.g. vim-lsp or ALE. Or, if you’re more old-school, there is also Ed.
  • a-Shell uses iOS file sharing ability. You can open directories in other app sandbox, run TeX or Python there, send the result in a third app. You can also edit files directly in a-Shell.
  • a-Shell uses iOS 13 multi-window ability. Edit your files in one window, process them in another, transfer them in a third
  • a-Shell comes with several programming languages: Lua, Python and C. Edit your programs and run them inside the app.
  • Use “pip install” to add more Python packages (if they are pure Python, since there are no way to send the result of the C compiler to the app).
  • clang compiles your C files to LLVM intermediate representation (IR, or bytecode). Execute the resulting file using lli (LLVM interpreter).

To be honest I have to to research the ios_system a bit and learn how to properly use the app, but a couple of things that might be useful…. when you first open the app if you type help it will give you a brief description of what a-Shell is. If you type help -l it will give you a list of available commands.


I’ve also tried to install gallery-dl, and it worked. Same with youtube-dl. However, I haven’t attempted to download anything with either of the programs as I am not sure how to tell the programs where to download files.


pwd returns the expected /private/var/mobile/Containers/Data/Applications/weird-app-string-name. cd to Applications returns permission denied. However ls lists a few folders, one of which is Documents. I expect youtube-dl to drop the downloads in there by default.

Anyway…. I’m definitely in over my head since I’m not familiar with the command interpretation, but it’ll give me something to do in the next couple of days.

UPDATE: pickFolder was the command I was looking for to interact with other apps on the phone. Also gallery-dl seems to work just fine, however I’m not able to make youtube-dl work.

If you want to try a-Shell it is available in the App Store. For more info and troubleshooting check out the official project page on Github.