2026.07.15 (Mer)
2026.07.22 (Mer) mis Ă  jour

✹ RĂ©sumĂ© de GPT-5.6 Sol

Le rĂ©cit de l’abandon du plan qui faisait d’une Linux VM et de Containers par utilisateur la solution par dĂ©faut, pour redĂ©finir l’unitĂ© d’exĂ©cution comme un utilisateur macOS par employĂ© avec OpenClaw native.

J’ai renversĂ© la structure de base en une seule journĂ©e

Hier, j’ai reliĂ© un coordinateur et plusieurs workers en pratique. J’ai expĂ©rimentĂ© une mĂ©thode pour sĂ©parer les rĂ©sultats produits par plusieurs IA entre Worktrees, Branches et commits, avant de les rĂ©unir de nouveau.

En parallĂšle, je construisais aussi l’environnement d’exĂ©cution d’AI Orchestration. Jusqu’au 14, la structure de base Ă©tait la suivante.

Mac mini
→ 1 Colima Linux VM
→ OpenClaw Cell Containers par employĂ©

CrĂ©er une Image commune et sĂ©parer le Network et le Volume de chaque employĂ© semblait faciliter le dĂ©ploiement et la reproductibilitĂ©. J’avais dĂ©jĂ  vĂ©rifiĂ© l’Image Linux arm64 officielle d’OpenClaw et créé une child Image ainsi qu’un contrat de Cell Network. La voie qui consistait Ă  isoler l’environnement de chaque employĂ© dans un Container Ă©tait dĂ©jĂ  trĂšs concrĂšte.

Pourtant, le 15, j’ai retirĂ© cette structure de la solution par dĂ©faut.

Ce que je voulais construire n’était pas un service de Containers

En reformulant l’objectif d’AI Orchestration, j’ai vu ce qui ne correspondait pas.

Je voulais crĂ©er un environnement oĂč les employĂ©s n’auraient qu’à dĂ©crire leur objectif dans le WebChat, puis oĂč une IA personnelle dĂ©couperait le travail nĂ©cessaire, choisirait les outils et le mĂšnerait jusqu’au bout. Il ne s’agissait pas seulement de produire du code et des documents. L’IA devait aussi manipuler des apps Mac, lancer Xcode et Simulator, et laisser des rĂ©sultats rĂ©els dans le Workspace et sous la Git identity de l’utilisateur.

DĂšs qu’on force un Linux Container Ă  appeler des fonctions macOS, la structure devient Ă©trange. Il faut placer un exĂ©cuteur sĂ©parĂ© hors du Container, reconnecter ensuite les droits et les Ă©tats, puis transmettre le Keychain et la GUI Session de l’utilisateur. La couche ajoutĂ©e pour isoler oblige justement les fonctionnalitĂ©s essentielles Ă  emprunter sans cesse des chemins dĂ©tournĂ©s.

OpenClaw n’était pas non plus un simple stateless worker. Il ressemblait davantage Ă  un environnement personnel qui rĂ©unit le Gateway, le Profile, la Session, la Memory, l’OAuth et l’état d’exĂ©cution d’un utilisateur. Dans ce cas, c’était peut-ĂȘtre la dĂ©finition mĂȘme d’un Cell comme un Container qui Ă©tait erronĂ©e.

Le 15, j’ai redĂ©fini le Cell.

1 employé
= 1 utilisateur macOS
= 1 OpenClaw Gateway indépendant
= 1 ensemble UID·HOME·Keychain
= 1 ensemble ChatGPT OAuth·CODEX_HOME
= 1 ensemble Workspace·Git identity·Session·Memory

Cette nouvelle structure crĂ©e un utilisateur macOS indĂ©pendant pour chaque employĂ© sur un mĂȘme Mac mini, puis exĂ©cute un OpenClaw Gateway complet en native dans chacun de ces comptes.

Les Containers sont restés des sandboxes optionnelles

L’expĂ©rience avec les Containers avait apportĂ© des constats clairs. Les preuves concernant l’Image officielle, l’exĂ©cution non-root, une root read-only, la sĂ©paration du Network, les frontiĂšres des Volumes et credentials, l’Image provenance et le restart conservaient leur valeur.

La Linux VM et les Containers ne constituaient plus l’environnement Pilot par dĂ©faut. Ils devenaient des candidats au rĂŽle de sandbox, rĂ©servĂ©s aux tĂąches particuliĂšres qui exigeaient rĂ©ellement une isolation. Le macOS native devenait la base, et le Container un outil Ă  employer une fois son besoin dĂ©montrĂ©.

SĂ©parer les utilisateurs macOS ne suffisait pas non plus Ă  garantir l’isolation

La structure native semblait simple, mais elle soulevait encore plus de points à vérifier.

  • l’employĂ© connectĂ© et l’utilisateur macOS qui exĂ©cute rĂ©ellement le processus sont-ils bien la mĂȘme personne ?
  • le Gateway, l’OAuth, le Workspace et l’auteur Git de cet utilisateur sont-ils correctement liĂ©s ?
  • si l’authentification d’un utilisateur Ă©choue, le systĂšme Ă©vite-t-il de basculer vers celle d’un autre ?
  • est-il impossible d’accĂ©der au HOME, au Keychain, au Port et au Workspace d’un autre utilisateur ?
  • aprĂšs un changement rapide d’utilisateur ou un reboot, chaque Gateway retrouve-t-il son propre Ă©tat ?

Je ne me suis donc pas contentĂ© de changer la topology dans les documents. J’ai créé un nouveau contrat et de nouvelles Acceptance pour le native macOS Cell, puis laissĂ© en NOT_READY les Ă©lĂ©ments dĂ©pourvus de preuves rĂ©elles dans le Runtime.

La rĂ©ussite d’un test fixture ne permettait pas non plus d’affirmer que l’isolation entre deux vrais utilisateurs Ă©tait terminĂ©e. J’ai sĂ©parĂ© le hash des fichiers d’entrĂ©e externes des preuves d’exĂ©cution des probes rĂ©els, puis continuĂ© Ă  corriger le systĂšme pour empĂȘcher le contournement des vĂ©rifications par une valeur imitant un autre utilisateur, un symlink ou un alias de chemin macOS liĂ© Ă  la casse ou Ă  Unicode.

AprĂšs avoir changĂ© la topology Ă  midi, j’ai passĂ© l’aprĂšs-midi Ă  enchaĂźner les commits pour fermer les « brĂšches qui permettaient de mentir en prĂ©tendant que le test Ă©tait passĂ© ». Rendre honnĂȘtes les conditions de rĂ©ussite de la nouvelle structure a demandĂ© davantage de code que le changement de structure lui-mĂȘme.

J’ai aussi sĂ©parĂ© les Workflows communs de l’état personnel

MĂȘme en donnant Ă  chaque employĂ© un environnement totalement indĂ©pendant, les Workflows communs gĂ©rĂ©s par l’entreprise devaient ĂȘtre distribuĂ©s dans une mĂȘme version. À l’inverse, la mise Ă  jour d’un Workflow commun ne devait modifier ni l’OAuth, ni la Memory, ni le Workspace personnels.

Dans l’aprĂšs-midi du 15, j’ai fixĂ© chaque Workflow Release par version et content hash, puis créé un contrat d’admission qui n’autorisait que les releases validĂ©s. La sĂ©lection d’un nouveau release devait changer de maniĂšre atomique ; les tĂąches en cours devaient rester fixĂ©es sur le release choisi Ă  leur dĂ©marrage ; et aucun release utilisĂ© ne devait disparaĂźtre pendant un rollback ou un nettoyage.

LĂ  encore, je n’ai pas Ă©crit que le systĂšme Ă©tait dĂ©ployĂ© dans l’emplacement partagĂ© du Mac simplement parce que le Source et les tests existaient. Un Runtime non installĂ© est restĂ© NOT_READY jusqu’au bout.

Environnement d’exĂ©cution par dĂ©faut et validations restantes

  • Cell par dĂ©faut : un compte utilisateur macOS natif par employĂ©, avec un OpenClaw Gateway indĂ©pendant
  • Isolation optionnelle : un Linux Container sandbox uniquement pour les tĂąches dont le besoin est dĂ©montrĂ©
  • État commun : un Workflow release fixĂ© par version et content hash
  • État personnel : OAuth, Memory, Workspace, Git identity et Session
  • Isolation rĂ©elle entre plusieurs utilisateurs dans le Runtime : NOT_READY

Le 15, j’ai arrĂȘtĂ© la topologie. L’isolation rĂ©elle entre deux utilisateurs et l’installation du Workflow commun devaient encore ĂȘtre confirmĂ©es par des preuves Runtime ultĂ©rieures.

Laisser un commentaire