Godot과 Rust 기반 멀티플렉서(터미널 패널 및 기타 기능)
요약
Godot과 Rust를 기반으로 구축된 gpty는 PTY 기능을 제공하며, 터미널, 코드, 파일 트리 등 다양한 패널을 위한 타일링 그리드를 구현했습니다. JSON-RPC/MCP 인터페이스와 컨셉 캡처 엔진을 통해 AI 에이전트가 스크래핑 없이도 작업 공간을 제어하고 관찰할 수 있게 합니다.
핵심 포인트
- Godot과 Rust 기반의 PTY로, 타일링 그리드에서 독립적인 셸 세션을 관리합니다.
- JSON-RPC/MCP를 제공하여 AI 에이전트가 구조화된 프로토콜로 작업 공간을 제어 가능합니다.
- 컨셉 엔진은 PTY 출력을 감지하고 이를 다른 패널로 라우팅하는 기능을 합니다.
- 크로스 플랫폼 독립 실행형 바이너리를 지원하며, 영구 저장 및 검색 기능도 제공합니다.
gPTY - Godot과 Rust를 기반으로 구축된 PTY입니다. 터미널, 코드, 파일 트리 등 다양한 패널을 위한 타일링 그리드를 제공하며, 컨셉 캡처 엔진과 JSON-RPC/MCP 제어 인터페이스를 통해 AI 에이전트와 자동화 도구가 TUI(Text User Interface)에서 스크래핑하는 방식 없이도 패널을 생성하고, 텍스트를 주입하며, 터미널의 출력을 관찰할 수 있게 합니다.
개요
<div align="center">
<img src="https://img.shields.io/badge/Built%20With:-gray" alt="Built With">
<img src="https://img.shields.io/badge/Gemini-8E75B2?logo=googlegemini&logoColor=white" alt="Gemini">
<img src="https://img.shields.io/badge/DeepSeek-4D6BFE?logo=deepseek&logoColor=white" alt="DeepSeek">
<img src="https://img.shields.io/badge/Claude-D97757?logo=claude&logoColor=white" alt="Claude">
-
PTY - 크기 조절 가능한 타일링 그리드에서 독립적인 셸 세션을 생성하고 관리합니다.
alacritty_terminal을 통해 완전한DEC STD 070기능을 지원합니다:16/256/true color, 정규 표현식 검색이 가능한 스크롤백, 텍스트 선택 감싸기(wrapped text selection) 등이 가능합니다. -
Public API - JSON-RPC IPC 소켓 + CLI (
gpty new-pane,gpty inject, …) + MCP 서버를 제공합니다. AI 에이전트, 스크립트 및 오케스트레이터가 문서화되고 버전 관리된 프로토콜을 통해 작업 공간을 구동합니다. -
Concept engine - PTY 출력에 대한 정규 표현식(RegEx) 트리거가 응답을 캡처하고 이를 인접 패널(코드 뷰어, Inspector 등)로 라우팅합니다. 직접 작성하거나 시각적 그래프 편집기(Settings → Concepts)에서 작성할 수 있으며, 기본값도 제공됩니다. 컨셉은 캡처 및 표시만 수행하며, 셸에 입력(input)을 주입하는 일은 절대 없습니다.
-
Agent observability - 추론 패널(Reasoning pane)은 문서화된 에이전트 생명주기 이벤트(OMP, 확장 가능)를 수동으로 투영합니다. Inspector 패널은 사적인 도구 없는 Q&A 세션을 실행합니다. 가시성 확보만 제공하며, gpty가 에이전트 상태를 오케스트레이션하지는 않습니다.
-
Persistence - 스크롤백, 설정, 작업 공간(이름 지정된 탭 세트), 프로필을 SQLite/JSON에 자동 저장하고 재시작 시 복원합니다. 각 패널의 영구 저장된 기록 전체 텍스트 검색 기능을 제공합니다.
-
크로스 플랫폼(Cross-platform) - Linux, macOS, Windows용 독립 실행형 바이너리 제공. 실행을 위해 Godot 또는 Rust 툴체인이 필요하지 않습니다.
-
문서화(Documentation) - https://godot-pty.github.io/gpty/
-
이 코드베이스의 대다수 부분, 여기에는 대부분의 Godot UI 레이아웃과 Rust (
gpty-core) GDExtension 브리지가 포함되는데, LLM을 사용하여 생성되었기 때문에 근본적인 코드가 비관습적 패턴이나 버그를 포함할 수 있습니다.
| Component | Choice | Rationale |
|---|---|---|
| PTY 라이브러리 | portable-pty | 단일 API로 크로스 플랫폼 지원 (Linux /dev/ptmx + Windows ConPTY) |
| ... |
설치 및 사용법
독립 실행형 바이너리(Godot 설치 불필요)는 Linux, macOS, Windows용으로 GitHub Releases에서 게시됩니다.
| Platform | Package |
|---|---|
| Linux | gpty-v0.5.5-linux-x86_64.tar.gz - 압축 해제 후, ./gpty-gui.sh로 GUI 시작, ./gpty가 CLI 기능 |
| ... | |
각 릴리스는 모든 에셋을 나열하는 SHA256SUMS 파일을 게시합니다. 실행하기 전에 다운로드한 파일을 확인하세요: |
sha256sum -c SHA256SUMS # Linux
shasum -a 256 -c SHA256SUMS # macOS
certutil -hashfile <asset> SHA256 # Windows
체크섬은 전송 중 손상되거나 변조된 다운로드를 감지합니다. 또한 각 에셋에는 빌드 출처 증명(build-provenance attestation)이 포함되어 있어 해당 에셋을 빌드한 워크플로우 실행에 바인딩됩니다:
gh attestation verify <asset> --repo godot-pty/gpty
이 바이너리들은 코드 서명(code-signed) 되어 있지 않습니다 (자세히는 SECURITY.md 참조).
CLI
gpty 바이너리는 JSON-RPC IPC를 통해 실행 중인 GUI를 제어하며, 모든 릴리스 번들은 이를 GUI 옆에 함께 제공하고 필요할 때 시작합니다 (--no-daemon 옵션 사용 시 비활성화). 소스에서 빌드하는 것(cargo build -p gpty, 또는 cargo build --workspace)은 CLI 자체를 작업할 때만 필요합니다.
GUI가 실행된 후(Godot 또는 릴리스 바이너리에서 시작), CLI는 유닉스 소켓($XDG_RUNTIME_DIR/gpty.sock는 Linux, 또는 GPTY_SOCKET 환경 변수)을 통해 연결됩니다:
# GUI가 실행 중인지 확인
gpty version
...
모든 하위 명령어와 플래그는 gpty --help를 참조하세요.
MCP 통합 (MCP integration)
gpty는 AI 에이전트 및 코딩 하네스(coding harnesses)가 작업 공간을 제어할 수 있도록 MCP(Model Context Protocol) 서버를 제공합니다. 리포지토리 루트에 있는 mcp.json 파일은 자동 검색을 위해 이를 선언합니다:
{"mcpServers": {"gpty": {"command": "gpty", "args": ["mcp"]}}}
- 직접 실행 (Direct): stdio를 통해
gpty mcp를 실행하면 CLI 하위 명령어별로 도구(tool)가 노출됩니다 (new-pane,list-panes,kill-pane,focus-pane,inject,pane-read,pane-status,pane-run,pane-wait,broadcast,layout-*,daemon-*,concept-*,version). - 매니페스트 (Manifest):
gpty schema --format mcp는 MCP 도구 매니페스트(JSON Schema, GUI 실행 여부와 무관하게 작동)를 출력하여 에이전트 설정에 전달할 수 있습니다.
도구 스키마는 CLI의 clap 정의와 동일한 곳에서 생성되므로 (crates/gpty-cli/src/commands/schema.rs), gpty --help와 불일치할 수 없습니다.
로드맵 (Roadmap)
전체 기능 목록은 ROADMAP.md를 참조하세요.
보안 (Security)
위협 모델(threat model), 보고 절차, 그리고 gpty가 보호하지 않는 영역에 대한 내용은 SECURITY.md를 참조하세요. 구현 규칙들 - Concept Engine의 ReDoS 방지 정책, PTY 환경 정제(sanitization), IPC 강화(hardening), OSC 52 제한 등 -은 AGENTS.md에 명시되어 있습니다.
기여 (Contributing)
설정 지침, 빌드 명령어, 테스트, 코드 스타일 및 풀 리퀘스트 프로세스는 CONTRIBUTING.md를 참조하세요.
변경 로그 (Changelog)
완전한 버전별 변경 사항과 이력은 CHANGELOG.md를 참조하세요.
라이선스 (License)
gPTY는 자유 소프트웨어이며, GNU General Public License, version 3 또는 그 이후에 따라 라이선스가 부여됩니다. 전체 내용은 LICENSE를 참고하세요.
LICENSE-EXCEPTIONS.md는 해당 라이선스 섹션 7에 두 가지 권한을 추가하여 에코시스템 측면의 허용성(permissive)을 유지합니다.
- 플러그인(Plugins), 확장 기능(extensions), 및 어댑터(adapters)는 GPLv3 라이선스를 따를 필요가 없습니다. gPTY의 CLI, JSON-RPC, MCP 또는 이벤트 인터페이스를 통해 작동하는 모든 것 — 네이티브 패널 유형을 포함하여 — 은 Apache-2.0, MIT 또는 사용자가 선택한 기타 조건으로 라이선스화할 수 있으며, 의무 없이 gPTY와 함께 배포될 수 있습니다.
- 설정 및 데이터 파일에는 카피레프트(copyleft)가 적용되지 않습니다. 프로필(Profiles), 작업 공간(workspaces), 레이아웃(layouts), 개념(concepts), 및 설정은 사용자가 원하는 대로 라이선스화할 수 있으며, gPTY와 함께 배포되는 기본
*.json파일은 Apache-2.0입니다.
Copyright (C) 2026 Neil Pathare.
gPTY는 유용하기를 바라며 배포되지만, 어떠한 보증도 하지 않으며 최종 사용자의 모든 사용에 대한 책임을 지지 않습니다. 상품성(MERCHANTABILITY) 또는 특정 목적 적합성(FITNESS FOR A PARTICULAR PURPOSE)에 대한 묵시적 보증조차 없습니다. 자세한 내용은 GNU General Public License를 참조하십시오.
AI 자동 생성 콘텐츠
본 콘텐츠는 HN Game Dev의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기