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 생태계 |
작동 원리 (개요)
- 앱은 rtach 바이너리를 실행 중인 원격 호스트로 SSH 연결을 엽니다.
- 사용자 입력은 rtach frames로 패키징되어 SSH 채널을 통해 전송됩니다.
- rtach는 입력을 원격 PTY에 쓰고 사용자의 셸을 실행한 뒤 출력을 스트리밍하여 반환합니다.
- 앱은 스트리밍된 출력을 수신하여 RtachClient로 파싱한 후, Metal 렌더링을 위해 GhosttyKit에 전달합니다.
- 네트워크가 끊겨도 rtach는 PTY를 유지합니다. 앱이 재연결되면 세션 상태(스크롤백, 커서 위치)가 자동으로 복원됩니다.
빌드 및 실행
- Xcode 15+, iOS 17+, Zig 0.15.2+, Go, 그리고 Apple 개발자 계정(개인 테스트용 무료 계정 가능)이 필요합니다.
- 이 리포지토리는 3개의 형제 리포지토리(
ghostty,rtach,libtailscale)를 포함하는 monorepo입니다. 빌드 단계:- Zig를 사용하여 GhosttyKit 프레임워크를 빌드합니다.
- rtach Linux 바이너리를 컴파일(교차 컴파일)하여 앱 번들에 복사합니다.
- Go와
libtailscale소스를 사용하여 TailscaleKit xcframework를 빌드합니다. - 제공된
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에서 직접 가져왔습니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트