Ingénierie des Systèmes Autonomes

Ne touchez plus à votre clavier. Bâtissez l'usine qui le fait tourner.

Les réseaux sociaux s'épuisent en démonstrations cosmétiques où un chatbot génère un composant React dans un bac à sable fermé. Dans la vraie vie, une architecture agentique industrielle doit compiler des binaires Go, manipuler des dépôts Git lourds, administrer des serveurs dédiés bare-metal via SSH, persister son état à travers les coupures réseau et livrer en production. Finis les frameworks d'orchestration obèses et les abonnements SaaS à mille dollars. Voici l'anatomie complète d'un harnais distribué et souverain : deux stations de travail Apple Silicon de pointe, une sentinelle locale basse consommation, une myriade de serveurs distants, et POSTERM comme système nerveux central.

Niveau : Hardcore / Unix Pure-Player

Blueprint de Production

MANIFESTE D'INFRASTRUCTURE // POSTERM RUNTIME ZÉRO-SAAS • LOCAL-FIRST

Un job d'agent n'est rien d'autre qu'un terminal qui tourne tout seul. Si un job est un terminal, le meilleur gestionnaire de tâches est l'outil qui préserve les processus et leur écran vivant depuis un quart de siècle : tmux. Le meilleur visualiseur est le terminal lui-même (xterm.js), et l'état du job est simplement ce qui s'affiche à l'écran. Tout le setup repose sur cette vérité nue : un binaire statique Go unique, zéro dépendance, aucun démon tiers et un mur de supervision universel.

01 — Architecture matérielle

La flotte hétérogène : répartir le muscle, le relais et l'armature

Vouloir tout exécuter sur une machine isolée conduit à l'asphyxie thermique et au blocage des contextes. Déporter ses agents sur des conteneurs managés distants détruit l'accès natif aux fichiers, aux shells interactifs et aux profils locaux. La réponse réside dans une répartition stricte des rôles matériels :

Tier 1 — Le Muscle Principal (iMac M4 24 Go & MacBook Pro M1 Max 32 Go) Stations de Travail

Ces deux machines constituent le cœur cognitif et créatif du dispositif. L'iMac M4 (24 Go de mémoire unifiée) gère les contextes larges, le poste fixe et l'hébergement du hub local lorsque vous êtes à l'atelier. Le MacBook Pro M1 Max (32 Go de RAM unifiée, bande passante mémoire de 400 Go/s) absorbe les runs massifs en mobilité, le multitâche lourd et les contextes volumineux. Les agents y opèrent directement dans leur $SHELL -lic interactif avec accès complet à la chaîne d'outils (Go, Node, Git, scripts de déploiement) sans couche de virtualisation parasitaire.

Tier 2 — La Sentinelle Résidentielle (Mac M1 8 Go en Relais Diminué) Sentinelle Headless

Le vétéran de la flotte. Avec ses 8 Go de mémoire, il ne tente aucun exploit LLM local. Il tourne 24/7 en headless, silencieux et ultra-sobre. Il sert de relais de persistance locale, exécute les scripts de veille, les synchronisations de fichiers peer-to-peer (Syncthing) et maintient une instance posterm spoke toujours joignable sur le réseau domestique pour surveiller les services internes et exécuter des tâches asynchrones légères.

Tier 3 — L'Armature Distante (Myriade de Serveurs Dédiés & VPS Durcis) Bare-Metal & Edge Public

Parc hétérogène de serveurs dédiés sous Linux pur (pour les compilations lourdes, les tests d'intégration, les clusters de données) et de VPS de production exposés derrière Caddy / Nginx et reverse-proxy durci. C'est ici que tournent les conteneurs applicatifs et les binaires de prod. Chaque serveur distant héberge un binaire posterm configuré en spoke ou en hub, permettant aux agents locaux d'administrer les machines distantes sans jamais exposer de ports SSH directs sur le web public.

02 — Moteur d'exécution

POSTERM : tmux comme Job Queue, yamux comme Maillage

Le problème des flottes agentiques distribuées réside dans la friction de supervision. Vous lancez cinq agents Claude Code, Codex ou Crush sur différentes machines : l'un attend une confirmation [y/N], l'autre a fini sa boucle, le troisième a crashé. Vous passez votre vie à jongler entre des terminaux fantômes et des fenêtres SSH orphelines.

POSTERM (posterm.sh) résout cette équation en revenant à la physique du terminal Unix :

[1. UN SEUL BINAIRE STATIQUE, QUATRE FACES]

Un binaire compilé en Go pur (CGO_ENABLED=0), sans runtime externe, avec toute l'interface Web embarquée via //go:embed. Il joue tous les rôles : posterm démarre le hub avec le mur visuel ; posterm join [hub-url] raccorde une machine satellite ; posterm lab <dir> [cmd] lance une tâche depuis le shell ; posterm state émet un signal d'état explicite.

[2. DIAL-OUT YAMUX : ZÉRO PORT OUVERT SUR VOS MACHINES]

Les satellites (spokes) ne se mettent jamais en écoute sur un port réseau. Que votre MacBook M1 Max soit sur un Wi-Fi public à Lisbonne ou que votre iMac soit derrière le NAT d'une box résidentielle, chaque spoke émet une unique connexion WebSocket sortante vers le Hub (Authorization: Bearer <token>). Le Hub et le Spoke encapsulent ce lien dans une session yamux. Le Hub devient le client yamux qui interroge l'Engine du Spoke en HTTP pur à travers le tunnel. Aucun port entrant, aucun trou dans le pare-feu, traversée de NAT native.

[3. TMUX EST LE GESTIONNAIRE DE PROCESSUS ET LA MÉMOIRE VIVE]

Chaque "lab" est une session tmux isolée sur un serveur tmux privé dédié (socket dans $POSTERM_DATA/tmux.sock). Si votre navigateur crashe, si votre connexion saute ou si le Hub redémarre, le process tmux continue son exécution. Grâce à remain-on-exit on, un lab terminé conserve son dernier écran et son code de sortie (post-it gris). Un appel capture-pane régulier lit l'état réel sans surcoût.

03 — Gestion d'état & RAG sobre

Le Mur POSTERM : La couleur comme indicateur cognitif

Plutôt que d'inonder l'opérateur de logs bruts ou de générer des résumés par un énième LLM halluciné, POSTERM modélise chaque job sous forme d'un post-it visuel catégorisé par couleur :

● RUNNING (ROUGE)

L'écran défile. Le compilateur tourne, l'agent réfléchit. Laissez-le travailler.

● QUESTION (JAUNE)

L'écran est figé sur un prompt ou un choix. L'agent attend votre arbitrage.

● IDLE (VERT)

Silence complet, rien n'est demandé. Tâche terminée ou attente de nouvelles directives.

● DEAD (GRIS)

Processus éteint. Le code de sortie s'affiche sur le post-it pour autopsie immédiate.

Le Système de Fichiers comme IPC (Inter-Process Communication)

Pour forcer un état sans passer par des devinettes heuristiques, les agents peuvent appeler directement le binaire depuis l'intérieur du lab :

posterm state question "Appliquer les migrations sur la base PostgreSQL ?"
posterm state idle

Zéro requête réseau, zéro token d'authentification : la commande écrit directement un fichier atomique sur le disque local que l'Engine POSTERM lit lors de sa boucle de scrutation.

04 — Sécurité & Privilèges

La clôture des secrets : zéro clé API en clair dans les terminaux

Lorsque vos agents opèrent directement dans votre shell natif (indispensable pour bénéficier des environnements Go, Rust ou Node configurés dans vos profils utilisateurs), laisser traîner des fichiers .env non chiffrés avec vos clés d'API (OpenAI, Anthropic, tokens SSH de production) est suicidaire. Une injection de prompt indirecte nichée dans un commit ou une issue GitHub pourrait ordonner à l'agent d'exfiltrer ces clés.

L'isolation s'opère par injection dynamique via un Secret Broker centralisé (Infisical ou coffre chiffré local) :

Principe d'injection mémoire à la volée
          1. Aucun secret de production n'est écrit sur le disque dur des machines de dev.
2. Chaque instance POSTERM ou script d'agent s'exécute avec une identité machine à privilèges minimaux.
3. Pour builder ou déployer, l'agent invoque la commande enveloppée : infisical run --env=prod -- make deploy.
4. Les variables sensibles sont injectées uniquement dans la mémoire vive du sous-processus sans jamais apparaître dans l'historique shell ni dans les logs tmux.

Si un agent est compromis ou part en boucle infinie, son token d'accès au broker est révoqué en une seconde sans impacter les secrets maîtres ni forcer la rotation des clés sur l'ensemble de votre infrastructure.

05 — Pilotage Nomade

Supervision mobile : Le terminal sous les doigts depuis n'importe où

L'un des apports majeurs de POSTERM est son architecture web épurée : aucun build JavaScript, aucun framework lourd. Du Vanilla JS et un xterm.js vendé embarqués dans le binaire Go.

  • [APPLICATION PWA & NOTIFICATIONS WEB PUSH]

    Installé sur votre smartphone via « Ajouter à l'écran d'accueil », le mur POSTERM devient une PWA native. Dès qu'un lab passe en état question (jaune) ou se termine (vert), une notification Web Push réveille le téléphone.

  • [RÉPONSE DIRECTE DEPUIS LA NOTIFICATION]

    La notification intègre un champ Reply. Si un agent vous demande « Lancer les tests e2e ? (y/n) », vous tapez y dans la notification et envoyez. La réponse est injectée directement dans le stdin de la session tmux sans même ouvrir l'application.

  • [BASH COMPAGNON & BROADCAST UNIVERSEL]

    Chaque lab ouvert dispose d'un deuxième shell bash à sa base, pointant exactement dans le répertoire de travail. Pendant que l'agent code au-dessus, vous pouvez vérifier un git diff ou glisser-déposer des fichiers. Mieux : le bouton Broadcast permet de cocher dix labs en simultané et d'envoyer git commit -am "fix" && git push à la flotte entière en une frappe.

06 — Le Runbook Technique

Spécifications de mise en route du maillage POSTERM

Voici les configurations réelles pour déployer le Hub et raccorder vos machines satellites en quelques minutes.

1. Lancement du Hub POSTERM (Sur VPS ou Machine Principale)
# Installation en une ligne (Linux ou macOS)
curl -fsSL https://posterm.sh/install | sh

# Démarrage du Hub (génère un token d'authentification unique au premier run)
export POSTERM_PORT=8206
posterm

# Le Hub écoute sur 127.0.0.1:8206.
# À placer derrière Caddy avec terminaison TLS et filtrage IP ou Cloudflare Access.
2. Raccordement d'un Spoke (MacBook M1 Max, iMac M4 ou Dédié)
# Connexion sortante vers le Hub via tunnel WebSocket / Yamux
# Aucun port d'écoute nécessaire sur la machine locale !
posterm join https://hub.mon-domaine.sh --token="VOTRE_TOKEN_OPERATEUR"

# Pour persister sous macOS (LaunchAgent) :
# Configurer LaunchAgent avec AbandonProcessGroup=true pour que
# les sessions tmux survivent aux fermetures de session.
3. Création et spawn immédiat d'un Lab d'agent
# Créer un lab sur un projet Go avec lancement d'un agent Claude Code
posterm lab ~/src/mon-api-go "claude"

# Créer un lab dédié à la supervision d'infrastructure sur un serveur dédié
posterm lab /srv/infra "htop"

# Le lab apparaît instantanément sur le mur web sous forme de post-it interactif.
07 — Vue d'ensemble du système

Cartographie du flux opérationnel distribué

+-------------------------------------------------------------------------------------------------------------------------+
|                                    ARCHITECTURE MAÎTRESSE DE L'USINE AGENTIQUE DISTRIBUÉE                               |
+-------------------------------------------------------------------------------------------------------------------------+

  [ OPÉRATEUR NOMADE ] ──> Smartphone (PWA POSTERM • Web Push • Reply direct) • Clavier Nomade
             │
             ▼ (HTTPS / TLS Reverse Proxy)
  +───────────────────────────────────────────────────────────────────────────────────────────────────+
  |                                     LE HUB POSTERM (posterm)                                      |
  |                                                                                                   |
  |  • Mur Visuel des Labs (xterm.js vendé, Vanilla JS, Zéro Build)                                  |
  |  • Authentification unique par Token Opérateur                                                   |
  |  • Routeur Reverse-Proxy /m/<machine>/...                                                        |
  |  • Client Yamux : multiplexage des flux HTTP & terminaux WebSockets vers les satellites           |
  +───────────────────────────────────────────────────────────────────────────────────────────────────+
       ▲                                   ▲                                   ▲
       │                                   │                                   │
       │ (Tunnel Yamux sortant)            │ (Tunnel Yamux sortant)            │ (Tunnel Yamux sortant)
       │ Spoke dials out                   │ Spoke dials out                   │ Spoke dials out
  +────┴──────────────────────+     +──────┴─────────────────────+     +───────┴──────────────────────+
  | MACHINE 1 : iMac M4 24 Go |     | MACHINE 2 : M1 Max 32 Go   |     | MACHINE 3 : Mac M1 8 Go      |
  | (Poste Sédentaire Lourd)  |     | (Poste Portable Nomade)    |     | (Sentinelle Réseau Headless) |
  |                           |     |                            |     |                              |
  |  • posterm join Engine   |     |  • posterm join Engine    |     |  • posterm join Engine    |
  |  • Serveur privé tmux    |     |  • Serveur privé tmux     |     |  • Serveur privé tmux     |
  |  • Labs Claude / Codex   |     |  • Labs Build / Analyse   |     |  • Tâches de fond / Relais|
  |  • Contexte large & GPU  |     |  • 32 Go Unified RAM      |     |  • Faible conso 24/7      |
  +───────────────────────────+     +────────────────────────────+     +──────────────────────────────+
                                                   ▲
                                                   │ (SSH LAN ou WAN)
                                                   ▼
                                    +──────────────────────────────+
                                    | PARC SERVEURS & VPS DISTANTS |
                                    |                              |
                                    |  • Serveurs Dédiés Linux    |
                                    |  • VPS de Production Caddy |
                                    |  • Spoke POSTERM embarqué  |
                                    |  • Docker & Binaires Go    |
                                    +──────────────────────────────+
                                                   ▲
                                                   │ (Injection sécurisée)
                                    +──────────────┴───────────────+
                                    | SECRET BROKER : INFISICAL    |
                                    | Zéro clé d'API en clair      |
                                    +──────────────────────────────+
  
Verdict d'atelier

L'autonomie agentique n'est pas une question d'intelligence du prompt : c'est un problème de tuyauterie système, de robustesse des processus et de discipline matérielle.

• Le terminal est le seul protocole universel : En utilisant tmux comme moteur de persistance et posterm comme surface de projection, vos agents conservent leur environnement natif, leurs outils et leurs shells sans dépendance à des architectures propriétaires.

• L'architecture sortante bat tous les tunnels : En faisant composer vos spokes vers l'extérieur via des WebSockets yamux, aucune machine de votre flotte n'expose de port au monde extérieur. Vos portables changent de réseau sans rompre le lien opérationnel.

• L'attention humaine est le goulot d'étranglement : Avec les post-its colorés de POSTERM et les réponses interactives dans les notifications Push, vous arbitrez les points de blocage en cinq secondes depuis votre poche, sans jamais vous perdre dans des dizaines d'onglets de terminaux.

/// DOCUMENTS SOURCES & ARCHIVES SYSTÈMES

• [1] POSTERM Architecture & Design Specification, « An agent job is a terminal that runs on its own », Référence officielle : posterm.sh/design, Octobre 2026.
• [2] HashiCorp, « Yamux (Yet Another Multiplexer) Specification : Connection Multiplexing over WebSockets », Architecture Reference, 2025-2026.
• [3] Nicholas Marriott et al., « OpenBSD tmux Manual : Process Supervision, Sockets and Terminal Emulation Persistence », 2026.
• [4] Infisical Documentation, « Automated Machine Identity & Secret Injection Without Local .env Files », Architecture Guide, 2026.
• [5] Apple Developer, « Unified Memory Architecture and High-Bandwidth Execution on Apple Silicon (M-Series) », Technical Reference, 2025-2026.