eriklangille/clauntty

iOS Terminal with native Claude Code support

Clauntty – 세션 유지 및 GPU 가속 렌더링을 지원하는 iOS SSH 터미널

소개

  • iPhone이나 iPad에서 SSH 연결을 열 수 있는 iOS 네이티브 앱입니다.
  • rtach라는 소형 서버 측 데몬을 사용하여 앱이 백그라운드로 전환되거나, 네트워크가 끊기거나, 기기가 재시작되어도 터미널 세션을 유지합니다.
  • 터미널 화면은 Ghostty 렌더러와 Metal 기술을 통해 렌더링되어 부드러운 60fps 스크롤과 완벽한 Unicode/이모지 지원을 제공합니다.

중요한 이유

  • 일반적인 모바일 SSH 클라이언트는 연결이 끊기면 원격 셸과의 연결이 종료됩니다. Clauntty의 자동 세션 유지 기능 덕분에 원격 호스트에서 tmux나 screen을 사용하지 않아도 중단된 지점에서 정확하게 작업을 재개할 수 있습니다.
  • GPU 기반 렌더링을 통해 iOS에서는 보기 드문 데스크톱 터미널 수준의 반응성을 제공합니다.

주요 구성 요소

구성 요소 역할 출처
GhosttyKit Metal 기반 터미널 에뮬레이터 (렌더링, 테마) 오픈 소스 Ghostty 프로젝트의 포크
rtach 원격 호스트에서 실행되며 PTY 출력을 캡처하고 재연결 시 스트리밍하는 소형 데몬 작성자의 커스텀 리포지토리
libtailscale / TailscaleKit WireGuard 기반 메시 네트워크 내장, VPN 설정 없이 암호화된 SSH 연결 지원 Tailscale의 오픈 소스 libtailscale
SwiftNIO-SSH 앱에서 사용하는 순수 Swift SSH 클라이언트 구현 Apple의 SwiftNIO 생태계

작동 원리 (개요)

  1. 앱은 rtach 바이너리를 실행 중인 원격 호스트로 SSH 연결을 엽니다.
  2. 사용자 입력은 rtach frames로 패키징되어 SSH 채널을 통해 전송됩니다.
  3. rtach는 입력을 원격 PTY에 쓰고 사용자의 셸을 실행한 뒤 출력을 스트리밍하여 반환합니다.
  4. 앱은 스트리밍된 출력을 수신하여 RtachClient로 파싱한 후, Metal 렌더링을 위해 GhosttyKit에 전달합니다.
  5. 네트워크가 끊겨도 rtach는 PTY를 유지합니다. 앱이 재연결되면 세션 상태(스크롤백, 커서 위치)가 자동으로 복원됩니다.

빌드 및 실행

  • Xcode 15+, iOS 17+, Zig 0.15.2+, Go, 그리고 Apple 개발자 계정(개인 테스트용 무료 계정 가능)이 필요합니다.
  • 이 리포지토리는 3개의 형제 리포지토리(ghostty, rtach, libtailscale)를 포함하는 monorepo입니다. 빌드 단계:
    1. Zig를 사용하여 GhosttyKit 프레임워크를 빌드합니다.
    2. rtach Linux 바이너리를 컴파일(교차 컴파일)하여 앱 번들에 복사합니다.
    3. Go와 libtailscale 소스를 사용하여 TailscaleKit xcframework를 빌드합니다.
    4. 제공된 sim.sh 스크립트(Facebook의 idb 도구를 래핑)를 사용하여 iOS 시뮬레이터에서 앱을 실행하거나, xcodebuild를 사용하여 실기기용으로 빌드합니다.

UI 기능

  • 스와이프 제스처를 지원하는 멀티 탭 인터페이스.
  • Esc, Ctrl, 화살표 키 및 일반적인 단축키를 제공하는 키보드 액세서리 바.
  • 길게 눌러 텍스트 선택, 복사/붙여넣기, 앱 내 브라우저를 통한 포트 포워딩 지원.
  • SSH 키 인증 (Ed25519) 및 간단한 연결 프로필 관리자.
  • 20개 이상의 사전 설치된 컬러 테마 (Dracula, Monokai, Solarized 등).

대상 사용자

  • iPhone/iPad에서 서버에 SSH로 접속하고 중단 후에도 세션을 유지하고 싶은 개발자.
  • 웹 기반 콘솔보다 네이티브 고성능 터미널을 선호하는 시스템 관리자.
  • 개인정보 보호를 최우선으로 하는 SSH 클라이언트를 찾는 사용자 (텔레메트리 없음, 계정 불필요).

제한 사항

  • 원격 호스트에 rtach 바이너리가 설치되어 있어야 합니다. 앱이 첫 연결 시 자동 배포를 시도하지만 Linux 기반 서버가 필요합니다.
  • 빌드 과정이 복잡합니다. Zig와 Go 구성 요소를 컴파일하고 Xcode 서명을 관리해야 합니다.
  • 현재 iOS 전용이며 Android 버전은 없습니다.

향후 계획

  • 리포지토리를 포크하고 번들 ID/팀 ID를 변경하여 자신만의 버전을 배포하세요.
  • Ghostty 렌더러 개선이나 테마 추가에 기여하세요.
  • 파일 전송이나 다중 세션 등의 기능을 위해 rtach 프로토콜을 확장하세요.

위의 모든 정보는 프로젝트의 README에서 직접 가져왔습니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트