398ad2f29567b3a935132f18179f9bc286995798
- process_request retourne None UNIQUEMENT pour /ws - Tous les autres chemins (/favicon.ico, etc.) reçoivent 404 - Évite que websockets tente un handshake sur des requêtes HTTP normales
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
- URL : http://openclaw1.dev.home:7081/
- WebSocket : ws://openclaw1.dev.home:7081/ws
- Port : 7081 (configurable via
JARVIS_PORT)
⚙️ 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 objetResponsemanuellement (from websockets.http11 import Response, Headers). - Content-Type : doit être
text/html; charset=utf-8pour que le navigateur rende l'interface. - Pipecat 1.4.0 : API massivement refactorée,
LLMMessagesFramesupprimée,LLMContextn'est plus un processeur. Abandonné pour la Phase 1, à réévaluer en Phase 3.
📄 Licence
Projet personnel — Bruno Charest, 2026.
Languages
Python
100%