gPTY is een desktopapplicatie en multi-PTY emulator die is ontwikkeld met Godot en Rust. Het programma biedt een aanpasbaar tegelgrid voor terminals, code-editors en bestandbomen, en is specifiek ontworpen om interactie met AI-agents te vergemakkelijken.
De belangrijkste functionaliteiten zijn:
- AI & Automatisering: Via een JSON-RPC IPC-socket en een MCP-server (Model Context Protocol) kunnen AI-agents panelen aanmaken, tekst injecteren en output observeren zonder TUI-scraping.
- Concept Engine: Gebruikt RegEx-triggers om specifieke informatie uit terminal-output te filteren en deze door te sturen naar andere panelen.
- Observability: Bevat een Reasoning-paneel voor agent-lifecycle-events en een Inspector-paneel voor private Q&A.
- Technische Stack: Maakt gebruik van
portable-pty voor cross-platform compatibiliteit, tokio voor async runtime en alacritty_terminal voor de rendering van het grid.
- Persistentie: Werkruimtes, instellingen en scrollback-geschiedenis worden opgeslagen in SQLite/JSON.
De applicatie is beschikbaar als standalone binary voor Windows, macOS en Linux en is gelicentieerd onder GPLv3.
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
| Component | Keuze | Ratio |
| PTY library | portable-pty | Cross-platform (Linux /dev/ptmx + Windows ConPTY) met een enkele API. |
| ANSI parsing | vte crate | Snelle Rust ANSI state machine. |
| Async runtime | tokio | Per-terminal taken; channel-driven capture state machine. |
| I/O threading | Dedicated std::thread per PTY | Voorspelbare blokkerende reads; koppelt naar tokio via mpsc. |
| Concept capture | Rust regex over parsed LineParser output | Lineaire matching-tijd (ReDoS-veilig); legt raw bytes van de buffer vast voor getrouwe weergave in het grid. |
| Grid rendering | alacritty_terminal | Volledige DEC STD 070 grid state machine; geeft arrays door aan Godot _draw(). |
| Godot bridge | gdext 0.5 | Native GDExtension voor Godot 4.7+. |
| Rust edition | 2024 | Vereist 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:
- 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.
- 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.
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
| Component | Keuze | Ratio |
| PTY library | portable-pty | Cross-platform (Linux /dev/ptmx + Windows ConPTY) met een enkele API. |
| ANSI parsing | vte crate | Snelle Rust ANSI state machine. |
| Async runtime | tokio | Per-terminal taken; channel-driven capture state machine. |
| I/O threading | Dedicated std::thread per PTY | Voorspelbare blokkerende reads; koppelt naar tokio via mpsc. |
| Concept capture | Rust regex over parsed LineParser output | Lineaire matching-tijd (ReDoS-veilig); legt raw bytes van de buffer vast voor getrouwe weergave in het grid. |
| Grid rendering | alacritty_terminal | Volledige DEC STD 070 grid state machine; geeft arrays door aan Godot _draw(). |
| Godot bridge | gdext 0.5 | Native GDExtension voor Godot 4.7+. |
| Rust edition | 2024 | Vereist 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:
- 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.
- 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.