# Pour les agents IA

Cette page s’adresse aux assistants qui pilotent un serveur (Claude Code, Codex, Cursor, ChatGPT…). Elle suffit pour installer NeverWiped, vérifier que la sauvegarde fonctionne et restaurer, **sans intervention humaine** sauf deux moments : fournir la clé d’API et recevoir la clé de récupération. Version Markdown : https://docs.neverwiped.com/agents-ia.md. Index : https://docs.neverwiped.com/llms.txt.

## Règles

1. Toutes les commandes se lancent en **root** (préfixez par `sudo` sinon).
2. Ajoutez **toujours `--yes`** : sans terminal, l’agent `neverwiped` refuse de deviner et s’arrête avec `aucune réponse possible (entrée non interactive) : relancez avec --yes pour confirmer sans question`.
3. Un code de sortie différent de `0` est un échec : lisez la ligne `Erreur : …` (`Error: …` en anglais et en espagnol) sur la sortie d’erreur et consultez https://docs.neverwiped.com/depannage.md. `2` = mauvaise utilisation (option, argument ou clé manquants).
4. **Ne restaurez jamais en place** (`restore` sans `--target`) sans l’accord explicite de l’humain : cela écrase les fichiers actuels. Pour tout test, utilisez `--target`.
5. **Ne stockez la clé de récupération nulle part** sur le serveur, dans un dépôt Git, un fichier de projet ou vos notes : transmettez-la à l’humain et demandez-lui de la ranger dans son gestionnaire de mots de passe.
6. Ne lancez pas deux commandes `neverwiped` en même temps (`une autre opération neverwiped est déjà en cours`).
7. **Langue** : l’agent suit la langue du système (anglais par défaut). Les sorties citées sur cette page sont en français : exportez `NEVERWIPED_LANG=fr` avant toutes les commandes pour les retrouver mot pour mot, ou appuyez-vous sur les sorties `--json` (`status --json`, `list --json`) et les codes de sortie, qui ne dépendent pas de la langue. Pour parler à l’humain dans sa langue, gardez sa langue système ou choisissez `NEVERWIPED_LANG=en|es`.
8. **Ne lancez jamais `neverwiped recover` sans l’accord explicite de l’humain** : il révoque l’accès au stockage de l’ancien serveur, qui cesse de sauvegarder s’il tournait encore.

## Étape 0 — Vérifier les prérequis

```sh
uname -sm                       # attendu : Linux x86_64 ou Linux aarch64
id -u                           # attendu : 0 (sinon utilisez sudo)
command -v curl || command -v wget
command -v sha256sum || command -v openssl
curl -fsS -o /dev/null -w '%{http_code}\n' https://neverwiped.com/install.sh    # attendu : 200
command -v neverwiped && neverwiped status                           # déjà installé ?
```

Si `neverwiped status` répond déjà avec une ligne `Serveur : …`, l’agent est installé : passez à l’étape 3 (vérifier). Relancer l’installation ne crée pas de doublon, mais ce n’est pas nécessaire.

## Étape 1 — Obtenir la clé d’API

La clé d’API ne s’obtient **que dans l’espace client**, par un humain connecté. Il n’existe pas d’API pour en créer une. Demandez-la à l’humain avec ce message :

> Pour installer la sauvegarde NeverWiped, j’ai besoin d’une clé d’API. Connectez-vous sur https://neverwiped.com/connexion (ou créez un compte sur https://neverwiped.com/inscription et confirmez l’adresse e-mail), ouvrez « Clés d’API » (https://neverwiped.com/espace/cles-api), créez une clé nommée d’après ce serveur, puis collez-moi la clé (elle commence par `nw_acc_`).

Contrôle du format avant de l’utiliser : `nw_acc_` suivi de 43 caractères parmi `A-Z a-z 0-9 _ -`.

```sh
echo "$NEVERWIPED_API_KEY" | grep -Eq '^nw_acc_[A-Za-z0-9_-]{43}$' && echo format-ok
```

Ne l’écrivez pas dans un fichier : passez-la par la variable d’environnement ou l’option `--api-key`. Une fois le serveur enregistré, elle n’est plus utilisée (l’agent reçoit sa propre clé, `nw_agt_…`).

## Étape 2 — Installer

```sh
export NEVERWIPED_API_KEY='nw_acc_…'
export NEVERWIPED_LANG=fr   # sorties en français, comme sur cette page
set -o pipefail   # bash : le code de sortie reflète l’échec de n’importe quelle étape du tube
curl -fsSL https://neverwiped.com/install.sh | sh -s -- --api-key "$NEVERWIPED_API_KEY" --yes 2>&1 | tee /tmp/neverwiped-install.log
echo "code de sortie : $?"   # attendu : 0
```

Variantes : sans `curl`, `wget -qO- https://neverwiped.com/install.sh | sh -s -- --api-key "$NEVERWIPED_API_KEY" --yes` ; pour ajuster le plan, ajoutez des options après `--yes` : `--include /data`, `--exclude "*.log"`, `--no-databases`, `--no-docker`, `--no-backup` (voir https://docs.neverwiped.com/commandes.md).

Sortie attendue, dans cet ordre (les valeurs varient) :

```text
neverwiped installed to /usr/local/bin/neverwiped (sha256 e877d3af…).
NeverWiped 0.3.0 — installation sur vps-prod (Debian GNU/Linux 12 (bookworm))
restic 0.18.1 installé et vérifié (SHA-256) : /var/lib/neverwiped/bin/restic-0.18.1

Plan de sauvegarde proposé :
  • Configuration système : /etc
  • Fichiers web : /var/www
  • PostgreSQL local : export complet par pg_dumpall
…
Valider ce plan de sauvegarde ? oui (--yes)
Serveur enregistré (identifiant be1e7955-1dd6-4211-8002-7746d6ede9e2)
Dépôt chiffré créé (la clé reste sur ce serveur, jamais envoyée)
Sauvegarde hebdomadaire planifiée : crontab de root (16 2 * * 0)

========================================================================
CLÉ DE RÉCUPÉRATION — notez-la maintenant, hors de ce serveur.

    Ab3dEf-GhJkMn-PqRsTu-VwXyZa-b2c3d4-e5f6g7

Elle ne sera plus jamais affichée et NeverWiped ne la connaît pas.
Sans elle, si ce serveur est perdu, vos sauvegardes sont illisibles.
========================================================================

Lancer la première sauvegarde maintenant ? oui (--yes)
Sauvegarde démarrée (install)
Export postgresql (toutes les bases)…
Sauvegarde réussie en 1s : 3,3 Mo ajoutés, 3,2 Mo stockés au total, instantané 8b28999a

Terminé. Commandes utiles : neverwiped status · neverwiped list · neverwiped restore <date> --target /root/restauration
```

Lignes à trouver obligatoirement : `restic 0.18.1 installé et vérifié`, `Serveur enregistré` (ou `Serveur déjà enregistré`), `planifiée :`, `Sauvegarde réussie` (sauf avec `--no-backup`) et `Terminé.`. La ligne `Avertissement : planification automatique impossible` signifie qu’il faut planifier soi-même (voir dépannage).

**Clé de récupération** : c’est la ligne de 6 groupes de 6 caractères séparés par des tirets, sous `CLÉ DE RÉCUPÉRATION`. Transmettez-la immédiatement à l’humain, puis effacez le journal temporaire :

```sh
grep -Eo '^    [A-Za-z0-9]{6}(-[A-Za-z0-9]{6}){5}$' /tmp/neverwiped-install.log | tr -d ' '   # quelle que soit la langue
rm -f /tmp/neverwiped-install.log
```

(En anglais l’encadré s’intitule `RECOVERY KEY`, en espagnol `CLAVE DE RECUPERACIÓN`.)

Message type : « Voici la clé de récupération de vos sauvegardes NeverWiped : `…`. Rangez-la dans votre gestionnaire de mots de passe, hors de ce serveur : elle ne sera plus jamais affichée et NeverWiped ne la connaît pas. Sans elle, si le serveur est perdu, les sauvegardes sont illisibles. » Elle n’apparaît qu’à la création du dépôt : si l’installation a déjà eu lieu, elle ne peut pas être réaffichée.

## Étape 3 — Vérifier

```sh
neverwiped status
```

Contrôles (tous doivent être vrais) :

| Ligne | Attendu |
|---|---|
| `Abonnement   :` | une formule suivie de `(trialing)` ou `(active)` |
| `Sauvegardes  :` | `quotidienne, actives` ou `hebdomadaire, actives` |
| `Dernière     :` | une date récente, pas `aucune sauvegarde pour l’instant` |
| `Planification:` | `minuteur systemd (…)`, `/etc/cron.d/neverwiped` ou `crontab de root (crond)` |

Script de contrôle :

```sh
S="$(neverwiped status)" && echo "$S" | grep -q 'actives' && ! echo "$S" | grep -q 'aucune sauvegarde' && ! echo "$S" | grep -q 'aucune trouvée' && echo STATUS-OK
neverwiped list --json | grep -q '"short_id"' && echo LIST-OK
# variante indépendante de la langue :
J="$(neverwiped status --json)" && echo "$J" | grep -q '"can_backup": true' && ! echo "$J" | grep -q '"last_backup_at": null' && ! echo "$J" | grep -q '"kind": "none"' && echo STATUS-JSON-OK
```

Vérifiez aussi ce que contient le plan (lignes `Dossiers`, `Base`, `Volume`) : si une donnée importante manque (par exemple un dossier d’application hors de `/opt`, `/srv` ou `/var/www`), relancez `neverwiped install --include /chemin --yes` en répétant les options déjà utilisées.

## Étape 4 — Tester une restauration (à faire à l’installation)

```sh
rm -rf /root/nw-test && neverwiped restore latest --target /root/nw-test --yes
test -d /root/nw-test/etc && echo RESTORE-OK
ls /root/nw-test/var/lib/neverwiped/dumps 2>/dev/null   # exports de bases, s’il y en a
rm -rf /root/nw-test
```

Pour un contrôle plus fin d’un dossier : `diff -r /root/nw-test/var/www /var/www` (avant de l’effacer) ne doit montrer que les fichiers modifiés depuis la sauvegarde.

## Restaurer à la demande de l’humain

1. Listez : `neverwiped list` (ou `--json`), choisissez une date `AAAA-MM-JJ`, `latest` ou un identifiant.
2. Restaurez **dans un dossier** : `neverwiped restore 2026-11-03 --target /root/restauration --yes`. Ajoutez `--include /var/www/site` pour un seul chemin.
3. Copiez ce qui est demandé depuis `/root/restauration/<chemin d’origine>`.
4. Base de données : le fichier `.sql` est dans `/root/restauration/var/lib/neverwiped/dumps/` ; les commandes de réimport sont sur https://docs.neverwiped.com/restauration.md. Demandez confirmation avant de réimporter sur une base en service.
5. Restauration en place seulement sur demande explicite : `neverwiped restore 2026-11-03 --yes` (écrase les fichiers sauvegardés par leur version de cette date).

## Autres opérations

| Besoin | Commande |
|---|---|
| Sauvegarder maintenant | `neverwiped backup now` |
| Voir le journal | `tail -n 50 /var/log/neverwiped.log` |
| Ajouter un dossier | `neverwiped install --include /chemin --yes` |
| Désinstaller (sauvegardes conservées) | `neverwiped uninstall --yes` |
| Désinstaller et demander la suppression des sauvegardes (confirmée par le titulaire dans l’espace client) | `neverwiped uninstall --yes --delete-backups` |
| Signaler un problème à l’équipe (avec l’accord de l’humain sur le texte) | `neverwiped feedback --yes --kind bug "…"` : seul le texte, son type et la version de l’agent sont envoyés |
| Serveur perdu : récupérer ses sauvegardes sur un nouveau serveur (**seulement avec l’accord explicite de l’humain**, qui fournit la clé de récupération) | `NEVERWIPED_RECOVERY_KEY='…' neverwiped recover --api-key "$NEVERWIPED_API_KEY" --yes`, puis `neverwiped list`, `neverwiped restore latest --target /root/restauration --yes`, `neverwiped install --yes` (voir https://docs.neverwiped.com/restauration.md) |
| Version | `neverwiped version` |

## Ce que vous ne pouvez pas faire en ligne de commande

Créer un compte, créer une clé d’API, changer de formule, payer, supprimer les sauvegardes d’un serveur ou le compte : tout cela se fait dans l’espace client (https://neverwiped.com/espace), par l’humain.
