# hermes_agent

Installe et configure l'agent Hermes sur storage-01 : binaire, profils, skills, dashboard, gateway HTTP.

## Ce que fait le rôle

- Dépendances + installation du binaire via le script officiel (`curl | bash`) — **seulement si absent**
- `HERMES_HOME=/srv/data/hermes` (données NVMe), code dans `/opt/hermes`
- `.env` : `LM_BASE_URL` → LiteLLM `:4000`, `LM_API_KEY=lm-studio`
- `config.yaml` (profils), services systemd `hermes-agent` (gateway `:8080`) et `hermes-dashboard` (`:9119`)
- Wrapper global `/usr/local/bin/hermes`
- Ouvre le port gateway dans nftables

## Variables principales

| Variable | Défaut |
|---|---|
| `hermes_home` | `/opt/hermes` (code) |
| `hermes_data_dir` | `/srv/data/hermes` (profils/données) |
| `hermes_lm_base_url` | `http://127.0.0.1:4000/v1` |
| `hermes_model` | `hermes-default` |
| `hermes_gateway_port` | 8080 |
| `hermes_dashboard_port` / `hermes_dashboard_allowed_ip` | 9119 / 192.168.1.10 |

## ⚠️ Caveat premier déploiement — deux runs

L'installation du binaire et sa configuration sont dans le même rôle, mais la config est conditionnelle à `hermes_binary.stat.exists` **évalué avant l'installation**. Sur un hôte vierge :

```bash
ansible-playbook -i inventory.yml playbooks/storage-01.yml --tags hermes_agent   # run 1 : installe
ansible-playbook -i inventory.yml playbooks/storage-01.yml --tags hermes_agent   # run 2 : configure
```

## Pièges connus (voir aussi memory feedback_hermes_litellm)

- `LM_API_KEY=lm-studio` obligatoire dans `.env` — sans elle, Hermes boucle en erreurs d'auth
- Lancer `hermes -z` depuis `/srv/data/hermes` (HERMES_HOME), pas depuis `/opt/hermes`
