General Questions
What is iSH?
What is iSH?
iSH is a Linux shell environment for iOS that uses usermode x86/x86_64 emulation and syscall translation to run a full Alpine Linux userspace on your iPhone or iPad.Unlike traditional virtualization, iSH emulates x86 instructions and translates Linux system calls to iOS equivalents, allowing Linux programs to run directly on iOS without requiring a full virtual machine or jailbreak.Key features:
- Full Alpine Linux environment with package management
- x86/x86_64 instruction emulation on ARM
- System call translation layer
- Terminal emulator with TTY/PTY support
- Files app integration for file access
- No jailbreak required
What can I run on iSH?
What can I run on iSH?
iSH can run most command-line Linux programs that:See the Alpine Linux package database for available software.
- Are compiled for x86 or x86_64 architecture
- Don’t require kernel modules or special hardware
- Work within iOS security constraints
- Are available in Alpine Linux repositories or can be compiled from source
- Programming: Python, Node.js, Ruby, Perl, C/C++ compilers
- Text processing: vim, nano, sed, awk, grep
- Development tools: git, make, gcc, clang
- Scripting: bash/sh scripts, automation tools
- Utilities: curl, wget, ssh, rsync, tar
- Web servers: nginx, lighttpd (for local development)
Does it support all Linux programs?
Does it support all Linux programs?
No. iSH has several limitations due to emulation constraints and iOS restrictions:Programs that WON’T work:
- GUI applications (X11, Wayland) - iOS doesn’t support Linux graphics
- Programs requiring kernel modules (Docker, VirtualBox)
- Hardware-specific tools (direct hardware access blocked by iOS)
- Programs for ARM architecture only (must be x86/x86_64)
- Software requiring privileged operations iOS doesn’t allow
- Network tools requiring raw sockets (ping, traceroute) - iOS restrictions
- Multi-threading intensive apps - emulation overhead
- Programs requiring specific kernel versions or features
- Software with heavy system call usage - translation overhead
- Single-threaded command-line tools
- Interpreted languages (Python, JavaScript, Ruby)
- Text processing and scripting
- Development tools and compilers
- File manipulation utilities
How is performance?
How is performance?
Performance varies significantly based on the workload:Good performance:
- Text processing (sed, awk, grep)
- File operations
- Simple scripts and utilities
- I/O-bound operations
- Python/Node.js/Ruby scripts
- Compiling small programs
- Web servers for light development
- Git operations
- CPU-intensive computations (3-10x slower than native)
- Compiling large projects
- Heavy multi-threading
- Tight loops and number crunching
- x86 instructions must be emulated on ARM
- System calls require translation overhead
- Emulation uses threaded code interpretation, not native JIT compilation
- iOS background restrictions limit CPU usage
Can I run GUI applications?
Can I run GUI applications?
No, iSH does not support GUI applications. Here’s why:Some users run web-based IDEs (like code-server) and access them through Safari, providing a GUI-like experience within the browser.
- iOS doesn’t allow apps to run X11 or Wayland servers
- Linux GUI frameworks (GTK, Qt) can’t draw to iOS windows
- No VNC or remote desktop server (iOS restrictions)
- Terminal-only environment by design
- Run terminal-based programs (vim, nano, htop, etc.)
- Use text-based user interfaces (TUI)
- Run web servers and access via Safari (localhost)
- Use SSH to connect to remote GUI systems
Security and Privacy
Is my data safe?
Is my data safe?
Data isolation:
- iSH runs in an iOS sandbox with no access to other apps’ data
- Your files are stored in iSH’s container, separate from iOS
- Files app integration is optional and controlled by you
- Network access requires your permission
- iSH itself doesn’t collect or transmit personal data
- Packages you install may have their own privacy policies
- Network connections go through iOS network stack
- Crash reports (if enabled) go to Apple, not iSH developers
- Only install packages from trusted sources (Alpine repos)
- Be careful with scripts from unknown sources
- Use SSH keys instead of passwords when possible
- Don’t store sensitive data unencrypted
- Keep iSH updated for security fixes
- Can’t access other apps’ data
- Can’t modify system files
- Can’t run privileged operations
- Network access controlled by iOS
Does iSH require jailbreak?
Does iSH require jailbreak?
No! iSH is available on the App Store and requires no jailbreak.iSH achieves Linux compatibility through:
- Usermode emulation - No kernel modifications needed
- Syscall translation - Linux calls mapped to iOS APIs
- Sandboxed execution - Runs within iOS security model
Because iSH doesn’t require jailbreak, it has some limitations compared to jailbroken Linux environments. But it’s much safer and works on any iOS device.
Troubleshooting
How do I report bugs?
How do I report bugs?
If you encounter a bug or crash, follow these steps:See Contributing for detailed bug reporting guidelines.
Check existing issues
Search GitHub Issues to see if it’s already reported.
Gather information
Collect relevant details:For crashes:Include relevant output from dmesg in your report.Always include:
- iOS 12+: Settings → Privacy → Analytics → Analytics Data
- iOS 11: Settings → Privacy → Diagnostics and Usage
- Look for iSH crash logs
- Steps to reproduce
- Expected vs. actual behavior
- iSH version (App Store or TestFlight build)
- iOS version and device model
Create an issue
Open a new issue on GitHub with all the information from step 2.Use a clear, descriptive title like “App crashes when running git clone” instead of “Crash bug”.
Where can I get help?
Where can I get help?
Several resources are available:For quick questions:
- Discord server - Real-time community help
- This FAQ - Common questions and answers
- Wiki - Community documentation
- iSH documentation - Official technical docs
- GitHub Issues - Report bugs with details
- Discord development channels
- GitHub Discussions
- Source code and comments
Why isn't package X working?
Why isn't package X working?
If a package doesn’t work, it could be due to:1. iOS restrictionsiOS blocks raw sockets for security. Many network tools won’t work.2. Missing dependencies3. Architecture mismatch
Some packages may only be available for ARM, not x86.4. Emulation limitations
Programs using unimplemented system calls or kernel features may fail.5. Configuration needed
Some programs require configuration files or environment setup.Debugging steps:
- Run the program and note the error
- Check
dmesgfor system call failures - Enable logging (see Logging)
- Search GitHub Issues for similar problems
- Ask on Discord with error details
iSH is running slow, how can I speed it up?
iSH is running slow, how can I speed it up?
Several factors affect performance:iOS background restrictions:Better performance tips:
- iOS throttles background apps heavily
- Keep iSH in foreground for full performance
- Disable Low Power Mode for better CPU access
- Prefer interpreted languages (Python, Node) over compiled loops
- Use built-in shell commands when possible
- Avoid CPU-intensive computations
- Keep package count minimal
- Use incremental builds (make -j1 instead of -j8)
- “Performance tuning” sysctls (not implemented)
- Kernel parameters (iOS kernel not configurable)
- Overclocking (not possible on iOS)
- Use remote servers via SSH for compilation
- Use cloud IDEs for development
- Run compute tasks on a desktop, use iSH for light work
Usage Questions
How do I access iOS files from iSH?
How do I access iOS files from iSH?
iSH integrates with iOS Files app through a File Provider extension:From iOS to iSH:
- Open Files app on iOS
- Look for “iSH” in Locations
- Browse and copy files to iSH filesystem
- Files appear in iSH’s home directory or chosen location
- Create/move files in iSH to a location you want to share
- Open Files app
- Navigate to iSH location
- Copy, share, or open files with iOS apps
File Provider integration may have some limitations. For large file transfers, consider using cloud storage or network transfers.
Can I run iSH in the background?
Can I run iSH in the background?
Limited background execution:iOS heavily restricts background processing for all apps, including iSH:While screen/tmux preserve your terminal session, iOS will still suspend the process. They’re useful for resuming work, not true background execution.Best practices:
- Apps suspend after a few minutes in background
- CPU is throttled when not in foreground
- Network connections may be terminated
- Timers and background tasks are limited
- Long-running scripts will pause when you switch apps
- Downloads may stop in background
- Background compilation will be very slow or suspended
- Keep iSH in foreground for long tasks
- Use cloud servers for background jobs
- Break work into shorter tasks
- Disable Auto-Lock: Settings → Display & Brightness → Auto-Lock → Never
How do I upgrade iSH?
How do I upgrade iSH?
Upgrading the iSH app:App Store version:Upgrading Alpine version:
iSH comes with a specific Alpine version. To upgrade Alpine itself:
- Open App Store
- Go to Updates tab
- Update iSH when available
- Open TestFlight app
- Updates install automatically or tap Update
Can I SSH into iSH?
Can I SSH into iSH?
No inbound SSH - iOS doesn’t allow apps to listen on network ports for incoming connections from outside the device.What you CAN do:1. SSH out from iSH:2. Local connections only:
You can run SSH server for localhost connections:But iOS restrictions prevent external devices from connecting to your iPhone’s SSH server.Alternatives:
- Use SSH to connect to a real server from iSH
- Use Mosh (mobile shell) for better mobile connections
- Use cloud-based development environments
Still Have Questions?
If your question isn’t answered here:Join Discord
Ask the community in real-time
Check the Wiki
Browse tutorials and guides
Search GitHub Issues
See if others have asked the same question
Read the Docs
Explore technical documentation