- Python 69.4%
- Shell 28.9%
- Dockerfile 0.5%
- Ruby 0.4%
- Nix 0.4%
- Other 0.4%
Lu dans les notes amont 1.0.19 -> 1.0.28. Trois correctifs manquants touchent la perte silencieuse : - 1.0.26 / #1168 : des fichiers etaient SILENCIEUSEMENT retires de la synchronisation quand un outil externe changeait la casse d'un dossier, et la suppression obsolete atteignait les autres appareils ; - 1.0.25 et 1.0.26 / #1164 : un seul fichier impossible a traiter au demarrage empechait TOUS les autres de se synchroniser ; - 1.0.26 : quand LiveSync ne peut pas ecrire un fichier recu, il AVERTIT desormais au lieu de faire croire que la synchronisation a reussi. ⚠️ Le troisieme nous concerne directement : c'est le silence decrit dans task-227, traite le 2026-09-06 — trois jours avant que je redige un commentaire pour l'amont a ce sujet. Le brouillon est revise : il dit desormais sur quelle version il a ete mesure, pourquoi 1.0.28 n'est pas testable ici (le defaut #1143 y est intact et cette image efface des documents chez nous), et il invite le mainteneur a l'ecarter si son correctif couvre deja le cas. Verifie malgre tout au HEAD : les trois appels a isValidPath dans offlineScanner.ts n'ont toujours ni else ni journalisation, et le correctif de 1.0.26 porte sur une ECRITURE QUI ECHOUE quand notre document est ecarte AVANT toute tentative d'ecriture. Probablement deux chemins distincts — et « probablement » est le mot juste, il est ecrit tel quel dans le brouillon. Ce que ca change : le retard n'est plus du confort. On est en retard sur des correctifs de perte de donnees, sur un composant qui nous en a deja coute 76. La balance penche vers la montee de version, donc vers le report de la rustine, qui devient la tache bloquante. |
||
|---|---|---|
| .claude | ||
| .planning/reports | ||
| atlas | ||
| backlog | ||
| clipper | ||
| docs | ||
| miniflux | ||
| nix | ||
| queue-staging | ||
| scripts | ||
| secrets | ||
| vault-templates | ||
| vps | ||
| .gitignore | ||
| .mcp.json | ||
| .sops.yaml | ||
| CLAUDE.md | ||
| COWORK-START-HERE.md | ||
| cron-desired.txt | ||
| mnemosyne-infra-complete.excalidraw | ||
| README.md | ||
| watch-releases.txt | ||
iac/ — l'infrastructure de Mnémosyne, en code
Dépôt source-of-truth de toute l'infra. Déclaratif, idempotent, rejouable. Déployé par GitOps depuis Forgejo : Apollon et Atlas sont pull-only.
Refondu le 2026-09-09 (task-201). Le précédent datait du 2026-05-17 et décrivait un moteur d'inférence décommissionné depuis, des vhosts qui n'existent pas, et un état figé au 18 mai.
⚠️ Ce fichier ne décrit AUCUN état
Il pointe, il ne recopie pas. L'état courant — versions, conteneurs, sondes, ce qui tourne et depuis quand — vit uniquement dans
docs/PROJECT-BIBLE.md§5, relevé machine par machine. La liste des machines et les invariants sont en §1.Deux documents qui décrivent le même état divergent toujours ; c'est ce qui est arrivé ici pendant presque quatre mois.
Par où commencer
| # | Fichier | Ce qu'on y trouve |
|---|---|---|
| 1 | CLAUDE.md |
Onboarding : préférences de Nicolas, garde-fous absolus, règle IaC stricte |
| 2 | docs/AGENTS.md |
Mode opératoire du directeur de projet et le contrat d'agent (§C1…§C7) |
| 3 | docs/PROJECT-BIBLE.md |
Décisions d'architecture, anti-patterns prouvés, état courant, table des pointeurs (§7) |
| 4 | docs/WORKFLOW.md |
Rôles des trois acteurs et les trois garde-fous structurels |
Le projet se lit en quatre couches — Gaïa (le socle) · Clio (l'information) · Horai (le
moment) · Thémis (la méthode). Détail : CLAUDE.md et decision-50.
Les quatre machines
atlas Mac mini M4 Pro 24 Go ssh exalti@atlas inférence LLM (Ollama)
apollon VPS Hostinger Paris ssh nicolas@apollon toute la stack Docker, vault source-of-truth
artemis MacBook (local) Claude Code, Obsidian — le SEUL écrivain du dépôt
echo iPhone (pas de sshd) Obsidian iOS, Telegram
⚠️ SSH asymétrique, non négociable : exalti@atlas, nicolas@apollon. Tailscale MagicDNS
résout les quatre noms. Détail et état : bible §1 et §5.
Cinq vhosts publics, servis par Caddy sur Apollon — vérifiés dans le conteneur le 2026-09-09 :
git.exalti.cloud llm.exalti.cloud rm.exalti.cloud rss.exalti.cloud vault.exalti.cloud
Le domaine *.exalti.cloud pointe sur l'IP publique d'Apollon. ⚠️ hermes.exalti.cloud et
agents.exalti.cloud ont été retirés — si vous les lisez quelque part, c'est périmé.
La règle qui prime sur toutes les autres
🔥 On n'édite jamais un fichier IaC sur un nœud. Toute modification passe par le working tree
d'Artemis, suivie d'un commit + push forgejo immédiat. Les pollers GitOps appliquent en
≤ 1 min.
Un fichier édité à la main est écrasé au prochain déploiement — ou pire, ne l'est pas, et le nœud diverge en silence.
⚠️ Push forgejo uniquement, jamais origin : le miroir GitHub est poussé par le serveur.
Le détail et les huit autres garde-fous sont dans CLAUDE.md — ils ne sont pas recopiés ici,
parce qu'un garde-fou en double finit par exister en deux versions.
Structure du dépôt
iac/
├── CLAUDE.md · README.md onboarding, ce fichier
├── backlog/ tickets (Backlog.md) + ADR dans decisions/
├── docs/ AGENTS.md, PROJECT-BIBLE.md, runbook-*.md, briefs/
├── vps/ la stack Apollon — docker-compose.yml, caddy/, hermes/, couchdb/
├── nix/ launchd/*.plist (Atlas), newsyslog.d/
├── scripts/ GitOps, monitoring, helpers, hooks/, recovery/
├── atlas/ config d'inférence + archived/
├── vault-templates/ SCHEMA.md et gabarits poussés vers le vault
├── clipper/ · miniflux/ · queue-staging/ · secrets/
Gestes courants
Modifier la stack d'Apollon — jamais en SSH :
# depuis Artemis
vim vps/docker-compose.yml && git add -A && git commit && git push forgejo main
# GitOps applique en moins d'une minute ; suivre : ssh nicolas@apollon 'tail ~/logs/gitops-deploy.log'
Installer les hooks git — une fois par clone, garde-fou 8 outillé :
git config core.hooksPath scripts/hooks
Reprise après sinistre : scripts/recovery/ — et les procédures dans
docs/runbook.md.
Secrets : chiffrés age+sops dans secrets/. ⚠️ vps/.env d'Apollon n'est jamais
commité, et aucun agent ne manipule un credential en clair (garde-fou 7).
Les runbooks
Quinze procédures dans docs/ — runbook-monitoring, runbook-gitops,
runbook-dispatch, runbook-vault, runbook-vault-read, runbook-capture,
runbook-hermes-bump, runbook-hermes-skills, runbook-hermes-webui, runbook-ms365-wrapper,
runbook-miniflux-bump, runbook-searxng, runbook-remarkable, runbook-vault-rag,
runbook-omlx.
⚠️ runbook-omlx.md est historique : oMLX est décommissionné de fait — le binaire et son
plist sont encore sur le disque d'Atlas, mais le service ne tourne pas et ce n'est plus un
rollback. Le moteur d'inférence en production est Ollama (bible §5).
La table des pointeurs qui fait autorité est la §7 de la bible, pas cette liste : elle est maintenue par le harvest, celle-ci à la main.