Self-hosted service
kitknox/rootshell avatar
kitknox/rootshell

rootshell is a free, Metal-accelerated terminal for Apple platforms

rootshell - The terminal, reimagined for Apple platforms

786 stars67 forksSwiftMIT

At a glance

What is it?
rootshell is an MIT-licensed terminal emulator for iPhone, iPad, Vision Pro and Mac, with rendering powered by libghostty, native SSH with post-quantum key exchange, Secure Enclave key storage, a tmux control mode, a mosh-compatible roaming protocol and an inbox that tracks coding agents. It is free with no ads or subscriptions, and the source lives in this repository while the builds ship through the App Store, TestFlight and Homebrew.
Who is it for?
Developers who want a real terminal on an iPad or an iPhone, including SSH into their own machines, should try rootshell, because it is free with no ads and it takes the platform seriously, with Metal rendering, tmux control mode, a roaming protocol and Secure Enclave key storage rather than a phone keyboard emulator.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository received new commits within the last day.
What is it written in?
Mainly Swift, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

A terminal that treats an iPad as a computer

rootshell is described as the terminal, reimagined for Apple platforms, and the About section describes it as a free, Metal-accelerated terminal emulator for iPhone, iPad, Vision Pro, and Mac.

The technical centre of the project is libghostty, the rendering core of the Ghostty terminal, which rootshell uses for GPU-accelerated rendering. That single decision explains most of the feature list that follows, because a real terminal renderer on Apple hardware brings its own expectations about scrolling, selection, colour and performance.

The project is MIT licensed and the repository contains the app source. The README is explicit about what the repository is for: it is where to report bugs, request features, ask questions about functionality and contribute improvements. It is not a build-your-own distribution pipeline, and the apps are shipped as finished binaries.

The scale of the feature set is worth registering before diving in, because it is unusually broad for a terminal. The About paragraph lists GPU-accelerated rendering powered by libghostty, native SSH with post-quantum key exchange, Secure Enclave key storage, VPN tunneling, HTTP and HTTPS traffic capture, high performance HEVC screen sharing, an agent inbox that tracks coding agents and long-running commands across sessions, end-to-end encrypted push notifications and coding-agent hooks, a built-in file browser and native git client, a voice-controlled AI agent, cloud provider integration for AWS, Azure, Linode and DigitalOcean, Kubernetes node debugging, native tmux and herdr control modes, and Rootshell Roam, a mosh-compatible and tssh, which is QUIC plus KCP, mobile terminal protocol with network roaming and session persistence.

That last group of features is the unusual part. A terminal emulator that also carries a mobile terminal protocol, a session-roaming layer and an agent inbox is not a thin wrapper around a PTY, and the repository layout reflects that with separate targets for the VPN tunnel extension, the push notification service, the session activity widget and the helper tool.

Four ways to install it, one of them a Homebrew cask

rootshell is completely free with no ads, subscriptions or in-app purchases, and there are several distribution routes.

For macOS there is a Homebrew cask:

bash
brew tap kitknox/rootshell
brew install --cask rootshell

There is also a direct download for a standalone macOS build, a tarball published on the project's site, which is the route that does not involve the App Store at all.

For iPhone and iPad the app is in the App Store, and there is a separate App Store listing for China, which is a detail that only matters in one market and is worth noticing because it says the project takes regional distribution seriously rather than relying on a single global listing.

The beta channels are TestFlight, and they cover two things: visionOS, which is listed as beta, and a sandboxed macOS build, also listed as beta. A sandboxed macOS build of a terminal emulator is a non-trivial thing to ship, because a terminal wants to spawn processes, open sockets and reach the file system, and the sandbox gets in the way. The standalone macOS download exists precisely because that constraint has a cost.

So the practical choice is between a free standalone macOS build with fewer restrictions, a sandboxed macOS build in beta on TestFlight, and the iOS and iPad apps from the App Store. The README's own link list points at a website, the App Store listings for both regions, a changelog, the TestFlight beta and the macOS download.

Rendering details that show how much time went into it

The rendering section is where the project shows what a terminal emulator for touch devices actually has to solve, and the level of detail is a good sign of maturity.

There are more than 450 curated colour themes with live preview, favourites and per-tab overrides, plus custom themes with a full colour picker, duplication of built-in themes and import of Ghostty theme files. The interface itself is theme aware and tints the whole app, and day and night themes switch automatically based on sunrise and sunset at your location.

Touch and pointer behaviour gets its own attention. A vertical tab sidebar with search, keyboard navigation, drag to reorder, context menus on every row and pinning as a docked resizable column, and automatic tab sections for local shells, remote hosts collapsed by subnet, networks, Kubernetes and cloud sessions, and tmux gateways. Tabs can be dragged between windows without disconnecting on iPad and Mac, an interactive tab swipe moves between tabs with a live carousel and both terminals stay live during the gesture, and Tab Exposé shows live previews of every tab in the current group or project, opening on the session's own tabs for herdr, tmux or zellij attachments with live coloured previews of every pane.

Tab hover previews show a live thumbnail in a glass card as you move between tabs, with pinch to resize, on iPad and Mac.

The rendering details are specific too. Pixel-smooth scrollback uses sub-cell scroll offsets with ProMotion 120 Hz rendering on iPhone, and an HDR brightness boost drives the terminal brighter on HDR-capable displays through a floating HUD, clamped to display headroom. Battery controls cap the refresh rate at Auto, Adaptive, 60 or 30 Hz with automatic throttling under Low Power Mode or thermal pressure. There are seven animated cursor modes. Nerd Fonts are built in, TTF and OTF fonts can be imported with live preview, URLs in terminal output are clickable with Cmd+click, and the Visor is a Quake-style drop-down terminal summoned by a global hotkey that joins all Spaces and floats above other apps on the standalone macOS build.

tmux as native tabs, and the roaming protocol on top

Two integrations set rootshell apart from a general purpose terminal, and both are the kind of thing that changes how you work rather than what your screen looks like.

The first is tmux control mode. You attach with tmux -CC, and tmux windows become native tabs and tmux panes become native splits, with native copy and paste, scrollback search and a per-window font size. There is a sessions dashboard that lists every session with window counts and live tappable previews, opened with the keyboard shortcut, where you can switch, create, rename or kill sessions. Window and pane administration is available from the native interface: create, rename, move, link and unlink windows, and zoom, swap, break and move panes.

That is a different proposition from embedding a terminal and leaving tmux inside a scrollback buffer. The panes are native splits, which means they behave like the app's own layout.

The second is Rootshell Roam, a mosh-compatible and tssh, which is QUIC plus KCP, mobile terminal protocol with seamless network roaming and session persistence. The point of a mosh-style protocol is that the session survives the network changing under it, which is exactly the problem when your terminal is running on a phone and you walk between cellular and Wi-Fi.

Around those sit the networking features: native SSH with post-quantum key exchange, Secure Enclave key storage for credentials, VPN tunneling through a dedicated extension, HTTP and HTTPS traffic capture, and high performance HEVC screen sharing for showing a session from one device to another.

There is also a herdr control mode alongside tmux, and a built-in file browser and native git client, so some of the tasks that would be a session manager, a file manager and a git GUI elsewhere are folded into the same application.

The agent inbox, and the hooks around coding agents

The feature list includes a category that would have been strange in a terminal emulator five years ago: an agent inbox that tracks coding agents and long-running commands across sessions, together with end-to-end encrypted push notifications and coding-agent hooks, and a voice-controlled AI agent.

The mechanism follows from the device. A coding agent or a long build running on a machine you are not holding is a thing that finishes while you are elsewhere, so you need to be told. End-to-end encrypted push notifications are the delivery mechanism, and the agent inbox is the place where the notifications land, showing what is running and what finished, across sessions.

The coding-agent hooks are the integration surface for tools that drive the terminal. The README does not describe the hook interface in detail, and it points to the project's website for full feature details, so the exact contract between a coding agent and rootshell is something to look up in the documentation rather than in the repository.

The rest of the same paragraph is more conventional but still broad for a terminal. Cloud provider integration for AWS, Azure, Linode and DigitalOcean, and Kubernetes node debugging, mean the application can reach into an infrastructure context rather than only into a shell. The repository has a wasm directory and a CoreWLANPlugin directory, the latter being a macOS plug-in for CoreWLAN, which is how an iOS application can read Wi-Fi network details.

There is a SessionActivityWidget target and a PushNotificationService target, so the agent and long-running-command awareness is implemented in separate components rather than being bolted into the terminal view.

Where rootshell is the wrong tool

The limits are obvious and worth stating plainly.

First, it is Apple only. The whole application is built on Apple frameworks, the distribution channels are the App Store, TestFlight and a macOS cask, and there is no Linux or Windows build. If you need a terminal on those platforms, there are established terminals and this is not one of them.

Second, on iOS and iPadOS the application runs inside the platform's sandbox. The README lists a sandboxed macOS build as a beta, and the existence of a standalone macOS download alongside it is the clearest sign that the sandbox is a real constraint. A terminal that wants to spawn processes, watch the file system and keep sessions alive is asking for a lot of an app sandbox, and the project has answered that with two distribution paths rather than one.

Third, the repository is not the product. You are not building this from source and deploying it; you are taking a signed binary from the App Store or a tarball. That is a reasonable model for a consumer application, and it is the opposite of what you want if your requirement is to audit the binary, fork the terminal, or run it on a managed Mac where the App Store is not an option.

Fourth, the feature list is large relative to the documentation in the repository. The README says to visit the website for full feature details, screenshots and documentation, and the repository itself is a set of Xcode targets, bundles and extension directories rather than a documented toolkit. If you are evaluating a specific integration, expect to read the website and the issue tracker rather than the source tree.

On maintenance, the repository is not archived and the last push was on 2026-10-20, with no GitHub releases, so the changelog and the App Store build history are the version record. The MIT licence is in the root, and THIRD_PARTY_NOTICES.md sits alongside it, which is the arrangement you would expect for a project that embeds libghostty and ships VimRuntime.bundle.

Editorial conclusion

Developers who want a real terminal on an iPad or an iPhone, including SSH into their own machines, should try rootshell, because it is free with no ads and it takes the platform seriously, with Metal rendering, tmux control mode, a roaming protocol and Secure Enclave key storage rather than a phone keyboard emulator. It is the wrong tool if you are not in the Apple ecosystem, and it is the wrong tool if you need a terminal on Linux or Windows, since the entire codebase is built on Apple frameworks and app extensions. Before adopting it for daily work, note that the macOS standalone build is the direct download route, the sandboxed build is still in beta, and the app is distributed through the App Store rather than built from source, so the repository is where you report and contribute rather than where you deploy it.

Frequently asked questions

How do I install rootshell on macOS?

There is a Homebrew cask, with brew tap kitknox/rootshell followed by brew install --cask rootshell, and there is also a direct download of a standalone macOS build as a tarball from the project site. A sandboxed macOS build is available through TestFlight and is marked beta.

Is rootshell free, and does it have ads or in-app purchases?

The README states that rootshell is completely free with no ads, subscriptions or in-app purchases. The app is MIT licensed, with the source in this repository and the binaries distributed through the App Store, TestFlight and the macOS download.

What is the tmux control mode in rootshell?

You attach with tmux -CC, and tmux windows become native tabs and tmux panes become native splits with native copy and paste, scrollback search and a per-window font size. There is also a sessions dashboard with live previews and window and pane administration from the native interface.

Which platforms does rootshell run on?

iPhone, iPad, Vision Pro and Mac. The iPhone and iPad builds are in the App Store, with a separate listing for China, visionOS and the sandboxed macOS build are on TestFlight as betas, and there is a standalone macOS download plus a Homebrew cask.

Official sources

  1. Issues
  2. kitknox/rootshell on GitHub
  3. License: MIT
  4. README
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/kitknox-rootshell.svg)](https://hysenlabs.com/projects/kitknox-rootshell)

Was this useful?