# NAS Runbooks — Index > Référentiel opérationnel partagé entre hermes-tt, hermes-nyora, hermes-perso. > Chaque instance écrit uniquement dans son dossier ; tous les dossiers sont lisibles par tous. > **Consolidation du 09/07/2026** : doublons fusionnés, runbooks obsolètes purgés, runbooks métier re-sphérés (détail en bas de page). --- ## common — Protocoles & référence | Runbook | Date | Tags | |---------|------|------| | [Passerelle MCP dédiée NyoraNotes (multi-agent, StreamableHTTP port 3098, scoping strict par dossier, connecteur DSH validé)](common/nyora-notes-mcp-gateway-deploiement-20260826.md) | 2026-08-26 | nyora-notes-mcp, mcp, streamable-http, scoping, dsh, tailscale | | [Réduction hermes-hub en dispatcher minimal & stabilisation DSH (historique, WebSockets, mémoire NyoraNotes)](common/decommission-switcher-hub-stabilisation-dsh-20260826.md) | 2026-08-26 | dsh, hermes-hub, dispatcher, websocket, history-fix, nyora-notes | | [Décommission hub.yesminedor.tn (multi-univers) au profit de dsh-hub/files-hub + Telegram ; historique DSH root-cause (WebSocket describeFace) ; mémoire NyoraNotes + identité + autonomie scopée Gitea pour DSH](common/brief-gemini-dsh-autonomie-hub-decommission-20260826.md) | 2026-08-26 | dsh, hermes-hub, decommission, nyora-notes, brief-gemini | | [Brief v3 Nyora/Gemini — MAJ Hermes Agent, Bot Mode accepte (v2026.8.19), architecture Manager + bots specialistes, verrou reseau bloquant identifie (reseau Docker n8n partage entre les 3 instances)](common/brief-gemini-hermes-botmode-20260825-v3.md) | 2026-08-25 | hermes, bot-mode, browser-use, n8n-network, versioning, brief-gemini | | [Hermes absent du suivi de versions infra — 4 lignes ajoutees (hermes-agent, hermes-workspace, hermes-nabil, hermes-hub), decisions de pin/miroir VPS actees](common/hermes-version-tracking.md) | 2026-08-25 | hermes, baserow, n8n, versioning, infra_versions | | [Hermes Hub — Déploiement et Exploitation Multi-Univers sur VPS (FastAPI, proxy async, design tokens, Tailscale)](common/hermes-hub-deploiement.md) | 2026-08-19 | hermes, hub, multi-univers, vps, tailscale, cloudflare-access, fastapi | | [Déploiement Superpowers — Flotte Hermes Agent, Claude Code & Antigravity (procédure, piège TLS 1.3, piège SSH PATH Synology)](common/superpowers-hermes-installation.md) | 2026-08-18 | hermes, superpowers, plugins, skills, tls, ssh, synology, claude-code, antigravity | | [baserow-schema-mcp — 4 outils de gestion de schema (create/delete table/field), companion service au MCP natif Baserow](common/baserow-schema-mcp.md) | 2026-08-17 | baserow, mcp, schema, jwt | | [reglement-definitif-api — fix WORKER TIMEOUT/OOM (lazy WeasyPrint, gunicorn 1 worker) + serveur MCP reglement-mcp + intégration hermes-tt](common/reglement-definitif-fix-mcp.md) | 2026-08-23 | mcp, docker, gunicorn, weasyprint, tunisie-telecom, gemini | | [Rotation des secrets — inventaire, portée réelle par empreinte, anomalies inter-sphères](common/rotation-secrets-inventaire.md) | 2026-07-18 | securite, secrets, rotation | | [Bifrost — routage texte par coût : état de la mesure, logs.db, clés virtuelles, incident 401](common/bifrost-routage-par-cout.md) | 2026-07-18 | bifrost, llm, cout, routage | | [Skills n8n officiels (n8n-io/skills) — socle 14 skills, tap auto 3 instances](common/n8n-skills-officiels.md) | 2026-07-10 | n8n, skills, hermes, tap | | [Adoption skill i-have-adhd — sortie directe, 4 instances (3 NAS + hermes-nabil VPS)](common/i-have-adhd-skill-adoption.md) | 2026-07-31 | productivity, skills, hermes | | [PROTOCOL-INFRA — règles opérationnelles](common/PROTOCOL-INFRA.md) | maj continue | infra, protocole | | [Ports Registry NAS (source de vérité services — miroir de /volume1/docker/ports-registry.md)](common/ports-registry.md) | 2026-07-04 | infra, ports, registry | | [mcp-nas — référence opérationnelle consolidée (run_command v2, contraintes post-audit)](common/mcp-nas-reference.md) | 2026-07-09 | infra, mcp-nas, scripting | | [VPS memory-node — Objectif A : nœud mémoire persistante (miroir git + rsync + restic, pull depuis VPS)](common/vps-memory-node.md) | 2026-07-10 | vps, memoire, backup, restic, tailscale | | [Git push depuis mcp-nas (172.17.0.1, API Gitea si git absent)](common/git-push-depuis-mcp-nas.md) | 2026-07-08 | infra, git, mcp-nas | | [Boîte à idées Claude (radar non décisionnel)](common/boite-a-idees-claude.md) | 2026-07-08 | infra, veille, ideation | | [Vision fondatrice Nyora + SOUL.md 3 instances](common/nyora-definition-fondatrice.md) | 2026-06-23 | nyora, soul, vision | ## common — Sécurité | Runbook | Date | Tags | |---------|------|------| | [Accès Docker complet (socket + dossier projets dédié) pour les 3 instances Hermes — accès root-équivalent sur l'hôte NAS, délégation assumée par Nabil](common/hermes-docker-access-projects-20260829.md) | 2026-08-29 | hermes, docker, socket, securite, deploiement | | [Passerelle MCP dédiée NyoraNotes (multi-agent, StreamableHTTP port 3098, scoping strict par dossier, connecteur DSH validé)](common/nyora-notes-mcp-gateway-deploiement-20260826.md) | 2026-08-26 | nyora-notes-mcp, mcp, streamable-http, scoping, dsh, tailscale | | [Réduction hermes-hub en dispatcher minimal & stabilisation DSH (historique, WebSockets, mémoire NyoraNotes)](common/decommission-switcher-hub-stabilisation-dsh-20260826.md) | 2026-08-26 | dsh, hermes-hub, dispatcher, websocket, history-fix, nyora-notes | | [Hermes Hub — Déploiement et Exploitation Multi-Univers sur VPS (FastAPI, proxy async, design tokens, Tailscale)](common/hermes-hub-deploiement.md) | 2026-08-19 | hermes, hub, multi-univers, vps, tailscale, cloudflare-access, fastapi | | [Audit sécurité réseau NAS (surface WAN, crowdsec, firewall)](common/audit-securite-reseau-nas-20260703.md) | 2026-07-03 | securite, reseau, wan | | [Audit sécurité mcp-nas — RCE root anonyme, P0 fermés + durcissement (reste: rotation)](common/mcp-nas-security-audit.md) | 2026-07-09 | securite, mcp-nas, rce, rotation | | [Permissions credentials/clés — piège 777](common/permissions-credentials-cles-chmod.md) | 2026-07-05 | securite, credentials, chmod | | [Décommission wg-easy (remplacé par Tailscale)](common/wg-easy-decommission-tailscale.md) | 2026-07-08 | wireguard, tailscale, vpn | | [Pattern IP sessions Claude-User (mcp-vps/mcp-nas) + incident exposition tokens Gitea](common/mcp-sessions-pattern.md) | 2026-07-12 | securite, mcp, faux-positif, tokens | | [Tailscale + NyoraNotes multi-instance — pare-feu DSM par interface, onboarding hermes-nabil / hermes-desktop-yesmine](common/tailscale-firewall-nyora-notes-onboarding-13-08-2026.md) | 2026-08-13 | infra, tailscale, firewall, dsm, nyora-notes | | [context-hub — filtrage per-agent du scope infra (bruit mcp-nas retire pour Gemini/Hermes) + purge cle obsolete](common/context-hub-filtrage-scope-par-agent.md) | 2026-08-16 | securite, context-hub, rbac, mcp-nas | ## common — Stack & fiabilité | Runbook | Date | Tags | |---------|------|------| | [Passerelle MCP dédiée NyoraNotes (multi-agent, StreamableHTTP port 3098, scoping strict par dossier, connecteur DSH validé)](common/nyora-notes-mcp-gateway-deploiement-20260826.md) | 2026-08-26 | nyora-notes-mcp, mcp, streamable-http, scoping, dsh, tailscale | | [Réduction hermes-hub en dispatcher minimal & stabilisation DSH (historique, WebSockets, mémoire NyoraNotes)](common/decommission-switcher-hub-stabilisation-dsh-20260826.md) | 2026-08-26 | dsh, hermes-hub, dispatcher, websocket, history-fix, nyora-notes | | [Hermes Hub — Déploiement et Exploitation Multi-Univers sur VPS (FastAPI, proxy async, design tokens, Tailscale)](common/hermes-hub-deploiement.md) | 2026-08-19 | hermes, hub, multi-univers, vps, tailscale, cloudflare-access, fastapi | | [Écriture naturelle + accès Firecrawl sur les 4 instances Hermes (TT/Nyora/Perso/Nabil)](common/ecriture-naturelle-firecrawl-4-instances.md) | 2026-07-19 | hermes, soul-md, firecrawl, ecriture | | [Telegram duplication (flood control overflow-split) + Gitea auth (GITEA_DEPLOY_TOKEN)](common/telegram-flood-control-overflow-split-et-gitea-deploy-token.md) | 2026-07-16 | telegram, gitea, git, hermes | | [Fragilités de dépendances stack 43 containers](common/fragilites-dependances-stack-20260703.md) | 2026-07-03 | stack, restart, couplage | | [Correctifs fragilités appliqués (rla-api, n8n, bifrost-proxy)](common/correctifs-fragilites-application-20260704.md) | 2026-07-04 | correctifs, healthcheck | | [rla-api — Baserow ECONNREFUSED malgré .env corrigé (dotenv override:true baké dans l'image, double source de config)](common/rla-api-dotenv-override-baserow-https.md) | 2026-08-20 | rla-api, baserow, baserow-http-interne, dotenv, portainer-api | | [PDFKit — doc.widthOfString() en boucle corrompt silencieusement le flux de contenu (rla-api)](common/pdfkit-widthofstring-corruption-troncature.md) | 2026-08-22 | rla-api, pdfkit, pdf, troncature, portainer-api | | [Baserow mem_limit 2g](common/baserow-memlimit.md) | 2026-06-29 | baserow, memoire | | [Cache SSD write-back fin de vie + backup USB](common/ssd-cache-endurance-usb-backup.md) | 2026-07-04 | ssd, backup, usb | | [Telegram — réponses dupliquées 4-5× (getUpdates/NAT TT) + fix DNS agents](common/telegram-duplication-getupdates-offset.md) | 2026-07-09 | telegram, hermes, dns, nat-tt | | [Nettoyage stack documentaire (historique containers retirés)](common/cleanup-stack-documentaire.md) | 2026-07-09 | cleanup, doc-stack | | [Migration cin-search-tt hors-Docker vers Docker + SMTP OVH->Infomaniak + regression RAS hardcode Baserow (audit /volume1/web)](common/cin-search-tt-migration-docker.md) | 2026-07-24 | migration, docker, smtp, portainer-api, baserow-http-interne, hardcode-bug | | [VPS — qBittorrent Docker + VPN WireGuard intégré, kill-switch, qb.yesminedor.tn (démolition qbt-nox/policy routing UID)](common/vps-qbittorrent-docker.md) | 2026-07-12 | vps, qbittorrent, wireguard, vpn, kill-switch, cloudflare-tunnel | ## common — LLM (Bifrost, OpenCode, n8n) | Runbook | Date | Tags | |---------|------|------| | [Passerelle MCP dédiée NyoraNotes (multi-agent, StreamableHTTP port 3098, scoping strict par dossier, connecteur DSH validé)](common/nyora-notes-mcp-gateway-deploiement-20260826.md) | 2026-08-26 | nyora-notes-mcp, mcp, streamable-http, scoping, dsh, tailscale | | [Réduction hermes-hub en dispatcher minimal & stabilisation DSH (historique, WebSockets, mémoire NyoraNotes)](common/decommission-switcher-hub-stabilisation-dsh-20260826.md) | 2026-08-26 | dsh, hermes-hub, dispatcher, websocket, history-fix, nyora-notes | | [Hermes Hub — Déploiement et Exploitation Multi-Univers sur VPS (FastAPI, proxy async, design tokens, Tailscale)](common/hermes-hub-deploiement.md) | 2026-08-19 | hermes, hub, multi-univers, vps, tailscale, cloudflare-access, fastapi | | [Migration cerveau Hermes DeepSeek V4 Flash → Mimo V2.5 (perso, HARNESS/dsh-vps, tt, nyora) — desynchro git/live, auth key_env cassee sur Bifrost, context_length/max_tokens recalibres. Suite 18/08 : straggler nyora-veille corrige + Tirith reste sur DeepSeek (exception assumee, decision Nabil)](common/migration-mimo-v25-cerveau-hermes.md) | 2026-08-17 -> 2026-08-18 | mimo, hermes, migration, bifrost, opencode-go, context-length, nyora-veille, tirith | | [Accès Bifrost (passerelle LLM, vision/OCR)](common/bifrost-access.md) | 2026-07-11 | bifrost, llm, x-bf-vk, bifrost-proxy, hermes-desktop | | [Bifrost — incidents VK & fallback (consolidé 23/06 + 06/07 + 11/07)](common/bifrost-vk-incidents.md) | 2026-07-11 | bifrost, vk, opencode, cout | | [Migration provider → OpenCode Go (consolidé, état des modèles à jour)](common/opencode-go-migration.md) | 2026-07-09 | opencode, hermes, family-help | | [n8n Code nodes LLM vers Bifrost obligatoire](common/runbook-n8n-llm-bifrost.md) | 2026-06-15 | n8n, bifrost, code-node | | [Génération/édition d'images IA (nano-banana)](common/openrouter-image-gen.md) | 2026-06-14 | openrouter, image | ## common — Hermes (plateforme) | Runbook | Date | Tags | |---------|------|------| | [Accents disparaissant en ASCII -- bug fleet-wide sur les 5 conteneurs Hermes (LANG/LC_ALL/PYTHONIOENCODING/PYTHONUTF8 manquants)](common/accents-fleetwide-utf8-fix-20260828.md) | 2026-08-28 | accents, utf-8, hermes, fleet-wide, docker-compose, encoding | | [Passerelle MCP dédiée NyoraNotes (multi-agent, StreamableHTTP port 3098, scoping strict par dossier, connecteur DSH validé)](common/nyora-notes-mcp-gateway-deploiement-20260826.md) | 2026-08-26 | nyora-notes-mcp, mcp, streamable-http, scoping, dsh, tailscale | | [Réduction hermes-hub en dispatcher minimal & stabilisation DSH (historique, WebSockets, mémoire NyoraNotes)](common/decommission-switcher-hub-stabilisation-dsh-20260826.md) | 2026-08-26 | dsh, hermes-hub, dispatcher, websocket, history-fix, nyora-notes | | [Hub public skills.sh — identifiants, scanner de securite, override manuel DANGEROUS (video Dr Firas)](common/hermes-skills-hub-scanner-securite.md) | 2026-08-20 | hermes, skills, scanner, securite, hub | | [Hermes Hub — Déploiement et Exploitation Multi-Univers sur VPS (FastAPI, proxy async, design tokens, Tailscale)](common/hermes-hub-deploiement.md) | 2026-08-19 | hermes, hub, multi-univers, vps, tailscale, cloudflare-access, fastapi | | [Mise à jour des 3 instances Hermes](common/RUNBOOK-HERMES-UPDATE.md) | 2026-06-15 | hermes, update, compose | | [Skills concurrents PDF/DOCX/PPTX/XLSX archivés (anti-bypass nyora-doc-api)](common/skills-concurrents-pdf-docx-pptx-xlsx.md) | 2026-07 | hermes, skills, doc | | [Audit data/ 3 instances — écarts & pièges (cron/skill archivé, root:root, purge backups)](common/audit-data-hermes-20260709.md) | 2026-07-09 | hermes, data, audit | | [Génération chunkée tâches volumineuses (>1000 mots)](common/generation-chunkee-taches-volumineuses.md) | 2026-07 | hermes, skill, chunk | | [Skill sobriété-code (7 règles Ponytail)](common/sobriete-code-ponytail.md) | 2026-07-05 | skill, code, tokens | | [Envoi de fichiers via Telegram (sendDocument)](common/envoi-fichier-telegram.md) | 2026-07-04 | telegram, senddocument | | [Telegram rich_messages flag + restart Portainer API](common/rich-messages-telegram.md) | 2026-06-24 | telegram, rich-messages | | [Partage Pingvin gros fichiers](common/partage-pingvin-gros-fichiers.md) | 2026-07 | pingvin, partage | | [Tap Gitea privé hermes-skills](common/tap-gitea-hermes-skills.md) | 2026-06-17 | gitea, skills | ## common — Documents (nyora-doc-api) | Runbook | Date | Tags | |---------|------|------| | [Passerelle MCP dédiée NyoraNotes (multi-agent, StreamableHTTP port 3098, scoping strict par dossier, connecteur DSH validé)](common/nyora-notes-mcp-gateway-deploiement-20260826.md) | 2026-08-26 | nyora-notes-mcp, mcp, streamable-http, scoping, dsh, tailscale | | [Réduction hermes-hub en dispatcher minimal & stabilisation DSH (historique, WebSockets, mémoire NyoraNotes)](common/decommission-switcher-hub-stabilisation-dsh-20260826.md) | 2026-08-26 | dsh, hermes-hub, dispatcher, websocket, history-fix, nyora-notes | | [Hermes Hub — Déploiement et Exploitation Multi-Univers sur VPS (FastAPI, proxy async, design tokens, Tailscale)](common/hermes-hub-deploiement.md) | 2026-08-19 | hermes, hub, multi-univers, vps, tailscale, cloudflare-access, fastapi | | [nyora-doc-api v3 Premium — guide d'usage Hermes](common/nyora-doc-api-hermes-guide.md) | 2026-07-01 | nyora-doc-api, docx, xlsx, pptx, pdf | | [nyora-doc-api — procédure rebuild & déploiement](common/nyora-doc-api-rebuild.md) | 2026-07-09 | nyora-doc-api, docker, rebuild | | [nyora-doc-api mode template — cause racine non-restyle + restyle=full (déployé 08/07)](common/nyora-doc-api-template-restyle-cause-racine.md) | 2026-07-08 | nyora-doc-api, template | ## common — Divers | Runbook | Date | Tags | |---------|------|------| | [Passerelle MCP dédiée NyoraNotes (multi-agent, StreamableHTTP port 3098, scoping strict par dossier, connecteur DSH validé)](common/nyora-notes-mcp-gateway-deploiement-20260826.md) | 2026-08-26 | nyora-notes-mcp, mcp, streamable-http, scoping, dsh, tailscale | | [Réduction hermes-hub en dispatcher minimal & stabilisation DSH (historique, WebSockets, mémoire NyoraNotes)](common/decommission-switcher-hub-stabilisation-dsh-20260826.md) | 2026-08-26 | dsh, hermes-hub, dispatcher, websocket, history-fix, nyora-notes | | [Hermes Hub — Déploiement et Exploitation Multi-Univers sur VPS (FastAPI, proxy async, design tokens, Tailscale)](common/hermes-hub-deploiement.md) | 2026-08-19 | hermes, hub, multi-univers, vps, tailscale, cloudflare-access, fastapi | | [Hébergement de sites statiques produits par Hermes](common/HEBERGEMENT-SITES-STATIQUES.md) | 2026-06-20 | hebergement, statique | | [HTML vers PNG headless (Puppeteer)](common/html-to-png-puppeteer.md) | 2026-07-09 | html, png, puppeteer | | [gstack — évaluation MacBook vs Hermes](common/GSTACK-EVALUATION-MACBOOK-VS-HERMES.md) | 2026-06 | evaluation, gstack | ## hermes-tt | Runbook | Date | Tags | |---------|------|------| | [Passerelle MCP dédiée NyoraNotes (multi-agent, StreamableHTTP port 3098, scoping strict par dossier, connecteur DSH validé)](common/nyora-notes-mcp-gateway-deploiement-20260826.md) | 2026-08-26 | nyora-notes-mcp, mcp, streamable-http, scoping, dsh, tailscale | | [Réduction hermes-hub en dispatcher minimal & stabilisation DSH (historique, WebSockets, mémoire NyoraNotes)](common/decommission-switcher-hub-stabilisation-dsh-20260826.md) | 2026-08-26 | dsh, hermes-hub, dispatcher, websocket, history-fix, nyora-notes | | [Hermes Hub — Déploiement et Exploitation Multi-Univers sur VPS (FastAPI, proxy async, design tokens, Tailscale)](common/hermes-hub-deploiement.md) | 2026-08-19 | hermes, hub, multi-univers, vps, tailscale, cloudflare-access, fastapi | | [nyora-notes-tt — doublons hérités clos (vérifié 0 candidat) + directive Nabil 2 sources de vérité mail/OneDrive](hermes-tt/nyora-notes-tt-doublons-heritages-clos-2-sources-verite-12-08-2026.md) | 2026-08-12 | mail, rag-mail, dedup, nyora-notes-tt, onedrive, decision | | [rla-api : gestion utilisateurs & superadmin (piège users.json baké)](hermes-tt/rla-api-users-superadmin.md) | 2026-07-04 | rla-api, users, bcrypt | | [Kanban multi-agent évaluation AO](hermes-tt/kanban-evaluateur-ao.md) | 2026-06-18 | kanban, ao | | [hermes-mail-browser — /inbox renvoyait des mails perimes (staleness liste virtualisee OWA)](hermes-tt/mail-o365-hermes-mail-browser-inbox-staleness.md) | 2026-07-24 | mail, o365, owa, playwright, hermes-mail-browser | | [hermes-mail-browser -- recherche precise + fix scroll liste virtualisee (limite 5-7 mails)](hermes-tt/mail-o365-recherche-scroll-virtualisation.md) | 2026-07-24 | mail, o365, recherche, scroll, virtualisation | | [hermes-mail-browser -- /search ne filtre pas par date reelle de reception (matching texte, pas operateur date)](hermes-tt/mail-o365-search-pas-de-filtre-date.md) | 2026-07-30 | mail, o365, recherche, date, hermes-mail-browser | | [16 dossiers RAG error — état session OWA dégradé (arborescence invisible), hypothèses / et conteneurs réfutées](hermes-tt/mail-o365-16-dossiers-error-etat-session-owa.md) | 2026-08-02 | mail, o365, owa, playwright, hermes-mail-browser, nyora-notes-tt, rag, checkpoint, error | | [16 dossiers RAG error — CORRIGE : clic d'expansion non idempotent go_to_folder_path (pas un etat de session degrade), + 2 bugs annexes /folders inner_text() et absence de verrou page partagee, verifie 22/22](hermes-tt/mail-o365-toggle-expand-non-idempotent-fix.md) | 2026-08-02 | mail, o365, owa, playwright, hermes-mail-browser, nyora-notes-tt, rag, checkpoint, error, race-condition, fix | | [onedrive-sync -- doublons non recatalogues (is_duplicate_of, pas un bug) + extensions inconvertibles ajoutees a UNCONVERTIBLE_EXT, verifie bad_ext_still_present=0](hermes-tt/nyora-notes-tt-onedrive-sync-doublons-extensions.md) | 2026-08-06 | nyora-notes-tt, onedrive-sync, catalog, doublons, extensions | | [SharePoint delta-sync (hermes-mail-browser -> archive locale) : mise en place complète](hermes-tt/sharepoint-delta-sync.md) | 2026-08-06 | sharepoint, sync, hermes-mail-browser, n8n, onedrive | | [4 bugs extraction OWA — A+B CORRIGES (glyphe zone privée U+E000-U+F8FF décalant le découpage positionnel, 295/399 dates corrompues ; plafond /search silencieux à 20) · C dossiers hors Réception inatteignables · **D portée /search non respectée = BLOQUANT backfill**](hermes-tt/nyora-notes-tt-parsing-owa-pua-10-08-2026.md) | 2026-08-10 | mail, o365, owa, playwright, hermes-mail-browser, nyora-notes-tt, rag, parsing, unicode, pua, message-id, troncature, scope, fix | ## hermes-nyora | Runbook | Date | Tags | |---------|------|------| | [Veille Nexum -- decalage image Telegram (sendPhoto), fidelite titre site/Telegram, nettoyage DeepSeek](hermes-nyora/veille-nexum-telegram-image-titre-fidelite-20260828.md) | 2026-08-28 | veille-nexum, telegram, sendphoto, fidelite-titre, deepseek, n8n | | [Passerelle MCP dédiée NyoraNotes (multi-agent, StreamableHTTP port 3098, scoping strict par dossier, connecteur DSH validé)](common/nyora-notes-mcp-gateway-deploiement-20260826.md) | 2026-08-26 | nyora-notes-mcp, mcp, streamable-http, scoping, dsh, tailscale | | [Réduction hermes-hub en dispatcher minimal & stabilisation DSH (historique, WebSockets, mémoire NyoraNotes)](common/decommission-switcher-hub-stabilisation-dsh-20260826.md) | 2026-08-26 | dsh, hermes-hub, dispatcher, websocket, history-fix, nyora-notes | | [Hermes Hub — Déploiement et Exploitation Multi-Univers sur VPS (FastAPI, proxy async, design tokens, Tailscale)](common/hermes-hub-deploiement.md) | 2026-08-19 | hermes, hub, multi-univers, vps, tailscale, cloudflare-access, fastapi | | [Scrappling — évaluation vs stack existant (Firecrawl/Camoufox/SearXNG), installation différée](hermes-nyora/scrappling-evaluation-vs-firecrawl-camofox-14-08-2026.md) | 2026-08-14 | scraping, firecrawl, camofox, veille, prospection | | [IAKifech — durée finale corrompue (107s au lieu de ~85s) : mismatch framerate outro/footage au concat](hermes-nyora/iakifech-duree-outro-fps-mismatch.md) | 2026-07-29 | iakifech, dr-nexum, hermes-nabil, ffmpeg, concat, framerate, postmortem | | [IAKifech ep.1 — postmortem production vidéo hermes-nabil (skills refusées, timeouts, échappement)](hermes-nyora/iakifech-ep1-postmortem-production-video.md) | 2026-07-23 | iakifech, dr-nexum, hermes-nabil, soul-md, postmortem | | [Pipeline Dr Nexum image-vidéo : config 480p/4s validée (Atlas Cloud Seedance + ElevenLabs)](hermes-nyora/dr-nexum-atlas-i2v-seedance.md) | 2026-07-21 | dr-nexum, atlas-cloud, seedance, elevenlabs | | [mimo-v2.5 : 400 Param Incorrect screenshots browser_vision — fix plugin provider](hermes-nyora/mimo-400-param-incorrect-vision-tool-messages.md) | 2026-07-09 | mimo, vision, 400 | | [Verdict pilote mimo-v2.5 : GARDER mimo, V4 Flash fallback](hermes-nyora/verdict-pilote-mimo-v25.md) | 2026-07-08 | mimo, modele, pilote | | [Veille Dr. Nexum — email enrichi](hermes-nyora/veille-nexum-email-enrichi.md) | 2026-07-03 | dr-nexum, veille, email | | [Cron figé + publish n8n cassé — veille Dr Nexum (timezone Tunis)](hermes-nyora/veille-dr-nexum-cron-timezone-publish-n8n.md) | 2026-07-07 | cron, timezone, veille | | [Veille hebdo Dr. Nexum (kanban fan-out)](hermes-nyora/veille-hebdo-kanban.md) | 2026-06-18 | veille, kanban | | [Workflow Claude-GLM Nyora API Builder](hermes-nyora/workflow-claude-glm.md) | 2026-06-17 | workflow, glm | | [VPS Contabo — réinstall + bascule Tailscale](hermes-nyora/vps-contabo-reinstall-tailscale-07-07.md) | 2026-07-07 | vps, tailscale | | [VPS Contabo — WireGuard + qBittorrent natif (kill-switch)](hermes-nyora/vps-contabo-wireguard-qbittorrent-natif.md) | 2026-07-05 | vps, wireguard | | [Backup NAS → VPS Contabo (restic chiffré)](hermes-nyora/backup-nas-vps-contabo-restic.md) | 2026-07-05 | vps, backup, restic | | [Accès supervision Claude sur VPS Contabo](hermes-nyora/vps-contabo-acces-claude-supervision.md) | 2026-07-05 | vps, acces | | [Surveillance trafic sortant fair-use Contabo](hermes-nyora/vps-contabo-surveillance-bandwidth.md) | 2026-07-05 | vps, bandwidth | ## hermes-perso | Runbook | Date | Tags | |---------|------|------| | [Passerelle MCP dédiée NyoraNotes (multi-agent, StreamableHTTP port 3098, scoping strict par dossier, connecteur DSH validé)](common/nyora-notes-mcp-gateway-deploiement-20260826.md) | 2026-08-26 | nyora-notes-mcp, mcp, streamable-http, scoping, dsh, tailscale | | [Réduction hermes-hub en dispatcher minimal & stabilisation DSH (historique, WebSockets, mémoire NyoraNotes)](common/decommission-switcher-hub-stabilisation-dsh-20260826.md) | 2026-08-26 | dsh, hermes-hub, dispatcher, websocket, history-fix, nyora-notes | | [Hermes Hub — Déploiement et Exploitation Multi-Univers sur VPS (FastAPI, proxy async, design tokens, Tailscale)](common/hermes-hub-deploiement.md) | 2026-08-19 | hermes, hub, multi-univers, vps, tailscale, cloudflare-access, fastapi | | [CrowdSec sur DSM](hermes-perso/security/crowdsec-dsm.md) | 2026-06-12 | securite, ssh, iptables | | [SOUL.md hermes-perso — ingest API veille](hermes-perso/soul-veille-ingest.md) | 2026-06-15 | soul, veille | | [formation-consultant — site formation autodidacte](hermes-perso/formation-consultant.md) | 2026-07-25 | infra, formation, deploiement | --- ## Règles de contribution - **Écriture** : chaque instance écrit uniquement dans son dossier `hermes-/` ; `common/` = strictement transverse (infra/ops générique, **jamais de données métier ou familiales**). - **Lecture** : tous les dossiers lisibles par toutes les instances. - **Format** : RUNBOOK-TEMPLATE.md. Après chaque runbook : note NyoraNotes tags [infra, runbook] et mise à jour de ce _INDEX.md (pas de sous-index par dossier). ## Consolidation 09/07/2026 (traçabilité) - **Fusionnés** : MCP-NAS-SCRIPTING + mcp-nas-run-command-v2 → `mcp-nas-reference.md` · OPENCODE-GO-MIGRATION + migration-provider-opencode-go → `opencode-go-migration.md` · BIFROST-VK-OPENCODE-FIX + bifrost-vk-stale-cache → `bifrost-vk-incidents.md` · nyora-doc-api-footer-bug-docx + nyora-doc-api-rebuild-footer-docx → `nyora-doc-api-rebuild.md` (footers supprimés de tous les formats le 08/07). - **Supprimés (obsolètes)** : gotenberg-pdf.md (container désinstallé 21/06), ports-registry.md dupliqué à la racine (identique à common/), hermes-nyora/_INDEX.md (sous-index abandonné). - **Re-sphérés depuis common/** : hermes-perso-SOUL-veille-ingest → hermes-perso/ (données familiales) · kanban-evaluateur-ao → hermes-tt/ · veille-hebdo-nyora, workflow-claude-glm-nyora, veille-dr-nexum-cron-timezone-publish-n8n → hermes-nyora/. - `common/vps-transition-swap-hdd.md` — transition VPS Contabo (doublure noyau métier) pour swap HDD + reset volume. Tailscale = fenêtre. (10/07/2026) - `scripts/backup-usb.sh` — backup USB incrémental root (docker+volumes+mémoire), tâche DSM. (10/07/2026) - `common/runbook-audit-charge-nas-ds920-methode-2026-07.md` — Audit charge DS920+ : méthode mesure, pièges loadavg/smbd/docker stats, goulot = IO, état de référence 42 containers, actions en attente (flaresolverr, agent-perso 768m). (12/07/2026) - `common/n8n-credentials-corruption-veille-consolidation.md` — Credentials n8n corrompues (does not exist), tokens/domaines Baserow valides, consolidation veille Dr. Nexum en pipeline unique (14/07/2026) - [veille-nexum-vk-morte-fuseau-n8n.md](common/veille-nexum-vk-morte-fuseau-n8n.md) — Veille Dr. Nexum réparée : VK Bifrost morte (purge 07/07) + fuseau n8n + piège versionnage workflow_history (14/07/2026) - [veille-nexum-rich-job-20-sources.md](common/veille-nexum-rich-job-20-sources.md) — Bascule vers la veille riche mimo-v2.5 : 20 articles, 17 YouTube + 13 RSS, autres veilles désactivées (14/07/2026) - [hermes-vers-bifrost-bifrost-proxy.md](common/hermes-vers-bifrost-bifrost-proxy.md) — Les 3 Hermes routent via Bifrost (bifrost-proxy convertit Bearer→x-bf-vk), config.yaml provider custom, restart-only (15/07/2026) - `common/tourisme-tunisie-skill.md` — Skill Hermes : lieux a visiter en Tunisie (OSM, sans cle) [16/07/2026] - [hermes-nabil-vps-deploiement.md](common/hermes-nabil-vps-deploiement.md) — hermes-nabil sur VPS Contabo : structure, cerveau OpenCode direct, bots Tailscale-only, recherche web, documents (18/07/2026) - [hermes-nabil-images-flyers-navigateur.md](common/hermes-nabil-images-flyers-navigateur.md) — Navigateur bake dans l'image (postinstall), rendu HTML->PNG/PDF, OpenCode ne genere pas d'images -> Gemini, pipeline flyer Or Bruni (18/07/2026) - [transfert-secret-inter-machines.md](common/transfert-secret-inter-machines.md) — Deplacer une cle API entre deux machines sans jamais l'exposer (RSA-3072/OAEP, cle privee jetable), controle par longueur et prefixe (18/07/2026) - [common/vps-hermes-nabil-visuels-yasmi.md](common/vps-hermes-nabil-visuels-yasmi.md) — pipeline visuels Yasmi VPS : logo intelligent (luminance), 28 scènes tunisiennes, 5 mannequins (19/07/2026) - [dockerfile-layer-cache-ordre.md](common/dockerfile-layer-cache-ordre.md) — Ajout de dependance mineure a un Dockerfile hermes en couche RUN separee post-postinstall pour eviter un rebuild complet (git sur hermes-nabil VPS, evite retelechargement Chromium ~400 Mo) (21/07/2026) - [n8n-insights-collation-index-doublons.md](common/n8n-insights-collation-index-doublons.md) — Index unique dégradé sur insights_metadata (collation postgres) : restore littéral impossible, laissé en l'état, bombe à retardement REINDEX/pg_upgrade (23/07/2026) - common/prompt-defensif-anti-refus-contre-productif.md — hallucination refus job cron (email légitime pris pour phishing), root cause = langage anti-refus meta dans le prompt, fix = contexte factuel neutre (24/07/2026) - [hermes-tt/mail-o365-hermes-mail-browser-inbox-staleness.md](hermes-tt/mail-o365-hermes-mail-browser-inbox-staleness.md) — /inbox renvoyait des mails perimes apres ouverture dun message (liste virtualisee OWA non remontee), fix go_to_inbox_root() force navigation fraiche sur les 4 endpoints indexes (24/07/2026) - [hermes-tt/mail-o365-recherche-scroll-virtualisation.md](hermes-tt/mail-o365-recherche-scroll-virtualisation.md) — liste OWA virtualisee limitee a 5-7 mails montes, fix par accumulation ArrowDown progressif (read_listbox_items), + endpoints /search* (recherche precise dans toute la boite), skill mail-o365-tt.md complete (24/07/2026) - [hermes-tt/mail-o365-search-pas-de-filtre-date.md](hermes-tt/mail-o365-search-pas-de-filtre-date.md) — tentative estimation volume mail 2024+ (projet nyora-notes-TT) : /search fait du matching texte brut, pas un filtre received reel (q=received:2024 remonte des mails de 2025 contenant 2024 dans le sujet) ; /folders instable (count:0 ou timeout) ; ~35-40s/appel pour 5 resultats -- comptage volume a faire via UI OWA native (noVNC), pas via scraping iteratif (30/07/2026) - [hermes-nyora/iakifech-ep2-subtitle-desync-freeze-postmortem.md](hermes-nyora/iakifech-ep2-subtitle-desync-freeze-postmortem.md) — Sous-titres moneyprinterturbo calés sur edge-tts non regénérés apres swap voix ElevenLabs (desync ~0,57s), freeze+silence fin (body 75,57s vs voix 79,49s, ~18s ecart non explique), logo confirme present et correct (24/07/2026) - [common/baserow-rotation-casse-containers-standalone.md](common/baserow-rotation-casse-containers-standalone.md) — Rotation mot de passe admin Baserow casse les containers standalone non supervises (JWT admin code en dur) ; fix = Database API Token statique par scope, cas dashboard-terrain corrige (25/07/2026) - [common/vision-auxiliaire-routing-text-only-modeles.md](common/vision-auxiliaire-routing-text-only-modeles.md) -- auxiliary.vision `auto` casse sur modeles text-only (deepseek-v4-flash), route explicite vers google/gemini-2.5-flash via bifrost-proxy, applique hermes-perso + hermes-tt (27/07/2026) - [common/anti-hallucination-benchmarks-recherche-chiffree.md](common/anti-hallucination-benchmarks-recherche-chiffree.md) -- Garde-fou anti-invention sur rapports chiffres : chiffre = page lue en entier ou "non verifie", verifier variante exacte du modele avant attribution (27/07/2026) - [common/smart-approvals-deny-rules-4-instances.md](common/smart-approvals-deny-rules-4-instances.md) -- approvals.mode smart + deny rules sur les 4 instances Hermes, auxiliary.approval route vers deepseek-v4-flash (jamais mimo-v2.5), exception documentee hermes-nabil VPS (27/07/2026) - [common/veille-chunking-nyora-root-cause.md](common/veille-chunking-nyora-root-cause.md) -- Root cause des 24 tool_calls casses hermes-nyora : prompt du job veille ordonnait un heredoc unique pour 20 items sans limite, pas un probleme mimo-v2.5 ; fix construction chunkee (27/07/2026) - [common/watchdog-telegram-gateway-container-autonome.md](common/watchdog-telegram-gateway-container-autonome.md) -- Watchdog Telegram gateway Hermes en container autonome (docker:cli + socket monte), contourne l'absence d'acces DSM Task Scheduler/crontab, redemarre automatiquement + escalade si echec persistant (27/07/2026) - [common/n8n-baserow-https-interne-econnrefused.md](common/n8n-baserow-https-interne-econnrefused.md) -- Workflow oTLZguPfPlq9B7El (Moyens Humains Zone Sud Sync) : ECONNREFUSED sur Update/Create1 -- nyoeuds ecriture appelaient https://baserow.bolbol.tn (443, pas de TLS interne sur ce reseau Docker) au lieu de http://baserow:80 comme les noeuds GET ; fix scheme https->http (28/07/2026) - [common/baserow-mcp-oauth-fix.md](common/baserow-mcp-oauth-fix.md) -- Connecteur Claude.ai vers Baserow MCP echouait (404 sur well-known/register, meme piege que mcp-vps) ; sidecar OAuth stub + nginx devant Baserow (image officielle non patchable), reseau n8n uniquement (gotcha TCP timeout sur nouveau bridge custom), teste bout-en-bout SSE/WS/API identique au direct, reste reverse-proxy DSM 3888->3887 a faire manuellement (28/07/2026) - [common/context-hub-memory-entries-securite-mcp.md](common/context-hub-memory-entries-securite-mcp.md) -- Faille MCP corrigee (ContextVar lie a l'identite SSE reelle au lieu des arguments client sur get_rules/search_rules/get_agent_config/get_my_context/update_rule/check_port/get_ports) + table memory_entries typee (decision/constraint/best-practice/common-error/do-not-use) + FTS5, testee end-to-end ; base du futur scope coding (30/07/2026) - [common/context-hub-mcp-initialize-bad-request-4-causes.md](common/context-hub-mcp-initialize-bad-request-4-causes.md) -- MCP initialize Bad Request cote Gemini : 4 causes empilees decouvertes une par une (proxy-headers manquant -> redirect HTTPS vers HTTP, httpx absent de requirements.txt, mcp installe en 2.0.0 breaking, transport SseServerTransport legacy incompatible clients Streamable HTTP modernes) ; migration vers StreamableHTTPSessionManager stateless, resolu, Gemini connecte 9 tools (30/07/2026) - [common/veille-nexum-sources-reddit-403-nas-ip.md](common/veille-nexum-sources-reddit-403-nas-ip.md) -- Ajout 5 sources Reddit au pipeline Dr Nexum (r/LocalLLaMA, r/artificial, r/OpenAI, r/ClaudeAI, r/singularity), pipeline retrouve inactif (active:false), Reddit bloque en 403 depuis l IP NAS (teste 3 UA), perimetre restreint a Nyora (31/07/2026) - [hermes-tt/nyora-notes-tt-backup-wal-moteur-mixte.md](hermes-tt/nyora-notes-tt-backup-wal-moteur-mixte.md) -- disk I/O error sur toutes les requetes RAG mail juste apres chaque backup n8n : route /backup ouvrait une connexion sqlite3 stdlib differente du moteur sqlean de l'app sur la meme DB WAL live, checkpoint au close() desynchronise le wal/shm ; fix moteur unifie (sqlean) + PRAGMA busy_timeout partout, verifie 8/8 juste apres un backup manuel (02/08/2026) - [hermes-tt/n8n-cron-orphelin-hermes-mail-browser-instabilite.md](hermes-tt/n8n-cron-orphelin-hermes-mail-browser-instabilite.md) -- cause reelle de la lenteur/instabilite hermes-mail-browser : workflow n8n 'ingestion continue' actif depuis 31/07, toutes les 10 min, boucle infinie sur dossiers error_409/404 (etats finaux jamais retraitables, condition d'arret jamais declenchee, neverError:true masquait le probleme). Desactive. hermes-mail-browser lui-meme sain (RAM/CPU), search/list_attachments conformes aux baselines une fois le cron stoppe (02/08/2026) - [hermes-tt/passation-pj-hermes-tt-deepseek-mimo.md](hermes-tt/passation-pj-hermes-tt-deepseek-mimo.md) -- Chantier PJ nyora-notes-tt confie a hermes-tt (DeepSeek V4 Flash, rythme naturel LLM) + Mimo V2.5 (classement) apres echec du script Python mecanique (renderer Chromium bloque a 100% CPU sous boucle serree, watchdog ressources deja actif en filet de securite). Etat exact, points de vigilance, gap MCP ecriture a verifier (02/08/2026) - [common/mcp-nas-container-pid-namespace-blindspot.md](common/mcp-nas-container-pid-namespace-blindspot.md) -- ps aux (host) invisible aux process internes containers (pas de --pid=host) ; PID docker top (host) != PID kill dans docker exec (namespace container) ; methode /proc/*/cmdline fiable pour verifier/tuer (04/08/2026) - [common/bifrost-google-provider-key-rotation.md](common/bifrost-google-provider-key-rotation.md) -- 429 Google embeddings systematique malgre 3 cles configurees : max_retries=0 sur le provider empechait toute rotation reelle malgre allow_all_keys=1 sur la VK ; fix max_retries=2 (config.json + config.db). Limite documentee : rotation confirmee fonctionnelle mais les 3 cles partagent le meme pool de quota, ne resout pas un quota epuise (05/08/2026) - [hermes-tt/nyora-notes-tt-3-bugs-05-08-2026.md](hermes-tt/nyora-notes-tt-3-bugs-05-08-2026.md) -- 3 bugs nyora-notes-tt/nyora-convert-api decouverts en diagnostic : FTS5 syntax error sur "/" dans search_onedrive_archive ET search_mail_memory (references AO, dates), KeyError non catche sur reponse Bifrost inattendue dans _call_bifrost, PROMPT_TEXT/PROMPT_VISION jamais reaccentues (regle LANGUE du 19/07 non appliquee). 3 fixes deployes et testes. Bonus : ni l'un ni l'autre n'etait sur Gitea, bootstrap fait (05/08/2026) - [hermes-tt/nyora-notes-tt-onedrive-sync-doublons-extensions.md](hermes-tt/nyora-notes-tt-onedrive-sync-doublons-extensions.md) -- Suite etape 3 plan onedrive-sync : remaining_cataloged=0 vs cataloged=362 explique (doublons is_duplicate_of exclus par design, pas un bug) ; extensions inconvertibles (svg/py/pyc/telechargement/xlsb/pbix/odt/ods/numbers/jnlp/eps/ai/cdpz/rar/zip/excalidrawlib/bat/mp4/mp3) ajoutees a UNCONVERTIBLE_EXT, commit 70d0a33, verifie bad_ext_still_present=0 docs_apres=docs_avant=7038. Etape 3 (auto-actualisation OneDrive) terminee. Bonus : piege mcp-nas generalise aux 3 instances (alias docker incompatible nohup) (06/08/2026) - [hermes-tt/ria-179-articles-fiabilite-citation.md](hermes-tt/ria-179-articles-fiabilite-citation.md) -- Audit ingestion RIA (179 articles verbatim, 180 notes NyoraNotes) demande par Nabil : extraction/hash/index confirmes exacts, mais 12 articles (2,5,41,97,109,127,132,142,148,152,164,172) avaient un residu TITRE/Chapitre/Section du groupe suivant colle en fin de fichier, polluant le ranking FTS (ex. art.97 remontait sur "penalite retard" hors-sujet). Corrige sur fichiers locaux + notes, verifie stable sans reindexation manuelle (06/08/2026) - [hermes-tt/nyora-notes-tt-attachments-liaison-onedrive-07-08-2026.md](hermes-tt/nyora-notes-tt-attachments-liaison-onedrive-07-08-2026.md) -- content_hash jamais calcule sur les PJ mail (0/41), JOIN avec onedrive_documents structurellement vide ; fix + backfill (17/20), attachments_vec cree (2048d NVIDIA NIM), Phase 2 extraction ajoutee (nyora-convert-api upload multipart, 14/20 ok) + embedding (14/14 ok). JOIN exact content_hash toujours 0 (structurel, PJ 2026 trop recentes) mais JOIN approximatif ao_reference fonctionne (4/14 PJ avec un match OneDrive) -- confirme que la cle de liaison fiable est la reference AO, pas un hash/identifiant unique. Bonus : deux pieges Docker (docker restart ne recharge jamais une image rebuild, DDL perdue sans wal_checkpoint avant redemarrage) (07/08/2026) - [hermes-tt/sharepoint-delta-sync.md](hermes-tt/sharepoint-delta-sync.md) -- Ingestion SharePoint -> archive locale mise en place et validée : endpoint POST /sharepoint-sync sur hermes-mail-browser, workflow n8n pBF8OzVvPnGILGgj (toutes les 60 min). Réglages navigateur persistants (désactivation ouverture Office inline, téléchargement PDF forcé), authentification X-Ingest-Key. Piège DSM : port publié sur IP LAN spécifique (192.168.100.33), inaccessible via 172.17.0.1 depuis un autre container, pas de hairpin NAT -- passer par ssh nas-host pour tester. Testé sur 1 an d'historique, 3 sites actifs : 10 downloaded, 0 errors (06/08/2026) - [hermes-tt/nyora-notes-tt-sweep-livelock-fix-08-08-2026.md](hermes-tt/nyora-notes-tt-sweep-livelock-fix-08-08-2026.md) -- run_batch_sweep_all_years.sh bloque (ORDER BY folder_path deterministe + abort apres 3 echecs consecutifs) : 3 notes qui timeoutent systematiquement au listing PJ OWA revenaient toujours en tete de requete et empechaient tout progres sur les 46 autres notes en attente (66->49 puis stuck 49 pendant 14 lots, ~1h40 perdues). Fix : colonne notes.scan_fail_count, ORDER BY scan_fail_count ASC puis folder_path, sink automatique des notes en echec. Rebuild + up -d (jamais restart), verifie sur le lot suivant. Bonus : rebuild a aussi fige en dur le fix embed_attachments.py (vec0) jusque-la seulement patche en live (08/08/2026) - [hermes-tt/nyora-notes-tt-ao-reference-endpoint-pj-archive-fix-08-08-2026.md](hermes-tt/nyora-notes-tt-ao-reference-endpoint-pj-archive-fix-08-08-2026.md) -- Suite session 08/08 : outil MCP search_linked_documents productionise (normalisation regex NN/AAAA, 3 modes d'entree ao_reference/attachment_id/note_id, teste reel 1082 correspondances). /mnt/pj-archive elucide : pas de montage manquant, bug de donnees (local_path avec un prefixe ATTACH_ROOT perime pre-bootstrap), fichiers reels presents sous /app/attachments -- corrige, 20/20 PJ ont desormais un content_hash. JOIN exact content_hash : 1re correspondance confirmee (0 le 07/08), hypothese de resorption progressive validee. Piege : UPDATE concurrent au sweep actif = database table is locked, fix PRAGMA busy_timeout au lieu de wal_checkpoint (08/08/2026) - [hermes-tt/nyora-notes-tt-phase2-embedding-relance-post-sweep-08-08-2026.md](hermes-tt/nyora-notes-tt-phase2-embedding-relance-post-sweep-08-08-2026.md) -- Sweep Phase1 toutes annees termine seul via son plafond MAX_BATCHES=15 (3 notes restantes, cas OWA permanents deja connus, aucune intervention necessaire). Phase 2 + embedding relances sur le volume complet via nouveau script run_phase2_embed_full.sh (boucle jusqu'a epuisement + embedding + audit) : 24/27 PJ telechargees extraites avec succes, 24/24 embeddees (100%), content_hash 27/27 (100% des telechargees), ao_reference 23/27. JOIN exact content_hash avec onedrive_documents : 3 correspondances (1 seul le 08/08 matin, confirme la resorption progressive). Piege : docker exec -i obligatoire pour un heredoc Python en stdin ; sqlite_vec.load(conn) obligatoire avant toute requete sur *_vec, y compris en audit ponctuel (08/08/2026) - [hermes-tt/download-attachments-phase1-bug-timeout.md](hermes-tt/download-attachments-phase1-bug-timeout.md) -- Sweep PJ 2026 degradait la session OWA jusqu'a marquer des notes attachments_scanned=1 sans verification reelle : deux endpoints (search_folder par dossier, list_attachments par note) catchaient un timeout exactement comme un 404 et le mettaient en cache comme vide. Fix : contrat None (inconnu, a retenter) vs liste vide (verifie vide/404) strict + une retentative + circuit-breaker 3 echecs consecutifs. Filtre year_bucket ajoute (absent avant, bug distinct meme session), parametrable ATTACH_YEAR_BUCKET pour reprendre sur 2024/2025 apres 2026. Teste 2x5 notes (07/08/2026) - [hermes-tt/nyora-notes-tt-message-id-elem-id-volatile-08-08-2026.md](hermes-tt/nyora-notes-tt-message-id-elem-id-volatile-08-08-2026.md) -- Piste "message_id natif via elem_id OWA" FERMEE : elem_id (attribut id de ligne) s'est revele VOLATILE (GUID de rendu regenere a chaque appel -- test rigoureux 0/19 messages stables, ensembles disjoints, meme index -> id different). Un premier test a 1 seul message en position 0 sur appels rapproches l'avait faussement valide (DOM re-utilise). Decision : message_id reste le hash SHA256(subject|date|sender) STABLE ; conversation_id (data-convid, niveau THREAD, regex ciblee jamais split sur |) et fix retry /search count:0 transitoire CONSERVES. Garde-fou dedup verifie (message_id = cle de dedup ; 399 notes toutes en dossiers 'done' jamais re-scannes ; 0 note degradee inseree pendant la fenetre elem_id). Lecon SPA : tester un id DOM sur >=2 rendus reels et plusieurs messages (08/08/2026) - [common/guardrails-flotte-hermes-hard-stop-tirith-verificateur-12-08-2026.md](common/guardrails-flotte-hermes-hard-stop-tirith-verificateur-12-08-2026.md) -- hard_stop_enabled et tirith_enabled actives sur les 4 instances (etaient false), verificateur delegate_task croise (NAS genere DeepSeek/verifie Mimo V2.5, hermes-nabil inverse) ; faille provenance mail->RAG confirmee par lecture code mais pas corrigee (chantier a part) ; hermes-agent-tt trouve down 8h (mort non-propre, cause inconnue), hermes-workspace-perso bloque par port 3030 orphelin (12/08/2026) - [hermes-tt/nyora-notes-tt-backfill-72h-perte-silencieuse-429-resync-error404-16-08-2026.md](hermes-tt/nyora-notes-tt-backfill-72h-perte-silencieuse-429-resync-error404-16-08-2026.md) -- Backfill mail 72h termine (643->4322 notes). Deux pieges : (1) 444 messages perdus en silence sur 63 dossiers (18%) -- 66% sur HTTP 429 embeddings jete au lieu de reessaye, reste sur raisonnement mimo-v2.5 tronquant le JSON (max_tokens partage) ; dossier passait 'done' quand meme, bilan ne comptait pas les echecs -- fix retries+backoff, max_tokens 2500->8000, compteur messages_ignores remonte au bilan (0 perte en tranche finale). (2) 122 error_404 mesuraient un resolveur de chemin perime (bugs C/D corriges le 10/08), pas des dossiers absents -- 105/122 resolubles apres confrontation normalisee a un /folders frais. Regle generale : tout pipeline lot-LLM doit exposer un compteur d'echecs a cote du compteur de succes (16/08/2026) - [common/synology-scp-sftp-indisponible-cat-ssh.md](common/synology-scp-sftp-indisponible-cat-ssh.md) -- scp/sftp echouent systematiquement vers ce DSM ("No such file or directory" malgre chemin valide) -- sous-systeme SFTP indisponible pour l'utilisateur/cle d'automatisation, ssh lui-meme non affecte. Contournement : `cat fichier | ssh nas 'cat > dest'` (tar czf/xzf pour un dossier). Rencontre 2x en contextes differents (git bundle nas-runbooks, deploiement fichier partage aux 3 instances Hermes) -> promu en runbook transverse plutot que note de session isolee (16/08/2026) - [common/seam-discipline-hermes.md](common/seam-discipline-hermes.md) -- Discipline service/fournisseur/consommateur pour toute nouvelle capacite Hermes, inspiree dsh sans en dependre (17/08/2026) - [common/regle-source-generation-documentaire-zone-sud.md](common/regle-source-generation-documentaire-zone-sud.md) -- Regle "jamais inferer au-dela de la source" deployee dans dco-generation-tt, gsd-ao-evaluation, courriers-officiels-tt ; few-shot a completer avec Nabil (17/08/2026) - [hermes-tt/mail-sanction-envoi-non-autorise-21-08-2026.md](hermes-tt/mail-sanction-envoi-non-autorise-21-08-2026.md) -- Envoi mail non autorise (2x) via SMTP direct/credentials en clair hors-perimetre du durcissement O365 du 23/07 ; verrouillage code (creds, skill, endpoint 403) + hermes-tt en lecture seule sur le mail jusqu a levee explicite par Nabil (21/08/2026) - [common/brief-gemini-skills-hermes-antigravity-20260821.md](common/brief-gemini-skills-hermes-antigravity-20260821.md) -- Audit factuel et vérification en direct de la flotte Hermes (4 instances : perso, tt, nyora sur NAS, nabil sur VPS Contabo), de DSH et d'AntiGravity. Confirmation que les 4 instances Hermes tournent sur l'image officielle NousResearch (v0.20.0, commit upstream 3c27eb62, MIT) avec Mimo V2.5 actif partout et gestionnaire natif hermes skills (skills.sh et well-known RFC). Invalidation factuelle de l'écosystème "awesome-dsh-plugin" (dsh plugin est un proxy pnpm sans marketplace ni catalogue distant). Déploiement du skill AntiGravity preuve-commande-obligatoire (21/08/2026) - [common/mcp-token-croise-reglement-definitif.md](common/mcp-token-croise-reglement-definitif.md) -- Rapport de cloture Gemini affirmait a tort la connexion MCP hermes-tt <-> reglement-mcp (401 en realite, token CACHE_FLUSH_TOKEN croise avec MCP_SECRET_TOKEN lors d une rotation). Fix + methode de reverification systematique via hermes mcp test (24/08/2026) - [common/mecanisme-implication-hermes-gemini-garde-fous.md](common/mecanisme-implication-hermes-gemini-garde-fous.md) -- Ne du declic 3% quota (audit MCP reglement-definitif). Mecanisme pour tout garde-fou/pattern durable : Claude concoit le motif -> hermes-nyora cadre et fait executer -> Gemini installe -> Claude audite en un seul passage qui reteste reellement en direct (jamais lecture de rapport). Exceptions actees : correctif ponctuel deja diagnostique (Claude fait direct), AntiGravity/Gemini inaccessible a Nabil (Claude fait direct). Escalade immediate si derive constatee en cours de cycle (24/08/2026) - [common/dsh-resilience-opencode-direct-bifrost-proxy-tailscale-relay-20260824.md](common/dsh-resilience-opencode-direct-bifrost-proxy-tailscale-relay-20260824.md) -- DSH-VPS indépendant du NAS pour ses modèles cloud (provider opencode-direct, contourne Bifrost) ; décision OpenCode (forfait plafonné) plutôt qu OpenRouter (facturation non plafonnée) pour tout modèle gratuit-temporaire ; leçon bifrost-proxy (x-bf-vk non transmis, utiliser Authorization: Bearer sur le endpoint Tailscale 3086) ; fix tailscale-vps-ssh-relay (Tailscale userspace -> passage obligatoire par SOCKS5 127.0.0.1:1055, remplacement BusyBox nc par socat) (24/08/2026) - [hermes-nyora/dsh-vps-pnpm-plugins-bloques.md](hermes-nyora/dsh-vps-pnpm-plugins-bloques.md) -- pnpm absent de l image dsh-vps -> dsh plugin add impossible (bridge MCP inclus) ; skill-filesystem/tool-skill/skill-badge desactives dans le profil web -> le SKILL.md session-memory scaffolde a l entrypoint n a jamais ete visible par l agent (notes.md inchange depuis 9 jours). Fix pnpm applique et verifie (corepack + rebuild). Volet memoire/MCP en cours (24/08/2026) - [hermes-nyora/dsh-vps-defaultpreset-fix.md](hermes-nyora/dsh-vps-defaultpreset-fix.md) -- permission.defaultPreset etait sur danger-full-access par defaut sur dsh-vps (aucune approbation pour toute nouvelle session) ; corrige vers workspace-write, verifie que entrypoint.sh ne rescaffold pas settings.yaml (garde if ! -f), et piege docker compose up -d qui ne recharge pas un volume modifie -> restart necessaire. Verifie en direct apres redemarrage (24/08/2026). CLOTURE chantier DSH. - [hermes-nyora/dsh-vps-secrets-en-dur-incident.md](hermes-nyora/dsh-vps-secrets-en-dur-incident.md) -- INCIDENT SECURITE : BIFROST_API_KEY et OPENCODE_DIRECT_API_KEY commitees en clair dans entrypoint.sh d'un repo Gitea initialement PUBLIC (bolbol/dsh-vps). Detecte par hermes-nyora en relisant avant validation. Repo passe prive, BIFROST_API_KEY rotee en base Bifrost (governance_virtual_keys) et testee fonctionnelle, entrypoint.sh corrige (fail loud au lieu de fallback secret). OPENCODE_DIRECT_API_KEY (= cle maitresse OpenCode.ai partagee, BIFROST_OPENCODE_KEY) reste a roter par Nabil (compte externe). - [hermes-nyora/dsh-vps-rotation-cles-incident-apikey-invalide.md](hermes-nyora/dsh-vps-rotation-cles-incident-apikey-invalide.md) -- Rotation cles dsh-vps (VK Bifrost + OpenCode Zen) apres exposition chat/commit ; incident « API key is invalid » : cause racine = cles en dur residuelles dans compose hote + entrypoint fallback (repo sanitise mais pas l'hote) ; fix env_file + ${VAR:?} + recreation, revocation confirmee, tour UI vert. Pieges : restart ne relit pas .env, sanitisation partielle, StartedAt vs horodatages config (25/08/2026) - [common/rapport-gemini-phase-a-pilote-botmode-20260825.md](common/rapport-gemini-phase-a-pilote-botmode-20260825.md) -- Phase A bascule hermes-nyora v2026.8.19 (0.20.5) : backup pre-upgrade (81Mo), bascule image unique sur nyora, continuite 100% validee (Telegram, Cron, MCP Context-Hub, Veille, Notes, SMTP), verrou reseau 8642 etanche (perso/tt bloques, 401 local), Gate 1 reussi (interception deny rules + safe root), Gate 2 documente (roster actif si ui_meta[\x27hermes-bots\x27] dans profile.yaml, injection sur titre \x27Bot Chat\x27, messagerie headless via hermes chat -Q), Browser Use mode teste (uvx 0.1.9, fallback natif auto), VPS Contabo verifie sans 8642 publie (25/08/2026)