top of page

Le multiplexeur de terminal gPTY utilise Godot pour repousser les limites de tmux

13 sept.
15 min de lecture

gPTY a publié un multiplexeur de terminal fonctionnel conçu avec Godot et Rust, bien qu’il ait commencé comme un projet d’apprentissage inspiré de tmux. Cette combinaison inhabituelle est importante, car gPTY ne se limite pas aux volets de terminal. Son développeur transforme l’application en un espace de travail graphique où les personnes et les agents de programmation IA peuvent partager des sessions de terminal observables.

Le projet est apparu sur Hacker News après une série rapide de versions ayant abouti à la version 0.5.3 le 10 septembre 2026. Il combine désormais des sessions de pseudo-terminaux indépendantes, des dispositions en mosaïque, un historique persistant, des affichages d’état des agents et une interface de contrôle programmable. Un pseudo-terminal, ou PTY, relie un programme interactif à un émulateur de terminal via une interface du système d’exploitation.

Cette portée place le multiplexeur de terminal gPTY dans une position à la fois délicate et intéressante. Il ne peut pas encore rivaliser avec tmux en tant qu’outil de session mature, et son développeur reconnaît ouvertement ses imperfections. Cependant, Godot offre à gPTY un canevas graphique qu’un multiplexeur uniquement textuel ne peut pas facilement reproduire.

Le multiplexeur de terminal gPTY a dépassé le stade de la démonstration de volets

Le changement immédiat est que gPTY présente désormais un espace de travail cohérent destiné aux agents, et non plus seulement une expérience Godot capable d’ouvrir plusieurs shells.

Le projet est parti d’une question simple : un moteur de jeu pouvait-il afficher des terminaux du système d’exploitation dans des panneaux redimensionnables ? Le développeur souhaitait acquérir davantage d’expérience avec Godot et Rust. Tmux a servi de point de référence pratique, car il permet déjà aux utilisateurs de diviser un terminal en volets.

Ce point de départ reste visible. Les utilisateurs peuvent créer des sessions shell indépendantes, diviser l’interface horizontalement ou verticalement, redimensionner les volets et restaurer des dispositions enregistrées. Pourtant, le dernier code source de gPTY expose également ces volets via une interface en ligne de commande, JSON-RPC et le Model Context Protocol.

JSON-RPC est un format structuré permettant d’appeler des opérations nommées avec des messages JSON. MCP est un protocole ouvert grâce auquel un système d’IA peut découvrir et invoquer des outils. Dans gPTY, les deux interfaces assurent un contrôle externe sur un espace de travail graphique en cours d’exécution.

Un agent ou un script peut demander un nouveau volet, répertorier les volets actifs, injecter du texte, inspecter la sortie du terminal, vérifier l’état des processus ou attendre un résultat correspondant. L’outil en ligne de commande et le serveur MCP tirent leurs schémas des mêmes définitions de commandes. Cette conception réduit le risque que les outils d’agent documentés divergent de l’interface CLI réelle.

La version 0.5.0, publiée le 3 septembre, a marqué l’orientation du projet vers ce que son développeur appelle un Agent Development Environment. La version 0.5.1 a ajouté un défilement persistant, une recherche plein texte dans l’historique, des espaces de travail nommés et des tests automatisés de l’interface des volets.

La version 0.5.2 a suivi avec la détection de l’état des agents et des événements de cycle de vie indépendants des adaptateurs. La version 0.5.3 s’est ensuite concentrée sur la sécurité, le comportement de rendu, la prise en charge de la souris et la résistance aux sorties de terminal bruyantes. Ce rythme de publication montre à quelle vitesse l’idée initiale de multiplexeur s’est élargie.

L’architecture sépare toujours les mécanismes du terminal de la présentation. Rust gère les processus PTY, analyse les séquences d’échappement, maintient les grilles de terminal et assure la communication asynchrone. Godot rend l’interface visible et organise les différents types de volets.

Le projet utilise portable-pty pour l’accès PTY multiplateforme et alacritty_terminal pour l’état du terminal. Il utilise également l’analyseur vte de Rust pour les séquences de contrôle ANSI. Godot reçoit des mises à jour structurées de la grille au lieu de tenter lui-même d’interpréter la sortie brute du terminal.

Cette séparation est centrale dans l’orientation du projet. Rust fournit le comportement du terminal et une surface de contrôle stable. Godot fournit un système de scènes capable de dessiner des interfaces qui vont au-delà des cellules de caractères.

Les agents de programmation IA donnent à l’expérience un cas d’usage plus pressant

La pression ne s’exerce pas principalement sur tmux lui-même. Elle concerne les espaces de travail graphiques pour agents qui cachent leur état interne derrière des interfaces figées.

Les agents de programmation en terminal fonctionnent de plus en plus aux côtés de compilateurs, d’exécuteurs de tests, d’outils de contrôle de version et de serveurs de développement. Un développeur peut garder un agent dans un shell tout en surveillant des journaux, en examinant des changements ou en effectuant une validation ailleurs.

Les multiplexeurs de terminal traditionnels gèrent déjà l’agencement des volets. Ils peuvent conserver plusieurs shells visibles et préserver les processus de longue durée après la déconnexion d’un utilisateur. Le modèle de session de tmux reste particulièrement utile pour les machines distantes, car les sessions peuvent être détachées puis rattachées ultérieurement.

Le problème le plus difficile est l’observabilité. Un agent peut passer plusieurs minutes à raisonner, à exécuter des outils ou à attendre une entrée, alors que son terminal n’expose qu’un flux de texte évolutif. Les logiciels externes réagissent souvent en analysant ce flux et en devinant ce que fait l’agent.

gPTY adopte une autre approche. Son API de volets peut renvoyer le texte du terminal, l’état des processus, le temps d’inactivité et des informations sur l’état de l’agent. Des événements de cycle de vie authentifiés peuvent indiquer si un agent pris en charge travaille, a terminé, est inactif ou demande une attention.

L’interface utilise plusieurs niveaux de détection, car tous les agents ne parlent pas le même protocole. Un événement authentifié direct fournit le signal le plus fort. Une séquence de contrôle de terminal déclarée en fournit un autre, tandis que des motifs de sortie prudents servent de solution de repli.

Ces états restent des fonctions d’affichage plutôt que des commandes d’orchestration. Le projet laisse délibérément les boucles d’agents et la gestion des sous-agents à des outils tels que Claude Code, Gemini CLI ou Oh My Pi. gPTY observe leur travail et fournit un environnement autour d’eux.

Cette frontière distingue un espace de travail pour agents d’un framework d’agents. gPTY ne décide pas de la prochaine tâche qu’un agent doit accomplir. Il expose des terminaux et des états afin qu’un humain ou une couche d’automatisation distincte puisse prendre cette décision.

Prenons le cas d’un développeur exécutant une tâche de programmation autonome. Un volet contient l’agent, un autre exécute les tests, un troisième affiche un fichier et un quatrième surveille un serveur de développement. L’espace de travail peut conserver ces volets et permettre à des outils approuvés d’inspecter leur état.

Le même agencement donne également à l’humain une surface visuelle partagée. Un test échoué peut rester visible à côté de la réponse de l’agent qui l’a provoqué. Le défilement persistant peut ensuite alimenter une base de connaissances consultable regroupant les décisions, les erreurs et les preuves de validation.

L’opportunité dépasse l’affichage d’un plus grand nombre de terminaux. Le travail intensif avec des agents crée de nombreux processus concurrents dont l’état compte, mais dont les sorties sont difficiles à coordonner de manière sûre. gPTY teste si une interface de bureau peut rendre cette activité intelligible sans retirer le contrôle aux outils sous-jacents.

C’est aussi pourquoi le calendrier du projet compte. Un simple clone de multiplexeur se heurterait à des décennies de comportements et d’habitudes d’utilisation accumulés autour de tmux. Une surface de contrôle visuelle pour les terminaux d’agents répond à un flux de travail plus récent, avec moins de conventions établies.

Godot transforme les cellules de terminal en espace de travail graphique

Le mécanisme principal ne repose pas uniquement sur les performances de Rust. Il réside dans la séparation entre un cœur de terminal et un moteur de jeu capable de rendre des éléments d’interface natifs.

Le multiplexeur de terminal gPTY maintient ses grilles de terminal dans Rust et envoie des mises à jour compactées vers Godot via GDExtension. GDExtension est l’interface native de Godot permettant d’intégrer des bibliothèques compilées sans modifier le moteur lui-même.

Un pont sans interface graphique possède la grille Rust de chaque terminal. Un nœud Godot Control interroge les cellules modifiées et les dessine dans l’application. Cela évite d’imposer l’analyse du terminal et la gestion de son état à la couche de présentation.

Ce choix introduit une surcharge qu’un multiplexeur textuel évite. Tmux n’a pas besoin d’un moteur de rendu de bureau pour diviser des grilles de caractères. Il fonctionne dans un émulateur de terminal existant et se concentre sur les sessions, les fenêtres, les volets et la continuité des processus.

Godot change ce qu’un volet peut devenir. Un volet ne doit pas rester un flux rectangulaire de cellules de terminal. Il peut devenir un visualiseur de code, une arborescence de fichiers, un inspecteur, un panneau d’état graphique ou un autre contrôle natif.

Le projet comprend déjà des concepts de terminal, de visualiseur de code, d’arborescence de fichiers, de raisonnement et d’inspecteur. Les possibilités prévues incluent des volets vidéo et de graphes de nœuds visuels, bien que ces idées n’aient pas encore été publiées. Elles doivent être considérées comme une orientation plutôt que comme des capacités actuelles.

C’est le pari central derrière l’utilisation de Godot. Un moteur de jeu apporte un graphe de scène, la gestion des entrées, l’animation, des fréquences d’images configurables et un rendu bidimensionnel flexible. Ces capacités constituent des fondations inhabituelles pour une application de terminal, mais elles conviennent à un espace de travail graphique hybride.

Les fréquences d’images configurables reflètent également les origines expérimentales du projet. Le développeur souhaitait que les utilisateurs puissent réduire le plafond de rendu sur des ordinateurs portables fonctionnant sur batterie ou l’augmenter sur des écrans de bureau plus rapides. Le projet n’a pas publié de mesures indépendantes de consommation, les économies d’énergie restent donc une hypothèse non vérifiée.

L’implémentation actuelle a déjà rencontré les conséquences du traitement de la sortie du terminal comme une charge de rendu. La version 0.5.3 a ajouté une limitation de débit pour les volets dont le travail sur la grille dépasse leur budget d’images. Elle a également réduit le travail de peinture du texte et appliqué une contre-pression lorsqu’un volet inonde l’interface.

Ces changements révèlent un véritable compromis. Un canevas graphique réactif peut offrir des contrôles plus riches, mais les charges de travail de terminal peuvent générer des sorties bien plus vite qu’un utilisateur ne peut les lire. L’application doit empêcher qu’un volet bruyant ne monopolise le thread de l’interface.

Godot offre également au projet une couche applicative multiplateforme. Les paquets de version ciblent Linux, macOS et Windows, et les utilisateurs n’ont pas besoin d’installer localement Godot ou une chaîne d’outils Rust. L’abstraction PTY sous-jacente s’appuie sur les PTY Unix et Windows ConPTY.

Cette architecture rapproche gPTY d’un émulateur de terminal graphique doté de fonctions de multiplexeur et d’automatisation que d’un remplaçant direct de tmux. Cette distinction est importante, car chaque catégorie entraîne des attentes différentes en matière de persistance, d’opération à distance, de latence, de contrôle au clavier et d’utilisation des ressources.

L’avenir du projet dépend de la nécessité des volets natifs Godot. Si la plupart des utilisateurs veulent uniquement des shells en mosaïque, le moteur ajoute de la complexité sans apporter suffisamment de bénéfices. Si les agents ont besoin d’affichages et de contrôles plus riches, cette même complexité devient une raison de l’adopter.

gPTY face à tmux : il s’agit en réalité de l’extensibilité graphique contre la portabilité du terminal

Le duel décisif oppose l’extensibilité graphique à la portabilité d’un modèle de session textuel mature.

Tmux peut fonctionner partout où un terminal approprié et un processus serveur sont disponibles. Ses sessions survivent aux déconnexions des clients, ce qui le rend précieux sur les connexions SSH et les réseaux instables. Les utilisateurs peuvent se rattacher depuis un autre terminal sans reconstruire leur espace de travail.

gPTY se concentre actuellement sur une application de bureau. Il peut préserver les historiques de volets, les paramètres, les dispositions et les espaces de travail nommés entre les redémarrages, mais cela n’est pas identique au détachement de tmux. Un espace de travail restauré et une session distante fonctionnant en continu résolvent des problèmes liés, mais différents.

Cette différence limite les comparaisons simplistes. Tmux multiplexe des sessions de terminal à l’intérieur d’un terminal. gPTY fournit des sessions de terminal dans un programme graphique et les expose via une API destinée aux agents.

Tmux bénéficie également d’un modèle de commandes établi de longue date, d’un langage de configuration, d’une culture de plugins et d’un vaste corpus de connaissances opérationnelles. Les développeurs savent déjà le combiner avec des shells, des éditeurs, des hôtes distants et des scripts. Remplacer ces habitudes exige davantage que des bordures de panneaux séduisantes.

Le développeur de gPTY reconnaît ce problème dans le récit d’origine du projet. Celui-ci visait initialement à devenir suffisamment utile pour remplacer tmux ou un émulateur de terminal utilisé au quotidien. La découverte de Herdr, un multiplexeur centré sur les agents, a imposé une question stratégique plus ciblée.

Plutôt que de tenter de surpasser un multiplexeur d’agents plus complet, gPTY s’est orienté vers des capacités qu’une interface utilisateur de terminal exprime difficilement. Il peut même exécuter un autre multiplexeur dans l’un de ses panneaux, en laissant cet outil responsable de ses propres sessions.

Cette composabilité est plus crédible qu’une promesse de remplacement immédiat. Un utilisateur peut conserver tmux pour la persistance à distance tout en utilisant gPTY comme couche visuelle locale. De même, un outil de terminal spécifique aux agents peut fonctionner dans un panneau gPTY.

D’autres terminaux graphiques affaiblissent également toute affirmation selon laquelle gPTY posséderait cet espace de conception. Les applications de terminal modernes proposent des divisions, des onglets, un rendu accéléré, des scripts et des dispositions configurables. Des projets basés sur Rust tels que Zellij et Okena explorent des combinaisons voisines d’émulation de terminal et de multiplexage.

La distinction la plus nette de gPTY réside dans l’association de types de panneaux mixtes, d’observabilité des agents et d’une surface de contrôle publique. Un agent externe peut piloter l’espace de travail au moyen de commandes documentées, au lieu d’imiter des frappes de clavier face à une interface opaque.

Même cet avantage exige d’être présenté avec prudence. Tmux expose déjà de nombreuses commandes pour interroger les panneaux et envoyer des entrées. Son modèle centré sur le texte est scriptable précisément parce qu’il est resté stable et composable.

La différence se situe dans ce qui survient après la commande. Tmux présente le résultat sous forme de contenu de terminal. gPTY peut acheminer la sortie capturée vers des panneaux graphiques, afficher l’état du cycle de vie et, à terme, visualiser des relations qui s’intègrent mal dans une grille de caractères.

Pour les développeurs, le choix pratique n’est donc pas « nouveau contre ancien ». Il s’agit de déterminer si le flux de travail nécessite des sessions de terminal résilientes ou un canevas local extensible. De nombreux utilisateurs d’agents auront besoin des deux.

Le projet réussira s’il complète les outils établis tout en démontrant la raison d’être de sa couche graphique. Il rencontrera des difficultés s’il demande aux utilisateurs d’abandonner des comportements de session matures avant que ses capacités visuelles ne deviennent indispensables.

L’audit de sécurité montre pourquoi les surfaces de contrôle des agents doivent rester limitées

La version la plus révélatrice de gPTY a supprimé une fonctionnalité d’automatisation après que le développeur a conclu que son modèle de configuration pouvait permettre l’exécution silencieuse de commandes.

Le moteur de concepts surveille la sortie du terminal à la recherche d’expressions régulières définies par l’utilisateur. Un concept correspondant peut capturer une sortie pertinente et l’acheminer vers un autre panneau, tel qu’un visualiseur de code ou un inspecteur. Il peut également publier une notification sans supprimer la sortie d’origine.

Les conceptions antérieures permettaient à un concept de contenir un modèle de commande à injecter dans un shell cible. Une ligne correspondante pouvait donc déclencher une action dans un autre panneau. La fonctionnalité a d’abord échoué en raison de défauts d’implémentation, mais les correctifs ultérieurs étaient sur le point de la rendre opérationnelle.

Lors de la revue de la version 0.5.3, le développeur a reconnu le risque. La sortie du terminal n’est pas fiable, car des fichiers, des journaux, des systèmes distants et des commandes peuvent afficher du texte arbitraire. Une ligne malveillante pouvait satisfaire un modèle approuvé et activer une commande configurée.

Les étiquettes aggravent le danger, car une action pouvait cibler un panneau sensible. Ce panneau pouvait contenir un shell distant authentifié ou une session locale avec privilèges élevés. L’action arrivait sous forme d’entrée de terminal sans étape d’approbation distincte.

Le projet a supprimé les modèles de commandes et le chemin d’injection associé, au lieu d’ajouter un simple interrupteur de confirmation. Les concepts peuvent désormais observer, capturer, acheminer et annoncer les correspondances, mais ils ne peuvent pas exécuter de commandes shell.

Cette décision limite le comportement autonome de gPTY tout en renforçant son rôle déclaré. L’application fournit un espace de travail observable. Un appel d’outil distinct et explicite reste responsable des actions qui modifient l’état du terminal.

La revue de sécurité plus large couvrait l’IPC, la création de PTY, la restauration des espaces de travail, les adaptateurs d’agents, l’analyse, le rendu, MCP et l’infrastructure de publication. Elle a corrigé plusieurs problèmes concrets et en a documenté d’autres, plutôt que de présenter l’audit comme une certification.

Les vérifications de confiance de l’espace de travail omettaient auparavant certains champs exécutables lors de la restauration des dispositions. Les vérifications mises à jour couvrent les programmes et les arguments sur l’ensemble des chemins de restauration. Les clients de sockets de contrôle ne peuvent pas contourner une boîte de dialogue d’approbation en demandant un profil non fiable.

La version bloque également les variables d’environnement susceptibles de modifier le démarrage du shell ou l’exécution des commandes. Les processus enfants de l’inspecteur n’héritent plus des secrets de contrôle de gPTY. Les appels MCP sont limités aux méthodes que le serveur annonce réellement comme outils.

Cependant, le projet identifie encore des risques non résolus. Ils comprennent des files de sortie pouvant croître sous forte charge, des écritures d’historique bloquantes, des lectures de fichiers non limitées, des fichiers temporaires prévisibles, des artefacts de publication non signés et une vérification incomplète des pairs sur certaines plateformes.

Le modèle de menace de gPTY indique également que l’application n’isole pas les processus de terminal. Les shells héritent d’une grande partie de l’environnement de l’application graphique, y compris des pointeurs vers des identifiants et des sockets d’agents. Un programme exécuté dans un panneau porte donc l’autorité habituelle de ce compte utilisateur.

Le défilement stocké est un autre élément à prendre en compte. L’historique persistant améliore la récupération et la recherche, mais il peut aussi conserver des secrets affichés par des commandes. Les utilisateurs ne doivent pas considérer une base de données locale d’historique de terminal comme une frontière de sécurité isolée.

Il existe un risque supplémentaire pour la qualité. Le dépôt indique que de larges portions de son code Rust et Godot ont été générées avec des modèles de langage. Le développeur avertit que l’implémentation peut contenir des bogues ou des modèles peu idiomatiques.

Cette divulgation n’établit pas que le code est dangereux. Elle renforce toutefois le besoin de revue humaine, de tests, de gestion des dépendances et d’une adoption prudente. Un projet individuel évoluant rapidement ne peut pas s’appuyer sur le volume de commits comme preuve de fiabilité.

La version 0.5.3 offre un précédent constructif. Le développeur a supprimé une fonctionnalité séduisante lorsque son modèle de confiance n’a pas résisté à l’examen. La crédibilité future dépendra de la répétition de cette retenue à mesure que davantage d’agents obtiennent accès aux entrées des panneaux et aux sorties stockées.

Trois signaux détermineront si gPTY devient plus qu’un projet annexe

La prochaine phase doit démontrer que l’observabilité graphique des agents crée une valeur durable sans affaiblir la fiabilité du terminal ni le contrôle des utilisateurs.

Le premier signal est la séparation prévue entre le moteur d’espace de travail Rust et Godot. La feuille de route de gPTY actuelle décrit un démon Rust autonome, tandis que l’application Godot deviendrait un client de rendu parmi d’autres.

Ce changement renforcerait la comparaison avec les multiplexeurs établis. Un moteur sans interface graphique pourrait préserver les processus de terminal indépendamment de la fenêtre graphique. Il pourrait aussi prendre en charge des clients distants ou des interfaces alternatives sans lier la durée de vie des sessions à Godot.

Si cette extraction est livrée avec un comportement de reconnexion stable, l’approche graphique du projet deviendra plus facile à défendre. Si elle reste un élément lointain de la feuille de route, tmux conservera un avantage décisif pour les sessions persistantes et distantes.

Le deuxième signal est l’adoption de l’interface publique des panneaux par des agents en dehors de la propre configuration du développeur. Le dépôt fournit déjà des commandes CLI, un serveur MCP, des schémas et une compétence d’agent intégrée. Ces éléments rendent l’intégration techniquement possible.

Une adoption significative inclurait des flux de travail reproductibles entre plusieurs outils d’agents. Les développeurs devraient pouvoir créer des panneaux, exécuter des commandes, surveiller leur achèvement et examiner les éléments de preuve sans recourir à une capture d’écran personnalisée.

La qualité de la gestion des échecs compte autant que le scénario idéal. Un agent doit distinguer une tâche terminée d’un processus bloqué, d’un panneau fermé, d’une session expirée ou d’une capture de sortie partielle. Des identifiants stables et des réponses d’état explicites fournissent une base, mais une utilisation plus large révélera les cas limites.

Si des outils externes commencent à traiter gPTY comme un service d’espace de travail fiable, sa stratégie orientée agents gagnera en crédibilité. Si les intégrations restent limitées à des démonstrations, le projet ressemblera davantage à une interface personnelle enveloppant des opérations de terminal familières.

Le troisième signal est de savoir si les panneaux natifs de Godot offrent quelque chose que les développeurs ne peuvent pas obtenir avec des divisions de terminal. Un éditeur de concepts graphique, un inspecteur plus riche ou une carte visuelle des dépendances pourraient justifier l’assise inhabituelle de l’application.

Les panneaux vidéo natifs et les panneaux de graphes de nœuds restent des fonctionnalités envisagées. Ils ne devraient pas influencer les décisions d’adoption avant d’exister et de fonctionner avec de véritables tâches de développement. La validation la plus solide viendrait d’utilisateurs laissant ces panneaux ouverts parce qu’ils améliorent leur travail quotidien.

Les performances doivent également faire partie de cette validation. Un moteur de bureau ne devrait pas rendre l’interaction shell ordinaire moins immédiate. Les fréquences d’images configurables sont intéressantes, mais la latence mesurée, l’utilisation du processeur, le comportement de la mémoire et l’impact sur la batterie fourniraient des éléments plus utiles.

Le packaging et la sécurité façonneront également la confiance. Des artefacts signés, des vérifications IPC spécifiques aux plateformes plus robustes, une consommation de ressources limitée et une gestion plus sûre de l’historique stocké rapprocheraient gPTY d’un usage courant.

Le projet n’a pas besoin de vaincre tmux pour compter. Son opportunité plus réaliste consiste à établir une nouvelle couche entre les agents natifs du terminal et les humains qui les supervisent.

Cette couche peut préserver l’ouverture des outils en ligne de commande tout en ajoutant un état visible, du contenu mixte et une automatisation structurée. Elle peut aussi créer de nouveaux problèmes de sécurité si l’observation se transforme discrètement en exécution incontrôlée.

Le multiplexeur de terminal gPTY a déjà fait un choix important en conservant l’orchestration des agents hors de son noyau. Il doit maintenant montrer que l’interface restante est suffisamment fiable pour devenir une infrastructure partagée.

Les développeurs qui l’évaluent devraient d’abord tester un flux de travail limité. Exécutez un agent à côté des tests et des journaux, observez comment les échecs apparaissent et vérifiez ce qui survit à un redémarrage. Demandez-vous ensuite si le contexte graphique réduit l’incertitude par rapport à la configuration de terminal déjà en place.

Cette réponse, répétée chez des utilisateurs indépendants, déterminera si gPTY devient un espace de travail durable pour agents ou reste une expérience Godot inventive.

 
 

Commencez pour Gratuit

Un premier assistant IA local avec gestion des connaissances personnelles

Pour une meilleure expérience IA,

remio ne supporte que Windows 10+ (x64) et M-Chip Macs actuellement.

Votre partenaire IA au travail
Faites-en plus avec remio

Planifiez. Créez. Livrez.
Tout au même endroit.

bottom of page