eriklangille/clauntty

iOS Terminal with native Claude Code support

Clauntty – iOS SSH terminal with persistent sessions and GPU‑accelerated rendering

What it is

  • A native iOS app that lets you open SSH connections from your iPhone or iPad.
  • It keeps your terminal session alive even if the app is backgrounded, the network drops, or the device restarts, using a small server‑side daemon called rtach.
  • The terminal display is rendered with Metal via the Ghostty renderer, giving smooth 60 fps scrolling and full Unicode/emoji support.

Why it matters

  • Mobile SSH clients normally lose the remote shell when the connection is interrupted. Clauntty’s automatic session persistence means you can walk away and come back to exactly where you left off, without needing tmux or screen on the remote host.
  • GPU‑based rendering makes the experience feel as responsive as a desktop terminal, which is rare on iOS.

Key components

Component Role Origin
GhosttyKit Metal‑based terminal emulator (rendering, themes) Fork of the open‑source Ghostty project
rtach Small daemon that runs on the remote host, captures PTY output, and re‑streams it on reconnect Custom repo by the author
libtailscale / TailscaleKit Embedded WireGuard‑based mesh networking, enabling easy, encrypted SSH without manual VPN setup Tailscale’s open‑source libtailscale
SwiftNIO‑SSH Pure‑Swift SSH client implementation used by the app Apple’s SwiftNIO ecosystem

How it works (high‑level flow)

  1. The app opens an SSH connection to a remote host that runs the rtach binary.
  2. User input is packaged into rtach frames and sent over the SSH channel.
  3. rtach writes the input to the remote PTY, runs the user's shell, and streams the output back.
  4. The app receives the streamed output, parses it with RtachClient, and hands it to GhosttyKit for Metal rendering.
  5. If the network drops, rtach keeps the PTY alive. When the app reconnects, the session state (scrollback, cursor position) is replayed automatically.

Building & running

  • Requires Xcode 15+, iOS 17+, Zig 0.15.2+, Go, and an Apple developer account (free works for personal testing).
  • The repository is a monorepo that pulls in three sibling repos (ghostty, rtach, libtailscale). Build steps:
    1. Build the GhosttyKit framework with Zig.
    2. Compile rtach Linux binaries (cross‑compiled) and copy them into the app bundle.
    3. Build the TailscaleKit xcframework using Go and the libtailscale source.
    4. Use the provided sim.sh script (which wraps Facebook’s idb tool) to run the app in the iOS simulator, or build for a physical device with xcodebuild.

Features you’ll see in the UI

  • Multi‑tab interface with swipe gestures.
  • Keyboard accessory bar offering Esc, Ctrl, arrow keys, and common shortcuts.
  • Long‑press text selection, copy/paste, and built‑in port‑forwarding via an in‑app browser.
  • SSH key authentication (Ed25519) and a simple connection‑profile manager.
  • Over 20 pre‑installed color themes (Dracula, Monokai, Solarized, etc.).

Who might use it

  • Developers who need to SSH into servers from an iPhone/iPad and want their sessions to survive interruptions.
  • Sysadmins on the go who prefer a native, high‑performance terminal over web‑based consoles.
  • Anyone interested in a privacy‑first SSH client (no telemetry, no accounts).

Limitations

  • Requires the remote host to have the rtach binary installed; the app auto‑deploys it on first connection but you need a Linux‑style server.
  • Building the app is non‑trivial: you must compile Zig and Go components and manage Xcode signing.
  • Currently iOS‑only; no Android counterpart.

Where to go next

  • Fork the repo, change the bundle ID/team ID, and publish your own version.
  • Contribute improvements to the Ghostty renderer or add more themes.
  • Extend the rtach protocol for features like file transfer or multiplexed sessions.

All information above is taken directly from the project's README.

Related

  • Project
  • Project
  • Project
  • Project