>_ DevTrendsfr

Langue

Accueil

Langages

Sections

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embarqué Sécurité
TypeScript

nodeterm transforme un désordre d'onglets de terminal en canevas infini

Tout développeur qui essaie d'exécuter des agents IA autonomes comme Claude Code ou Codex en parallèle avec des services réguliers se heurte rapidement au même problème. Une douzaine d'onglets dans iTerm ou Warp deviennent un désordre. On ne sait plus où les tests ont échoué, quelle branche est en cours d'édition en arrière-plan, et quel terminal attend une confirmation de commande.

nodeterm interface

Le projet nodeterm propose une approche différente de l'espace de travail. Au lieu d'onglets linéaires ou de divisions, il utilise un canevas infini où chaque terminal existe comme un nœud distinct et déplaçable.

Ce qu'il y a à l'intérieur du canevas

L'idée centrale est simple : donner une orientation spatiale à vos flux de travail. Vous pouvez regrouper le backend, le frontend et l'agent d'arrière-plan dans un même cluster, et coller une note avec des rappels de tâches juste à côté d'eux.

Canvas with nodes

Un nœud ici n'est pas qu'un simple terminal. Vous pouvez placer sur le canevas :

  • Des sessions de terminal complètes basées sur xterm et tmux
  • Des cartes d'agents IA (Claude Code, Copilot, Gemini, Grok)
  • L'éditeur de code Monaco avec support de sauvegarde rapide
  • Un visualiseur de diff Git et des fenêtres d'aperçu de pages web
  • Des notes autocollantes texte qui peuvent être liées aux agents pour partager le contexte

Les sessions ne se perdent pas quand vous fermez la fenêtre ou redémarrez le système. En coulisses, l'application maintient une vraie session tmux. Sur macOS, le client est livré avec un binaire tmux intégré, donc vous n'avez pas besoin de l'installer séparément.

Surveiller les agents sans analyser la sortie

Quand un agent passe beaucoup de temps à écrire du code ou à exécuter des tests, il est facile d'oublier de vérifier son état. nodeterm suit l'état via des hooks système plutôt que d'analyser la sortie texte.

Agent statuses

Si un processus nécessite une confirmation utilisateur, la carte s'illumine avec un badge NEEDS YOU et une notification native apparaît. Sur les MacBooks, l'état des agents actifs apparaît même dans la zone de l'encoche.

Un détail intéressant : les agents à l'intérieur de l'application peuvent interagir avec le canevas via une CLI intégrée. Par exemple, un agent peut créer un nœud adjacent pour exécuter des tests ou vérifier les artefacts de build d'un autre agent.

Tableau Kanban à partir de sessions en direct

Appuyer sur Cmd+Shift+B passe le canevas en mode tableau Kanban. Chaque carte du tableau reste une session de terminal fonctionnelle.

Kanban board

Vous faites glisser une carte de la colonne "En cours" vers "En révision", l'ouvrez dans une fenêtre modale, et répondez directement à la question de l'agent sur le code. La synchronisation bidirectionnelle avec GitHub Issues est également prise en charge : les tâches sont extraites sur le tableau et changent de statut quand elles sont déplacées.

Accès depuis votre téléphone et mode serveur

L'application n'est pas limitée à un client Electron de bureau. L'architecture est divisée en un cœur indépendant et des transports, ce qui explique pourquoi nodeterm fonctionne sous trois formats.

Mobile connection

  1. Application de bureau pour macOS et Linux.
  2. Édition serveur. Le même canevas fonctionne sur un serveur distant sans interface graphique et s'ouvre dans un navigateur ordinaire via WebSockets.
  3. Client mobile sur iOS. Vous scannez un code QR sur l'écran du moniteur, et la session est transmise à votre téléphone avec un chiffrement de bout en bout. Vous pouvez partir prendre un café et répondre aux invites des agents en déplacement.

Saisie vocale directement dans le shell

nodeterm intègre un modèle Whisper local. Si vous maintenez Cmd+Alt (Ctrl+Alt sur Linux) et dictez une longue instruction, l'audio est traité directement sur votre CPU.

Voice dictation

Le texte n'est pas envoyé automatiquement au terminal. Vous voyez d'abord le résultat reconnu, vous l'éditez manuellement si nécessaire, et seulement ensuite vous appuyez sur envoyer. Les données audio ne transitent pas par le réseau.

Architecture et pile technique

Le client est écrit en TypeScript en utilisant Electron et la bibliothèque React Flow comme moteur de canevas.

Les développeurs ont extrait les opérations PTY, git et agent dans une interface CorePlatform. Le processus Electron et le processus serveur Node implémentent la même interface. Grâce à cela, la version web n'est pas un port allégé—elle utilise littéralement la même interface de rendu.

Le projet est distribué sous la licence Business Source License 1.1 (BUSL-1.1). Le code source est ouvert pour un usage personnel et en production, mais interdit de créer un service concurrent payant basé sur nodeterm. Quatre ans après la sortie de chaque version, le code passe automatiquement en MIT pur.

Comment l'essayer

Sur macOS, le moyen le plus simple d'installer l'application est via Homebrew :

brew tap nodeterm/tap
brew trust nodeterm/tap
brew install --cask nodeterm

Pour Linux, des paquets AppImage et .deb pré-construits sont disponibles sur la page des versions du dépôt.

Si vous voulez exécuter un serveur headless sur une machine distante, vous avez seulement besoin de Node.js 22 et tmux :

git clone https://github.com/eneskirca/nodeterm.git
cd nodeterm
npm install
npm run server:dev

Après le démarrage, l'interface web vous attendra à l'adresse http://127.0.0.1:8443.

À qui nodeterm sera utile

L'outil s'adresse principalement aux développeurs qui gardent des dizaines de tâches parallèles ouvertes, travaillent avec des git worktrees, ou délèguent activement des morceaux de code à des agents IA en ligne de commande. Si vous êtes plus à l'aise avec un terminal minimaliste classique occupant la moitié de l'écran, le canevas spatial pourrait sembler excessif. Mais si vous en avez assez de vous perdre dans des onglets et des fenêtres tmux sans fin, l'approche visuelle de nodeterm pourrait mettre de l'ordre dans votre esprit.

Projets similaires