Groupe Ka — Développement direct sur les nœuds (remote-first)
MAJ 2026-09-04 — passerelle M1M32 +
mld. spbgit (bare repos~/srv/git/*.git, git.spboucher.ai) a déménagé de M3U96a vers M1M32. L'aliasHost gitsrvde chaque nœud (et du laptop) pointe désormais vers M1M32 (MacStudio-de-simon-pierre-8.localen LAN,M1M32.maclustr.iodepuis le laptop), clé~/.ssh/ka_guardian_ed25519par nœud autorisée sur M1M32 ; les repos de M3U96a n'utilisent plus de chemin local. Les apps sont déployées/migrées par l'orchestrateur maclustr-dispatch (~/Desktop/cluster-skill/mld …, registrecluster-registry.json) : les nœuds ci-dessous peuvent changer —mld statusfait foi. Nouveaux emplacements du 2026-09-04 : immo-ka → M3U96b, house-ka → M3U96a, resto-ka → M4M64a, food-ka → M2U64, rent-ka → M4M64b, ka-stats → M4M64a, uqo-eval → M2U64. Pousseur Ka (com.ka.pousseur) installé sur M3U96a/b, M2U64, M4M64a/b, M4M36, M2M32 ;~/.ka-pousseur-reposmis à jour automatiquement parmld(inscription à l'arrivée, retrait au départ). Les anciens~/srv/gitet~/srv/spbgitde M3U96a sont renommés*.old-20260904(backups 20 Go inclus).
MAJ 2026-09-04 (soir) — consommateurs du registre. Les gardiens ka2/ka4/ka6 (
orchestrator/registry.py, copieM4M36:~/ka-guardian-spool/registry.jsonpoussée parmld+ tirée par le launchdcom.ka.registry-sync) et la console admin-ka (server/registry.js, copie~/apps/admin-ka/data/registry.json, tirage ssh 2 min,~/ka-orchestrator/CLAUDE.mdrégénéré) lisent désormais le registre mld pour savoir où tourne chaque app : nœud, IP LAN, répertoire, port, process PM2. Plus aucune table d'emplacements en dur chez eux ;mld subscriberssur M1M32 liste les abonnés. Après unmld moved'une app Ka vers un nœud jamais équipé :~/Desktop/Groupe-KA/apps-web/ka-guardian/deploy/deploy.sh runners <nœud>(+courier,pousseur) — la liste des nœuds y est elle aussi dérivée du registre ; admin-ka pose seul~/.adminka/perm-mcp.js+~/.claude/CLAUDE.mdsur le nouveau nœud. ⚠️ M2U64 n'a pas de session graphique (console = root) : pas de domaine launchdgui/501→ les services y sont des LaunchDaemons système (/Library/LaunchDaemons/com.ka.*,UserName+HOME), posés pardeploy.shvia sudo (KA_SUDO_PWdans~/.ka-guardian.envdu laptop).
Depuis le 2026-08-17, la source de vérité des 12 projets Ka est le repo git SUR LE NŒUD de déploiement, plus les copies ~/Desktop/* du laptop. Toute session Claude sur le laptop travaille sur le repo du nœud via SSH : édition, build, restart PM2, git commit et git push se font sur le nœud.
Table des projets
| App | Nœud | Dir sur le nœud | Port | Domaine | Process PM2 |
|---|---|---|---|---|---|
| groupe-ka | M3U96b | ~/apps/groupe-ka |
8110 | www.groupe-ka.com | groupe-ka + groupe-ka-ngrok |
| lou-ka | M3U96b | ~/apps/lou-ka |
8095 | www.lou-ka.com | lou-ka-web + lou-ka-sync + lou-ka-ngrok |
| api-ka | M3U96b | /opt/api-ka |
8000 | www.api-ka.com | apika-api + apika-scheduler + apika-ngrok |
| crea-ka | M3U96b | ~/apps/crea-ka |
8160 | www.crea-ka.com | crea-ka-web + crea-ka-sync + crea-ka-ngrok |
| resto-ka | M3U96b | ~/apps/resto-ka |
8115 | www.resto-ka.com | resto-ka + resto-ka-sync + resto-ka-ngrok |
| vrai-prix | M3U96a | ~/apps/vrai-prix |
8090 | www.vrai-prix.com | vrai-prix + vrai-prix-ngrok + vrai-prix-ingest (cron 08:00) + vrai-prix-cost-sync (cron 05:15, connecteurs méthode du coût → data/cost.db) + vrai-prix-immoka-sync (cron 03:30, snapshot Immo-Ka depuis M4M64b via LAN + ré-évaluation → data/immoka.db, table vp_eval, data/marche-stats.json) — ajoutés 2026-09-08 ; data/ hors git et hors sync mld ; épinglé M3U96a |
| sorti-ka | M3U96a | ~/apps/sorti-ka |
8120 | www.sorti-ka.com | sorti-ka-web + sorti-ka-sync + sorti-ka-ngrok |
| house-ka | M4M64b | ~/apps/house-ka |
8098 | www.house-ka.com | house-ka-web + house-ka-sync + house-ka-ngrok |
| immo-ka | M4M64a | ~/apps/immo-ka |
8096 | www.immo-ka.com | immo-ka-web + immo-ka-sync + immo-ka-ngrok |
| fabri-ka | M4M64a | ~/fabri-ka |
8097 | www.fabri-ka.com | fabri-ka-web + fabri-ka-sync + fabri-ka-ngrok |
| auto-ka | M4M64b | ~/auto-ka |
8095 | www.auto-ka.com | auto-ka-web + auto-ka-sync + auto-ka-ngrok |
| food-ka | M4M64b | ~/apps/food-ka |
8097 | www.food-ka.com | food-ka-web + food-ka-sync + food-ka-ngrok |
| trouve-ka | M2M32 | ~/trouve-ka |
3000 | www.trouve-ka.com | tk-web/tk-api/tk-crawler-1,2/tk-enrichment/tk-scheduler + docker (postgres, redis) + com.trouveka.ngrok |
| home-ka | M4M36 | ~/apps/home-ka |
8099 | www.home-ka.com | home-ka-web + home-ka-sync + home-ka-ngrok |
Détails de déploiement (start commands, notes historiques) : ~/Desktop/cluster-skill/cluster-deployments.json.
Serveur git central = spbgit (git perso de Simon-Pierre)
- Le serveur git est spbgit, le git personnel : https://git.spboucher.ai (PAS GitHub — le compte GitHub spboucher-ai a déjà été suspendu, ne compter que sur spbgit). Stockage : bare repos
~/srv/git/<app>.gitsur M3U96a. - Remote
originde chaque repo de nœud :- Sur M3U96a (vrai-prix, sorti-ka) : chemin local
/Users/simon-pierreboucher/srv/git/<app>.git. - Sur les autres nœuds :
gitsrv:srv/git/<app>.git— alias SSHgitsrvajouté en tête du~/.ssh/configde M3U96b, M4M64a, M4M64b et M2M32 (2026-08-17) :⚠️ SSH inter-nœuds via Tailscale (textHost gitsrv ControlMaster no ControlPath none HostName MacStudio-de-simon-pierre-2.local # M3U96a via mDNS LAN (192.168.2.87) User simon-pierreboucher StrictHostKeyChecking accept-new*.maclustr.io) est bloqué par ACL →gitsrvpasse par le LAN/mDNS. ⚠️ Le bloc doit rester AVANTHost *(sinon le ControlPath global casse : « socket path too long »). ⚠️ControlMaster noobligatoire (même raison).
- Sur M3U96a (vrai-prix, sorti-ka) : chemin local
- Push depuis un nœud : fonctionne grâce à l'agent forwarding (le laptop a
ForwardAgent yesglobal) — donc pousser pendant une session SSH ouverte depuis le laptop. Depuis le 2026-08-24, le push AUTONOME marche aussi (missions headless des gardiens ka2/ka4/ka6, cron) : la clé~/.ssh/ka_guardian_ed25519de chaque nœud (M3U96b, M4M64a, M4M64b) est autorisée sur M3U96a et déclarée enIdentityFiledans le blocHost gitsrv— vérifié sans agent SSH. Sur M3U96a l'origin est un chemin local (aucune clé requise). Les consignes des gardiens exigent désormaisgit push origin mainaprès chaque mission. ⚠️ MAIS les missions elles-mêmes (descendants du runner python) sont bloquées par macOS 26 LNP (« no route to host ») : le pousseur launchdcom.ka.pousseur(chaîne binaires Apple, repos dans~/.ka-pousseur-repos, tick 5 min) pousse les commits en attente sur M3U96a/b + M4M64a/b. Le rollback du runner est ciblé : il ne reverte que les commits[ka*](jamais reset --hard ni revert de plage) puis laisse le pousseur pousser les reverts.
Workflow Claude (laptop)
- Lire :
ssh <node> "cd <dir> && git status && git log --oneline -5". - Éditer : petits changements via
ssh(sed/python heredoc) ; changements substantiels :scp <node>:<dir>/<fichier> /tmp/, éditer localement avec les outils,scpretour. Ne jamais éditer les copies~/Desktop/*. - Builder/tester sur le nœud (venv/node_modules y sont déjà), puis
pm2 restart <process>et healthcheck. - Committer + pousser sur le nœud :
ssh <node> "cd <dir> && git add -A && git commit -m '...' && git push origin main". - Mettre à jour
cluster-deployments.json(notes +updated) comme d'habitude.
Copies laptop (~/Desktop/*) — statut
Miroirs SECONDAIRES, ne plus y travailler (faire git pull origin main pour consulter) : groupe-ka, lou-ka, qc_house_eval/vrai-prix, qc-store (=fabri-ka), food-ka, api-ka, trouve-ka, crea-ka, resto-ka, sorti-ka. immo-ka et auto-ka n'ont AUCUNE copie laptop — le nœud + bare repo sont les seules copies.
État initial de la migration (2026-08-17)
Repos git installés dans les 12 dirs de nœud, HEAD aligné sur origin/main sans toucher aux fichiers (apps non interrompues). Fichiers trackés manquants restaurés (git checkout) : fabri-ka data/enrich_cache/ (3278 fichiers, jamais rsyncés), lou-ka docs ×7, immo-ka frontend ×7, api-ka logs ×1, trouve-ka docs ×1. .claude/ exclu du statut via .git/info/exclude partout.
WIP laptop non commité transféré/vérifié sur les nœuds : food-ka (SSO KA ID + favoris — backend déjà présent, 7 fichiers frontend rsyncés), resto-ka et groupe-ka (déjà identiques sur nœud).
Drift entièrement committé + poussé le 2026-08-17 — les 12 repos de nœud sont PROPRES (commits « État du nœud / WIP committé depuis le nœud » : lou-ka c556557, groupe-ka 6c76595, resto-ka c9f9e09, food-ka 6004efe, immo-ka 5a9aa9d, fabri-ka 20a2569, sorti-ka 69b8641). Gitignores ajoutés à cette occasion : lou-ka data/uploads/, sorti-ka *.log, immo-ka data/vraiprix.db (1,6 Go) + *.bak-* ; trouve-ka services/tmp-stage/ exclu via .git/info/exclude (doublons exacts de fichiers trackés). Les copies laptop sont maintenant EN RETARD sur origin — faire git pull avant toute consultation.