bruno 2065af3aeb fix: ajouter Cache-Control no-store pour éviter cache navigateur
Le navigateur gardait l'ancien HTML en cache, affichant 'Déconnecté'
de la Phase 1 au lieu du nouveau code Phase 2 avec le micro.
2026-06-19 23:57:58 -04:00

JARVIS v3 — Assistant Vocal Intelligent

Phase 1 : Relay WebSocket → Hermes A.L.E.X.A. PoC fonctionnel — interface chat texte en temps réel

🎯 Objectif

Assistant vocal intelligent avec mémoire persistante, connecté à l'API Hermes A.L.E.X.A. Phase 1 valide la communication texte en temps réel via WebSocket.

🏗️ Architecture

┌──────────────┐     WebSocket      ┌──────────────┐     HTTP/POST      ┌──────────────┐
│  Navigateur  │ ◄──────────────► │  bot_direct  │ ◄───────────────► │  Hermes API  │
│  (test.html) │   ws://host/ws    │   .py :7081   │  localhost:8642   │  A.L.E.X.A.  │
└──────────────┘                   └──────────────┘                    └──────────────┘
                                          │
                                          ▼
                                   ┌──────────────┐
                                   │  Infisical    │
                                   │  (clé API)    │
                                   └──────────────┘

📦 Fichiers

Fichier Rôle
bot_direct.py Serveur WebSocket + interface HTML inline
launcher.py Récupère la clé Hermes via Infisical puis lance bot_direct.py
run_direct.py Lanceur manuel (alternative à systemd)
bot.py Tentative Pipecat 1.4.0 (non fonctionnel — pour référence)
test.html Interface chat (intégrée inline dans bot_direct.py)
start.sh Script Pipecat original (obsolète)

🚀 Démarrage

Avec systemd (recommandé)

# Statut
systemctl --user status jarvis-v3

# Logs
journalctl --user -u jarvis-v3 -f

# Redémarrer
systemctl --user restart jarvis-v3

Manuel

cd ~/workspace/jarvis-pipecat
source venv/bin/activate
python3 run_direct.py

🌐 Accès

⚙️ Configuration

Variable Valeur Description
JARVIS_PORT 7081 Port d'écoute
HERMES_API_KEY (Infisical) Clé API Hermes
HERMES_URL http://localhost:8642/v1/chat/completions Endpoint API

🔑 Secret

La clé API Hermes est stockée dans Infisical (/hermes-claw/API_SERVER_KEY). Le launcher (launcher.py) la récupère automatiquement au démarrage.

🛠️ Dépendances

websockets==16.0
httpx

Installées dans venv/.

📊 Roadmap

Phase Contenu Statut
Phase 1 Chat texte WebSocket + Hermes ✅ Stable
Phase 2 Audio (STT Parakeet + TTS Edge/Kokoro) 🔜 Planifié
Phase 3 Intégration Pipecat WebRTC 🔜 Planifié
Phase 4 Multi-agent, barge-in, wake word 📋 Backlog

🔧 Maintenance

# Voir les logs
journalctl --user -u jarvis-v3 -n 50

# Redémarrer après modification
rm -rf ~/workspace/jarvis-pipecat/__pycache__/
systemctl --user restart jarvis-v3

# Arrêter
systemctl --user stop jarvis-v3

📝 Notes techniques

  • websockets 16.0 : respond() ne prend que (status, text). Pour les headers custom, retourner un objet Response manuellement (from websockets.http11 import Response, Headers).
  • Content-Type : doit être text/html; charset=utf-8 pour que le navigateur rende l'interface.
  • Pipecat 1.4.0 : API massivement refactorée, LLMMessagesFrame supprimée, LLMContext n'est plus un processeur. Abandonné pour la Phase 1, à réévaluer en Phase 3.

📄 Licence

Projet personnel — Bruno Charest, 2026.

S
Description
JARVIS v3 — Assistant vocal WebSocket + Hermes A.L.E.X.A.
Readme
93 KiB
Languages
Python 100%