Présentation de gPTY et architecture de base

gPTY est une infrastructure PTY construite à l’intersection de Godot (moteur de jeu) et du langage Rust. Le noyau Rust, nommé gpty-core, agit comme pont GDExtension et expose une grille de panneaux configurable, chaque panneau pouvant accueillir un terminal, un éditeur de code ou un explorateur de fichiers. Cette architecture modulaire repose sur une communication inter‑processus (IPC) JSON‑RPC, ce qui permet à des agents externes d’interagir avec l’interface graphique sans dépendre du runtime Godot.

Gestion des PTY et fonctionnalités terminal

Chaque panneau terminal implémente le standard DEC STD 070 via la bibliothèque alacritty_terminal, offrant le support complet du mode 16, du mode 256 et du vrai couleur (true color). Le système conserve le scrollback dans une base SQLite, autorisant des recherches regex sur l’historique complet. La sélection de texte est gérée en mode « wrapped », évitant les ruptures de ligne abruptes. Ces capacités sont encapsulées dans une grille tiling redimensionnable, où chaque instance PTY fonctionne de façon indépendante, ce qui garantit l’isolation des sessions shell.

Interface de contrôle : JSON‑RPC, MCP et CLI

L’accès programmatique s’effectue via deux vecteurs : un socket Unix exposant le protocole JSON‑RPC et un serveur MCP (Model Context Protocol) capable de fonctionner sur stdin/stdout. Le client en ligne de commande gpty compile les mêmes schémas que le serveur grâce à la crate clap, assurant une cohérence stricte entre l’aide CLI et le manifeste MCP généré. Exemple d’utilisation :

# Lancer un nouveau panneau terminal
gpty new-pane --pane-type terminal
# Injecter du texte dans le panneau T1
gpty inject T1 --text "echo hello"
# Sauvegarder la disposition actuelle
gpty layout save my-setup

Ces commandes sont exécutées contre le socket $XDG_RUNTIME_DIR/gpty.sock sous Linux ou la variable d’environnement GPTY_SOCKET sur les autres OS. Le protocole MCP expose chaque sous‑commande comme un outil JSON‑Schema, ce qui simplifie l’intégration automatisée pour des agents IA ou des orchestrateurs de scripts.

Persistance, observabilité et extensibilité

Outre le scrollback, gPTY persiste les paramètres de session, les profils utilisateurs et les espaces de travail sous forme de fichiers SQLite ou JSON. Une recherche plein texte est disponible sur chaque historique sauvegardé, ce qui facilite le diagnostic ou le replay de sessions. Le moteur de concepts, déclenché par des expressions régulières sur la sortie PTY, capture les réponses et les redirige vers des panneaux adjacents (par ex. un inspecteur de code) sans jamais injecter d’entrée dans le shell, garantissant une séparation stricte entre observation et contrôle.

Le projet est distribué sous GPL‑v3, mais les extensions, plugins et configurations peuvent être licenciés sous des termes permissifs (Apache‑2.0, MIT, etc.), évitant la propagation du copyleft au-delà du cœur du produit. Les binaires autonomes pour Linux, macOS et Windows sont disponibles sans besoin d’installer Godot ou la chaîne d’outils Rust, ce qui simplifie le déploiement en environnement de production. Enfin, la majeure partie du code UI a été générée par des modèles de langage, ce qui introduit un risque de patterns non idiomatiques ou de bugs, comme indiqué dans le fichier SECURITY.md et le guide AGENTS.md qui détaillent les mesures de durcissement IPC, la désinfection des environnements PTY et les restrictions OSC 52.