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 Developerアカウント(個人テスト用には無料アカウントで可)が必要です。
- このリポジトリは、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接続し、中断後もセッションを維持したい開発者。
- Webベースのコンソールよりもネイティブで高性能なターミナルを好むシステム管理者。
- プライバシーを重視するSSHクライアントを求めるユーザー(テレメトリなし、アカウント不要)。
制限事項
- リモートホストに
rtachバイナリがインストールされている必要があります。アプリは初回接続時に自動デプロイを試みますが、Linuxベースのサーバーが必要です。 - ビルドは簡単ではありません。ZigとGoのコンポーネントをコンパイルし、Xcodeの署名を管理する必要があります。
- 現在はiOS専用です。Android版はありません。
今後の展望
- リポジトリをフォークし、バンドルID/チームIDを変更して独自のバージョンを公開してください。
- Ghosttyレンダラーの改善やテーマの追加に貢献してください。
- ファイル転送や多重化セッションなどの機能のためにrtachプロトコルを拡張してください。
上記のすべての情報は、プロジェクトのREADMEから直接引用しています。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト