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.
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.
- en coursL'écran bouge. Laisse-le bosser.
- questionSilencieux, bloqué sur une invite ou un dialogue. À toi.
- poséSilencieux, rien demandé. Fini, ou en attente d'ordres.
- éteintPlus de processus. Le code de sortie est sur le post-it.
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
- 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+Tabparcourt les labos,Alt+Qsaute à la prochaine question,Alt+Mrevient au mur. - Un bash dans chaque labo, en bas, dans le dossier du labo, pour le
git diffque tu veux pendant que l'agent bosse.

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
.zipdéposé est décompressé dans<nom>/. - Rien n'est écrasé sans demander.
Échapannule à tout moment, et un envoi annulé ou raté est défait : rien d'écrit.

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.
- 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.
- 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. - En vadrouille
Le téléphone vibre : un labo a une question. Tu réponds depuis la notification, sans rouvrir l'ordi.
- 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

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
- 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. - Colle le jeton.
- 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.
- Pas de framework d'agents. Tes agents sont les programmes que tu lances déjà.
- Pas de file d'attente. tmux est la file, et la persistance.
- Pas de base de données. Un registre JSON et un journal en ajout seul.
- Pas de fenêtre de chat. On parle aux agents dans leur terminal. Les terminaux servent à ça.
- Pas de build JS. Du JS sans framework, xterm.js embarqué, le tout dans le binaire.
- Pas de compte, pas de SaaS. Tes machines, un jeton, un opérateur.
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.