# remux

remux is a native iOS client for remote tmux workspaces. Rather than shipping a generic SSH terminal and leaving you to drive tmux through `Ctrl-b` on a software keyboard, it maps tmux's session, window and pane model onto iPhone gestures, and adds the things a phone can do that a terminal cannot — previewing files and running dev servers from the terminal output, and uploading photos with markup.

## How it is put together

The terminal core is [Ghostty](https://github.com/ghostty-org/ghostty), consumed as a prebuilt `GhosttyKit` framework, which is why remux inherits Ghostty's rendering and its default theme (see [[gpu-accelerated-terminal]] for what that core is doing). SSH is [Citadel](https://github.com/orlandos-nl/Citadel).

Connections are direct: the app talks to your server with no relay in the middle and no account to create. Passwords and private keys live in the iOS Keychain, and trusted host keys are remembered across connections.

## What the mobile-first part buys you

tmux sessions can be attached to or started fresh. Windows are a swipe apart; panes are picked from a bottom sheet showing live previews, and can be split, zoomed or closed from there.

The shortcut palette runs saved commands with a tap, which is the part that most directly attacks the software-keyboard problem. It ships with starter sets for the shell, [[claude-code]] and Codex, and takes your own commands organised into groups.

Two long-press behaviours turn terminal output into something interactive. Long-pressing a path in the output previews the file — code, images, PDFs or HTML pages. Long-pressing a localhost URL opens the dev server running on the remote machine, hot reload and WebSockets included, which means a phone can watch a frontend rebuild on a server it is SSHed into.

Attachments go the other direction: photos and files upload to the server, with markup available for images, and the remote path is typed at the prompt for you.

Cursor placement, which is the other thing a touchscreen is bad at, is handled by holding the space bar or long-pressing in the terminal and then dragging.

Themes are Ghostty default, Catppuccin Mocha and Catppuccin Latte, with adjustable font size.

## Getting it

The distribution channel is a public TestFlight beta at [testflight.apple.com/join/fHqG1ruE](https://testflight.apple.com/join/fHqG1ruE) — there is no App Store release and no GitHub release artifact.

Building from source needs Xcode with the iOS 18 SDK and XcodeGen:

```
scripts/fetch_ghosttykit.sh
xcodegen generate
xcodebuild build \
  -project Remux.xcodeproj \
  -scheme Remux \
  -destination 'generic/platform=iOS Simulator'
```

The fetch script pulls a prebuilt GhosttyKit; building that yourself instead means going through the separate [remux-ghostty](https://github.com/h3nock/remux-ghostty) fork.

## Limitations

iOS only, and iPhone-shaped specifically — the design goal is stated as feeling natural on iPhone, and there is no macOS, iPadOS-specific, or Android story. Everything about the workflow assumes a persistent remote machine you already have SSH access to; remux is a client and provides no server side of its own.

## Status and watchlist

MIT, 212 stars, two contributors, repository created 2026-04-21 and actively pushed. No tagged releases exist — TestFlight is the only binary channel, which puts availability at the mercy of Apple's beta program and the author's willingness to keep re-submitting builds.

Added to [[toolbox/watchlist]] on the single-platform and beta-only grounds. The interesting question is whether the file/localhost preview ideas survive into a shipped App Store product, or whether this stays a beta that a handful of people run from Xcode.
