# Agent GUI Local

Web app locale qui sert de surcouche graphique universelle pour agents LLM CLI.

V1 incluse:

- Backend Python sans dépendance externe.
- Frontend HTML/CSS/JS vanilla.
- Chat local.
- Sessions JSONL.
- Adaptateur Echo pour tester sans modèle.
- Adaptateur CLI universel pour brancher Hermes, Claude Code, OpenClaw, etc.
- Bureau pixel art animé avec petits personnages façon arcade.
- Avatar de bureau en mode sprite, avec états: idle, thinking, tool, speaking, error.

## Lancer

```bash
cd /home/wildlama/agent-gui
python3 -m agent_gui.app --host 127.0.0.1 --port 8765
```

Puis ouvrir:

```text
http://127.0.0.1:8765
```

## Tester

```bash
cd /home/wildlama/agent-gui
python3 -m unittest discover -s tests -v
```

Smoke-test API:

```bash
curl http://127.0.0.1:8765/health
curl -X POST http://127.0.0.1:8765/api/chat \
  -H 'Content-Type: application/json' \
  -d '{"agent":"echo","message":"hello"}'
```

## Ajouter un agent

Éditer:

```text
/home/wildlama/agent-gui/configs/agents.json
```

Exemple:

```json
{
  "id": "mon-agent",
  "name": "Mon Agent",
  "type": "cli",
  "description": "Agent CLI custom",
  "command": ["mon-agent", "run", "{prompt}"],
  "timeout_seconds": 300,
  "enabled": true
}
```

Règles:

- `{prompt}` est remplacé par le message utilisateur.
- `{session_id}` peut être utilisé si l'agent accepte un identifiant de session.
- La commande est une liste d'arguments, pas une string shell.
- Le backend n'utilise pas `shell=True`, pour éviter les injections shell.

## Agents préconfigurés

- `echo`: intégré, marche toujours.
- `hermes`: `hermes chat -q {prompt}`.
- `claude-code`: `claude -p --output-format text --permission-mode default {prompt}`.
- `openclaw`: exemple désactivé, à ajuster selon ton installation.

## Limites V1

- Pas encore de streaming token par token.
- Pas encore d'approbations interactives dans l'UI.
- Les agents CLI sont appelés en one-shot.
- Les sorties tool calls ne sont pas encore parsées profondément, elles sont affichées comme messages ou status.

## Suite logique

- Ajouter SSE ou WebSocket pour streaming temps réel.
- Ajouter des sprites 2D par état à la place de l'ASCII.
- Ajouter un protocole d'événements JSON optionnel pour agents compatibles.
- Ajouter un adaptateur Hermes profond via API gateway ou ACP.
- Ajouter un panneau fichiers / workspace.
- Ajouter approvals UI pour commandes dangereuses.

Voir aussi:

```text
/home/wildlama/agent-gui/PLAN.md
```
