# KA Guardian — ka2 · ka4 · ka6 (agents gardiens des connecteurs) Un seul repo pour les **3 sites gardiens** : www.ka2.bot, www.ka4.bot, www.ka6.bot. Chaque agent est une instance de `orchestrator/main.py` (env `AGENT=ka2|ka4|ka6`), identité (accent, tagline, services surveillés) dans `topology.json`. ## Production (nœud M4M36) - Répertoire : `~/cluster-projects/ka-guardian` (ce repo, origin = gitsrv/spbgit `ka-guardian.git`). - Process : **launchd** (PAS pm2) — `com.ka2.guardian` (:8799), `com.ka4.guardian` (:8899), `com.ka6.guardian` (:8999). Tunnels ngrok `com.kaX.ngrok` (ne pas toucher). - Pas d'étape de build : Python servi en place (`.venv` local au nœud). ## Après toute modification (sur M4M36) 1. Redémarrer le ou les agents concernés : `launchctl kickstart -k gui/$(id -u)/com.ka2.guardian` (idem ka4/ka6 — les 3 partagent le code, redémarre les 3 si le changement est commun). 2. Vérifier : `curl -sf localhost:8799/health` (8899, 8999) puis le site public. 3. `git add … && git commit && git push origin main` (origin = gitsrv/spbgit, PAS GitHub). ⚠️ NE JAMAIS redémarrer les **runners** (`com.ka.guardian-runner` sur M3U96a/b, M4M64a/b) : ça tue la mission Claude en vol. Ils ne vivent pas sur ce nœud de toute façon. ⚠️ Le trafic LAN direct est bloqué par macOS 26 (Local Network Privacy) — le courrier zsh `com.ka.guardian-courier` s'en occupe ; ne pas le contourner. ## Pages & image de marque - `orchestrator/web/index.html` + `commander.html` : les jetons `__NUM__`, `__DOMAIN__`, `__TAGLINE__` (balises OG) sont rendus par agent au démarrage dans `main.py` (`_render_page`). - Bannières de partage `orchestrator/web/og-ka{2,4,6}.png` (servies à `/og.png`) : régénérer sur le laptop avec `python3 deploy/make_og_images.py` (Playwright/Chromium) si l'identité visuelle change. ## Déploiement complet depuis le laptop `deploy/deploy.sh orchestrators` (tar-over-ssh + vérif md5 + relance launchd). Source laptop : `~/Desktop/Groupe-KA/apps-web/ka-guardian`.