
2026/09/12 1:03
Show HN: Godot と Rust を基盤としたマルチプレクサ(ターミナルペーンなど)
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
gPTY は、Godot エンジンと Rust プログラミング言語を基盤とした革新的な AI エージェント制御ツールであり、アプリケーションペイン(ターミナル、コード、ファイルツリー)に対してタイルグリッドを提供するとともに、独自の概念キャプチャーエンジンを実現します。このエンジンは RegEx トリガーを用いて AI の返信を隣接するペインにキャプチャー・ルーティングし、シェルセッションへの入力注入を厳格に防止します。プラットフォームは、完全な DEC STD 070 機能(vte/alacritty_terminal を通じた ANSI パーシング、スクロールバック、RegEx 検索)を備えた独立したシェル操作と、専用の Reasoning ペインおよび Inspector ペインによるエージェントの可視化をサポートします。
堅牢な公開 API は、JSON-RPC IPC ソケットとエージェントライフサイクルに対する標準化されたバージョン管理されたプロトコル制御を提供する MCP サーバーを含みます。システムは、スクロールバック、設定、ワークスペースを SQLite/JSON に自動保存し、全文検索を備えた永続性を提供します。コードベースの重要な部分は大規模言語モデル(LLM)によって生成されており、これにより非標準的なパターンが導入される可能性がありますが、プロジェクトは异步ランタイム用ライブラリとして tokio、Godot ブリッジ用ライブラリとして gdext 0.5 を利用しています。
デプロイは、ローカルに Rust や Godot のインストールを必要としない Linux、macOS、Windows 向けのクロスプラットフォームスタンドアローンバイナリを通じて簡素化されています(ただしビルドには Rust >= 1.85 が必要)。CLI は Unix ソケットを介した JSON-RPC を用いて GUI を制御し、
new-pane や inject などのコマンドをサポートします。プロジェクトは GNU General Public License version 3 またはそれ以降を採用しており、プラグインやエコシステムツールが MIT および Apache-2.0 など許諾的ライセンスを使用することを可能にする特定のライセンス例外を含んでいます。本文
gPTY: Godot と Rust に基づく PTY 基盤
Godot と Rust で構築されたPTY (Pseudo-Terminal) 基盤です。分割可能なグリッド上でターミナル、コードエディタ、ファイルツリーなどのペーンを配置でき、概念キャプチャエンジンに加え、AI エージェントや自動化ツールが TUI をスクレイピングせずにペーンを操作できるJSON-RPC/MCP 制御インターフェースを備えています。
概要
gPTY の主要な機能と特徴は以下の通りです。
- PTY (ターミナルエミュレータ)
- リサイズ可能な分割グリッド上で独立したシェルセッションを起動・管理します。
を介して完全なDEC STD 070 規格に対応しています。alacritty_terminal- カラーモード: 16/256/True カラー
- 機能: 正規表現検索付きスクロールバッファ、折り返しテキスト選択など。
- 公開 API
- JSON-RPC IPC ソケット: プロトコルを通じたワークスペース制御。
- CLI コマンド:
,gpty new-pane
などの直接操作。gpty inject - MCP サーバー: AI エージェント、スクリプト、オーケストレーター向けにドキュメント化されバージョン管理されたプロトコルを提供。
- 概念キャプチャエンジン
- PTY の出力に対する正規表現トリガーでリターンをキャプチャし、隣接するペーン(コードビューアなど)へルーティングします。
- デフォルトを使用するか、独自に記述することも可能。
- 重要: 概念は入力データをシェルに注入せず、あくまでキャプチと表示のみを行います。
- エージェントの観測可能性
- 推論ペーン: ドキュメント化されたエージェントのライフサイクルイベント(OMP など拡張性あり)を非投影的にプロジェクション。
- インスプレクターペーン: プライベートなツールなしの Q&A セッションを実行。
- 重要: gPTY はエージェントの状態をオーケストレーションせず、観測のみを行います。
- 永続化
- スクロールバッファ、設定、ワークスペース(命名タブセット)、プロファイルがSQLite/JSONに自動保存され、再起動時に復元されます。
- 全ペーンの保持履歴に対する全文検索も可能です。
- クロスプラットフォーム
- Linux、macOS、Windows 向けにスタンドアロンプライナリがあります。
- Godot や Rust ツールチェーンのインストールは不要です。
- ドキュメント: https://godot-pty.github.io/gpty/
注意: このコードベースの大部分(Godot の UI レイアウトや Rust の gpty-core GDExtension ブリッジ)は LLM を使用して生成されています。その結果、非標準的なパターンやバグが含まれている可能性があります。
コンポーネント選択の理由
各技術選定の理由は以下の通りです。
- PTY ライブラリ:
portable-pty- 単一の API でクロスプラットフォーム対応(Linux の
と Windows の ConPTY)。/dev/ptmx
- 単一の API でクロスプラットフォーム対応(Linux の
- ANSI パース:
vte クレート- 高速な Rust ANSI 状態機械。
- 非同期ランタイム:
tokio- 各ターミナルタスク、チャネル駆動型のキャプチャ状態機械のサポート。
- I/O スレッド管理: PTY ごとに専用の
std::thread- 予測可能なブロック読み取りを確保し、mpsc を介して tokio と連携。
- 概念キャプチャ: Rust レギュラーエクスプレッション
- パースされた LineParser 出力に対する線形時間(ReDoS セーフ)のマッチング。
- グリッド忠実な再生のために生バイトをバッファリング。
- グリッド描画:
alacritty_terminal- 完全な DEC STD 070 グリッド状態機械、配列を Godot の
に渡す。_draw()
- 完全な DEC STD 070 グリッド状態機械、配列を Godot の
- Godot ブリッジ:
gdext 0.5- Godot 4.7+ 向けのネイティブ GDExtension。
- Rust エディション: 2024
- Rust 1.85 以上を必要とします。
インストールと使用方法
Linux、macOS、Windows 向けのスタンドアロンプライナリ(Godot のインストール不要)は GitHub Releases に公開されています。
ダウンロードパッケージ一覧
| プラットフォーム | パッケージ名 | 使い方 |
|---|---|---|
| Linux | | 展開後、 で GUI 起動。 が CLI。 |
| macOS | | 展開し、 ファイルを右クリックして開く。横に配置された が CLI。 |
| Windows | | 展開後、 で GUI 起動。 が CLI。 |
チェックサム確認
各リリースには SHA256SUMS ファイルが付属し、ファイル転送中のデータ改ざんを検出するためにダウンロードしたファイルを必ず確認してください(デジタル署名は含まれていません)。
- Linux:
sha256sum -c SHA256SUMS - macOS:
shasum -a 256 -c SHA256SUMS - Windows:
certutil -hashfile <アセット> SHA256
詳細は SECURITY.md を参照してください。
CLI 使用方法
gpty バイナリは、JSON-RPC IPC を介して実行中の GUI を制御します。すべてのリリースバンドルには GUI の横に CLI も含まれています(デフォルトでは GUI 起動時に --no-daemon オプションにより非アクティブになります)。
GUI が起動済み(Godot からまたはリリースバイナリで)の場合、CLI は以下のソケットを通じて接続されます:
- Linux:
$XDG_RUNTIME_DIR/gpty.sock - 環境変数:
GPTY_SOCKET
コマンド一覧
# GUI が動作中か確認 gpty version # パッケージされたエージェントスキルを表示(ペーン内でのコーディングエージェント用) gpty --skill # 新しいターミナルペーンを生成 gpty new-pane --pane-type terminal # アクティブなすべてのペーンをリスト表示 gpty list-panes # レベル名(例:T1)でテキストをペーンに送信 gpty inject T1 --text "echo hello" # ペーンを閉じる gpty kill-pane T1 # 命名されたレイアウトの保存と読み込み gpty layout save my-setup gpty layout load my-setup gpty layout list # GUI デーモンを管理 gpty daemon status gpty daemon stop # AI ツールマニフェストを生成(GUI は不要) gpty schema gpty schema --format mcp # stdio 上で MCP サーバーとして実行(GUI は不要) echo '{"jsonrpc":"2.0","id":1,"method":"initialize"}' | gpty mcp
すべてのサブコマンドとフラグについては
gpty --help を参照してください。
MCP インテグレーション
gPTY は AI エージェントやコーディングハネスがワークスペースを制御できるようにする MCP(モデルコンテキストプロトコル) サーバーを提供します。リポジトリルートにある
mcp.json には自動発見のための宣言が含まれています:
{"mcpServers": {"gpty": {"command": "gpty", "args": ["mcp"]}}}
- 直接実行: stdio 上で
を実行すると、各 CLI サブコマンド(new-pane, list-panes, kill-pane, focus-pane, inject など)に対応するツールが公開されます。gpty mcp - マニフェスト生成:
は、エージェント設定への手渡し用に JSON スキーマを含む MCP ツールマニフェストを出力します(GUI の起動は不要)。gpty schema --format mcp
注釈: ツールのスキーマは CLI と同じ clap 定義から生成されるため (
)、crates/gpty-cli/src/commands/schema.rsに記載されている機能と乖離することはありません。gpty --help
ドキュメントと関連情報
- ロードマップ: 詳細な機能一覧については ROADMAP.md を参照してください。
- セキュリティ: 脅威モデル、報告プロセス、防御事項については SECURITY.md を参照してください。実装規則(ReDoS 対応策、PTY 環境のサニタイズ、IPC の強化など)は AGENTS.md に記載されています。
- コントリビュート: セットアップ手順、ビルドコマンド、テスト、プルリクエストのプロセスについては CONTRIBUTING.md を参照してください。
- バージョン履歴: 完全な履歴については CHANGELOG.md を参照してください。
ライセンス
gPTY は自由ソフトウェアであり、GNU General Public License バージョン 3 またはそれ以降 (GPLv3+) でライセンスされています(全文:LICENSE)。
では GPL の第 7 節の下に 2 つの特例を追加しており、エコシステム側の扱いを寛容なものとしています。LICENSE-EXCEPTIONS.md
特例内容
- プラグイン・拡張機能への適用除外
- プラグイン、拡張機能、アダプタには GPLv3 によるコピーレフト義務はありません。
- CLI、JSON-RPC、MCP、イベントインターフェースを通じて gPTY と連携するもの(ネイティブペーンタイプを含む)は、Apache-2.0、MIT、あるいは任意の他の条件でライセンスされ、gPTY と共に配布することができます。
- 設定ファイル・データファイルへの適用除外
- プロファイル、ワークスペース、レイアウト、概念、設定などのファイルにはコピーレフトが適用されません。
- これらはご自身の任意の条件でライセンス可能です(※ gPTY に同梱されるデフォルトの
ファイルは Apache-2.0 です)。*.json
Copyright (C) 2026 Neil Pathare.
gPTY は有用であると願って配布されますが、いかなる保証もなしであり、エンドユーザーの利用によるいかなる責任も負うものではありません。たとえ通常想定される商取引の適格性(MERCHANTABILITY)や特定目的への適合性(FITNESS FOR A PARTICULAR PURPOSE)といった暗黙の保証も含みません。詳細については GNU General Public License を参照してください。