post-it + terminal = POSTERM

Un job d'agent, c'est un terminal qui tourne tout seul.

C'est tout. C'est toute l'idée. claude, codex, crush ou un simple bash tournent dans tmux, parce que tmux a réglé la persistance il y a des décennies. POSTERM les met tous sur un seul mur, qui se lit en une demi-seconde, depuis ton bureau ou ton téléphone.

curl -fsSL https://posterm.sh/install | sh

Linux et macOS · un binaire Go statique · il faut tmux ≥ 3.1 · lis le script d'abord : il est court exprès.

Le mur POSTERM : deux machines, six labos en post-its. Les rouges tournent et montrent la fin de leur écran, les jaunes attendent une réponse, un vert est posé, un gris est éteint.

01 · le problème

Douze onglets, et celui bloqué sur [y/N] est celui que tu n'as pas regardé.

Lance plus de trois agents de code à la fois et tu connais la suite. Donc : chaque job est un labo, un dossier plus une commande. Chaque labo est un post-it. La couleur te dit s'il a besoin de toi. Le reste de l'écran, tu peux l'ignorer.

02 · ce que tu as vraiment

Un mur, un vrai terminal derrière chaque post-it, et rien entre les deux.

Le mur

  • Chaque post-it montre la fin de son écran en direct, ou la question exacte que l'agent a posée. Le titre de l'onglet et le badge de l'appli comptent les jaunes.
  • Les compteurs d'état sont des filtres. La recherche fouille le nom, le dossier et la commande. Les labos sont groupés par machine.
  • Diffusion : coche des post-its, tape une ligne, chacun la reçoit, Entrée comprise. continue. lance les tests. commit. Fait.
  • Journal : chaque question, chaque labo qui se pose après du vrai travail, chaque extinction, avec un compteur de ce qui s'est passé pendant que tu ne regardais pas.
Un labo ouvert : le terminal de l'agent en haut, le rail des labos à gauche, le bash du labo en bas avec un git status.

Un labo, ouvert

  • Clique sur un post-it : tu es dans le vrai terminal, xterm.js sur tmux. Pas une visionneuse de logs, pas une fenêtre de chat. Ferme l'onglet, tue le navigateur, redémarre le hub : le job s'en fiche.
  • Sélectionne du texte, un menu s'ouvre là où tu lâches : copier, ou télécharger en .md. Clique ailleurs et rien n'est copié.
  • Le rail liste tous les labos dans leur couleur. Ctrl+Tab parcourt les labos, Alt+Q saute à la prochaine question, Alt+M revient au mur.
  • Un bash dans chaque labo, en bas, dans le dossier du labo, pour le git diff que tu veux pendant que l'agent bosse.
Un fichier glissé au-dessus du bash du labo : un calque montre le dossier exact où il va atterrir.

Dépose des fichiers dessus

  • Glisse des fichiers ou des dossiers entiers sur le bash. Ils atterrissent dans son dossier courant, là où tu as fait cd. La cible s'affiche avant que tu lâches.
  • Les dossiers sont zippés dans le navigateur, envoyés en un seul flux, décompressés côté serveur. Un .zip déposé est décompressé dans <nom>/.
  • Rien n'est écrasé sans demander. Échap annule à tout moment, et un envoi annulé ou raté est défait : rien d'écrit.
Le mur sur un téléphone : les mêmes post-its, deux par ligne.

Loin du bureau

  • Installe-le comme une appli (PWA). Une notification push part quand un labo pose une question ou se pose.
  • Là où le navigateur le permet, elle a un champ Répondre qui tape directement dans le labo.
  • Pas de push pour un labo que tu regardes déjà.
  • Sur téléphone, une barre de touches te donne esc, tab, ^C, les flèches et Entrée.

L'état exact, quand deviner ne suffit pas

Les couleurs viennent d'une heuristique : l'écran a bougé, ou la ligne du curseur ressemble à une invite, ou un dialogue connu est affiché. Pour qu'elles soient exactes, fais-le dire au labo. Branche ça dans les hooks de ton agent :

$ posterm etat question "Supprimer build/ ?"   # jaune, avec le texte sur le post-it
$ posterm etat pose                            # vert

Pas de réseau, pas de jeton : ça écrit un fichier. Le système de fichiers sert d'IPC. (posterm state question|idle marche aussi.)

03 · une journée sur le mur

Tes yeux vont là où il y a de la couleur.

  1. Le matin

    Tu ouvres le mur. Ce qui a tourné cette nuit est vert, jaune ou gris, et le journal raconte ce qui s'est passé pendant que tu dormais. Les jaunes d'abord.

  2. La journée

    Cinq, dix labos en même temps, sur une machine ou plusieurs. Diffuse lance les tests à tous les verts, relis le diff dans le bash du labo, dépose-lui le fichier de spec.

  3. En vadrouille

    Le téléphone vibre : un labo a une question. Tu réponds depuis la notification, sans rouvrir l'ordi.

  4. Le soir

    Lance les longs, ferme le navigateur. Les labos vivent dans tmux, sur la machine, pas dans ton onglet. Ils seront là demain.

04 · un binaire, quatre visages

Le même binaire sur chaque machine.

$ posterm                       # le hub : le mur web + les labos de cette machine
$ posterm join https://hub…     # un rayon : publie les labos de cette machine au hub
$ posterm lab ~/code/api claude # lance un labo ici, depuis le shell
$ posterm etat question "…"     # depuis un labo : dire où il en est
Architecture : ton navigateur parle en HTTPS à un hub ; les rayons, sur d'autres machines, appellent le hub par un seul WebSocket ; chaque machine fait tourner ses labos dans son propre tmux.

Plus de machines

Le rayon appelle vers l'extérieur : un WebSocket vers le hub. Aucun port à ouvrir, le NAT et les box ne sont pas ton problème.

Dans le tunnel (yamux), le hub parle du HTTP tout bête au rayon, parce que chaque machine expose exactement la même petite API et que le hub n'est qu'un reverse proxy vers /m/<machine>/….

05 · l'installer

Installe, ouvre, clique + labo.

Linux, en une ligne

$ curl -fsSL https://posterm.sh/install | sh
$ posterm   # http://127.0.0.1:8206

Le premier démarrage génère un jeton d'accès, l'affiche et le garde. Ouvre la page, colle le jeton, clique + labo : un dossier, une commande. Pour un hub qui reste allumé, le README fournit une unité systemd et un Caddyfile verrouillé. POSTERM_LANG=fr pour l'interface en français.

macOS, sans compilateur

  1. Dézippe, double-clique install.command : il installe tmux (Homebrew), lance le hub à chaque session et ouvre Safari avec le jeton dans le presse-papier.
  2. Colle le jeton.
  3. Fichier → Ajouter au Dock. C'est l'appli : sa fenêtre, son icône, ses notifications.

Les labos survivent aux mises à jour et aux fenêtres fermées. La même ligne curl marche sur Mac.

Depuis les sources

$ git clone https://github.com/L3DLP/posterm
$ cd posterm && bin/build.sh

Go et tmux. C'est toute la liste des dépendances.

06 · ce qu'il ne fera pas

Moins, exprès.

Pourquoi il est construit ainsi (en anglais) → Les sources sur GitHub

07 · mangé tous les jours

Construit par la personne qui s'en sert, tous les jours, matin, midi et soir, depuis le premier commit. Ce n'est pas une démo qui a grandi : c'est l'outil, et il est corrigé le jour même où il gêne.

Et franchement : voir dix agents bosser en parallèle, savoir d'un coup d'œil lequel t'attend, et lui répondre depuis le canapé, ça ne lasse pas. Ce site a été écrit par un agent qui tournait dans un labo POSTERM, sur ce mur.