gPTY - Een PTY-fundament gebouwd op Godot en Rust

Overzicht

  • PTY: Start en beheer onafhankelijke shell-sessies in een aanpasbaar tegelgrid. Ondersteunt volledige DEC STD 070 via alacritty_terminal, inclusief 16/256/true color, scrollback met regex-zoekfunctie en tekstselectie met wikkeling (wrapped text selection).
  • Publieke API: Beschikt over een JSON-RPC IPC-socket, een CLI (gpty new-pane, gpty inject, etc.) en een MCP-server. AI-agents, scripts en orchestrators kunnen de werkruimte aansturen via een gedocumenteerd en geversioneerd protocol.
  • Concept Engine: RegEx-triggers op de PTY-output leggen antwoorden vast en routeren deze naar aangrenzende panelen (zoals de code-viewer of Inspector). Gebruikers kunnen eigen triggers schrijven of de standaardinstellingen gebruiken. Concepten zijn uitsluitend bedoeld voor het vastleggen en weergeven van informatie; ze injecteren nooit input in een shell.
  • Agent Observability: Een Reasoning-paneel projecteert passief gedocumenteerde agent-lifecycle-events (OMP, uitbreidbaar). Een Inspector-paneel voert een private, tool-vrije Q&A-sessie uit. De observability is passief; gpty orchestreert nooit de staat van de agent.
  • Persistentie: Scrollback, instellingen, werkruimtes (benoemde tabsets) en profielen worden automatisch opgeslagen in SQLite/JSON en hersteld bij herstart. Er is een full-text zoekfunctie beschikbaar over de opgeslagen geschiedenis van elk paneel.
  • Cross-platform: Beschikbaar als standalone binaries voor Linux, macOS en Windows. Er is geen Godot- of Rust-toolchain nodig om de applicatie uit te voeren.
  • Documentatie: https://godot-pty.github.io/gpty/

Let op: Het overgrote deel van deze codebase, inclusief het meeste Godot UI-layout en de Rust (gpty-core) GDExtension-bridge, is gegenereerd met behulp van LLM's. Hierdoor kan de onderliggende code niet-idiomatische patronen en/of bugs bevatten.

Technische Componenten

ComponentKeuzeRatio
PTY libraryportable-ptyCross-platform (Linux /dev/ptmx + Windows ConPTY) met een enkele API.
ANSI parsingvte crateSnelle Rust ANSI state machine.
Async runtimetokioPer-terminal taken; channel-driven capture state machine.
I/O threadingDedicated std::thread per PTYVoorspelbare blokkerende reads; koppelt naar tokio via mpsc.
Concept captureRust regex over parsed LineParser outputLineaire matching-tijd (ReDoS-veilig); legt raw bytes van de buffer vast voor getrouwe weergave in het grid.
Grid renderingalacritty_terminalVolledige DEC STD 070 grid state machine; geeft arrays door aan Godot _draw().
Godot bridgegdext 0.5Native GDExtension voor Godot 4.7+.
Rust edition2024Vereist Rust >= 1.85.

Installatie & Gebruik

Standalone binaries (geen Godot-installatie vereist) zijn beschikbaar via GitHub Releases voor Linux, macOS en Windows.

Platformen en pakketten

  • Linux: gpty-v0.5.3-linux-x86_64.tar.gz — uitpakken; ./gpty-gui.sh start de GUI, ./gpty is de CLI.
  • macOS: gpty-v0.5.3-macos.zip — uitpakken, rechtermuisknop op de .app → Open; gpty ernaast is de CLI.
  • Windows: gpty-v0.5.3-windows-x86_64.zip — uitpakken; gpty-gui.exe start de GUI, gpty.exe is de CLI.

Verificatie

Elke release bevat een SHA256SUMS lijst. Controleer het gedownloade bestand voordat u het uitvoert:

  • Linux: sha256sum -c SHA256SUMS
  • macOS: shasum -a 256 -c SHA256SUMS
  • Windows: certutil -hashfile <asset> SHA256

Checksums detecteren corrupte of gemanipuleerde downloads; het zijn geen digitale handtekeningen. Release-artifacts zijn niet ondertekend (zie SECURITY.md).

Command Line Interface (CLI)

De gpty binary bestuurt een draaiende GUI via JSON-RPC IPC. Elke release bevat de CLI naast de GUI, die indien nodig automatisch wordt gestart (tenzij --no-daemon wordt gebruikt).

Zodra de GUI is gestart, maakt de CLI verbinding via een Unix socket ($XDGRUNTIMEDIR/gpty.sock op Linux, of de GPTY_SOCKET omgevingsvariabele):

# Controleren of de GUI draait
gpty version

# De gebundelde agent skill printen (voor coding agents die in een paneel draaien)
gpty --skill

# Een nieuw terminalpaneel aanmaken
gpty new-pane --pane-type terminal

# Lijst van alle actieve panelen
gpty list-panes

# Tekst sturen naar een paneel (bijv. paneel T1)
gpty inject T1 --text "echo hello"

# Een paneel sluiten
gpty kill-pane T1

# Benoemde layouts opslaan en laden
gpty layout save my-setup
gpty layout load my-setup
gpty layout list

# Beheer van de GUI-daemon
gpty daemon status
gpty daemon stop

# AI tool manifests genereren (GUI niet nodig)
gpty schema
gpty schema --format mcp

# Uitvoeren als MCP-server over stdio (GUI niet nodig)
echo '{"jsonrpc":"2.0","id":1,"method":"initialize"}' | gpty mcp

Voor alle subcommando's en vlaggen, gebruik gpty --help.

MCP-integratie

gPTY bevat een MCP (Model Context Protocol) server, zodat AI-agents en coding harnesses de werkruimte kunnen besturen. Het mcp.json bestand in de root van de repository is bedoeld voor automatische detectie:

{"mcpServers": {"gpty": {"command": "gpty", "args": ["mcp"]}}}
  • Direct: Door gpty mcp over stdio uit te voeren, wordt per CLI-subcommando een tool beschikbaar gesteld (bijv. new-pane, list-panes, kill-pane, focus-pane, inject, etc.).
  • Manifest: gpty schema --format mcp print het MCP tool manifest (JSON Schema), wat werkt zonder dat de GUI draait. Dit kan worden overgedragen aan agent-configuraties.

De tool-schema's worden gegenereerd vanuit dezelfde clap definities als de CLI, waardoor ze altijd in lijn blijven met de output van gpty --help.

Overige Informatie

  • Roadmap: Zie ROADMAP.md voor de volledige lijst met functies.
  • Beveiliging: Zie SECURITY.md voor het dreigingsmodel en het rapportageproces. Implementatieregels (zoals de ReDoS-visie van de Concept Engine, PTY-omgevingssanitatie en IPC-harding) staan in AGENTS.md.
  • Bijdragen: Zie CONTRIBUTING.md voor instructies over setup, build-commando's, testen en de pull request-procedure.
  • Changelog: Zie CHANGELOG.md voor de volledige geschiedenis van wijzigingen.

Licentie

gPTY is vrije software, gelicentieerd onder de GNU General Public License, versie 3 of later.

In LICENSE-EXCEPTIONS.md worden twee extra toestemmingen gegeven onder sectie 7 van die licentie, om het ecosysteem permissief te houden:

  1. Plugins, extensies en adapters hoeven niet onder GPLv3 te vallen. Alles wat werkt met gPTY via de CLI, JSON-RPC, MCP of event-interfaces (inclusief native paneeltypen) mag worden gelicentieerd onder Apache-2.0, MIT of andere voorwaarden naar keuze.
  2. Configuratie- en databestanden vallen niet onder copyleft. Profielen, werkruimtes, layouts, concepten en instellingen zijn eigendom van de gebruiker; de standaard .json bestanden die met gPTY worden meegeleverd, zijn Apache-2.0.

Copyright (C) 2026 Neil Pathare. gPTY wordt gedistribueerd in de hoop dat het nuttig zal zijn, maar absoluut zonder enige garantie en zonder aansprakelijkheid voor enig gebruik door eindgebruikers.