Skip to main content
Glama
sosoj92

Jarvis Assistant Vocal MCP Server

by sosoj92
README.md
# đŸ€– Jarvis — assistant vocal local

*[English version](README.en.md)*

![Python](https://img.shields.io/badge/python-3.13-blue)
![License](https://img.shields.io/badge/license-MIT-green)
![Platform](https://img.shields.io/badge/platform-Windows-lightgrey)
![Mode](https://img.shields.io/badge/mode-cloud%20%7C%20local-orange)

Un assistant vocal en français qui tourne **sur ta machine**. Dis *« Hey Jarvis »*,
parle naturellement : il raisonne avec un LLM, utilise une boĂźte Ă  outils extensible
(domotique, PC, web, téléphone
) et te répond à voix haute. Trois modes au choix :
**hybride**, **qualité** (OpenAI + ElevenLabs) ou **100 % local hors ligne**
(Ollama + Piper).

**🧠 Jarvis + Hermes.** Pour la rĂ©flexion de fond et la recherche, Jarvis **dĂ©lĂšgue Ă 
[Hermes](docs/hermes.md)**, un agent délibératif qui tourne **en local** (conteneur
Docker). La doctrine est nette : **Hermes orchestre et pense ; Jarvis détient les clés
et le corps** — c'est toujours Jarvis qui exĂ©cute les actions, jamais Hermes, et
**aucun identifiant ne vit dans l'environnement d'Hermes** (il lit le Vault et les
outils sûrs, écrit seulement des brouillons).

> Projet perso partagé tel quel. Cible **Windows 11**, nécessite un micro et (en mode
> cloud) une clé API OpenAI Platform. L'abonnement ChatGPT est séparé de l'API. La plupart des intégrations sont **optionnelles** et se
> désactivent proprement si non configurées.

## ✹ FonctionnalitĂ©s

- đŸŽ™ïž **Tout Ă  la voix** — mot d'activation (openWakeWord), transcription locale (Whisper), rĂ©ponses parlĂ©es
- đŸ‘ïž **Vision de l'Ă©cran** — « c'est quoi cette erreur ? », « lis ça », « traduis » (capture → LLM)
- 💡 **Domotique** — Philips Hue (allumer, luminositĂ©, couleur), ambiances/scĂšnes
- 🎬 **Streaming** — contrîle d'OBS (direct, enregistrement, scùnes, replay)
- đŸ–„ïž **ContrĂŽle PC** — lancer des apps, mĂ©dia/volume, stats GPU/CPU/RAM en direct
- 📅 **Agenda** — Google Agenda sur **tous** tes agendas (y compris abonnĂ©s iCal), crĂ©ation/suppression avec confirmation
- 📧 **Mail** — rĂ©sumĂ©s Gmail et rĂ©daction
- 💬 **Discord** — mentions + rĂ©cap des messages du jour
- 📾 **Instagram** — abonnĂ©s & vues des vidĂ©os vs la veille (multi-comptes)
- đŸœïž **RĂ©servations web** — rĂ©serve resto/rendez-vous via un vrai navigateur (Playwright)
- 🌐 **Assistant navigateur** — rĂ©sume/traduit l'onglet actif, gĂšre les onglets, agit sur les pages (ton vrai Chrome)
- 📞 **Appels tĂ©lĂ©phoniques** — Twilio : jouer un message, ou une vraie conversation temps rĂ©el
- 🧠 **MĂ©moire long terme** — retient tes prĂ©fĂ©rences, tes proches, tes projets
- đŸ“± **Pont iPhone** — envoie idĂ©es/notes et commandes depuis l'app Raccourcis (Siri comme tĂ©lĂ©commande Ă  distance)
- 🎭 **PersonnalitĂ©s** — majordome sarcastique, neutre, concis — changeable Ă  la voix
- 🏠 **PrĂ©sence** — ping ton tĂ©lĂ©phone, dĂ©clenche des scĂšnes quand tu pars/reviens
- đŸŒ€ïž **Utilitaires** — mĂ©tĂ©o, minuteurs, heure/date
- 🔌 **Serveur MCP** — expose les outils domotique/PC à tout client MCP (Claude Desktop, Hermes
)
- 🎬 **Hub de contenu** — vault d'inspirations Insta/TikTok (tĂ©lĂ©charge, transcrit, indexe), idĂ©es & scripts gĂ©nĂ©rĂ©s, ingestion YouTube ([docs/hub_contenu.md](docs/hub_contenu.md))
- đŸ—‚ïž **Suivi de contenus** — pipeline vidĂ©o *idĂ©e → script → tournage → montage → publiĂ©*, croisĂ© avec ton agenda ; « oĂč j'en suis ? » ([docs/suivi_contenu.md](docs/suivi_contenu.md))
- đŸ€ **DĂ©lĂ©gation Ă  Hermes** — confie la rĂ©flexion / recherche de fond Ă  un agent dĂ©libĂ©ratif **local** (doctrine : Jarvis tient les clĂ©s & le corps, Hermes pense) ([docs/hermes.md](docs/hermes.md))
- 🧭 **Panneau web local** (`/panneau`) — modĂšles (LLM Ollama + Whisper, reco selon la VRAM), Ă©tat de la chaĂźne, permissions — **accessible en local uniquement** ([docs/panneau.md](docs/panneau.md))
- 🔐 **SĂ©curitĂ© graduĂ©e** — niveaux **N1/N2/N3** par outil, « toujours autoriser » rĂ©vocable, budget LLM par fournisseur
- 💾 **Routage & budgets** — 4 backends (local / hybride / qualitĂ©), suivi des coĂ»ts jour/mois par fournisseur (OpenAI, ElevenLabs, Twilio, Hermes), plafonds avec alerte vocale Ă  80 % et **bascule auto en local** au plafond ([docs/costs.md](docs/costs.md))
- ⏻ **Extinction / rĂ©veil du PC** — extinction propre Ă  la voix (confirmation N3, dĂ©lai annulable) ; rĂ©veil par prise connectĂ©e ou Wake-on-LAN ([docs/wol.md](docs/wol.md))
- ✋ **Gestes de la main** — pilote lumiĂšres / mĂ©dia / OBS d'un geste via webcam, **100 % local** (MediaPipe en sous-process isolĂ©, aucune image ne sort) ([docs/gestes.md](docs/gestes.md))
- đŸŽ” **Reconnaissance musicale** — « c'est quoi cette musique ? » (micro de la piĂšce **ou** son d'une vidĂ©o/reel via loopback), Ă  la demande uniquement ([docs/musique.md](docs/musique.md))
- đŸȘŸ **Overlay de rĂ©ponses** — mini-fenĂȘtre flottante qui affiche Ă  l'Ă©crit ce que Jarvis dit, sans jamais voler le focus (topmost, clic-transparent, invisible en stream), 2e Ă©cran configurable + mode silencieux visuel ([docs/overlay.md](docs/overlay.md))
- 🏠 **Google Home / Nest** — *(⚠ expĂ©rimental)* liste des appareils Nest + Ă©tat ([docs/google_home.md](docs/google_home.md))
- đŸ”” **Alexa / Echo** — *(via API non officielle)* annonces/TTS, mĂ©dia, et contrĂŽle d'appareils via Routines (« allume la clim », « Ă©teins la tĂ©lĂ© ») ([docs/alexa.md](docs/alexa.md))

## 🎬 DĂ©mo

> đŸ“ș *VidĂ©o / GIF de dĂ©mo Ă  venir — placeholder.*

## đŸ—ïž Architecture

```mermaid
flowchart LR
    Mic([đŸŽ™ïž Micro]) --> WW[openWakeWord<br/>« Hey Jarvis »]
    WW --> STT[faster-whisper<br/>STT — local]
    STT --> LLM{{LLM<br/>OpenAI ☁ OU Ollama 🏠}}
    LLM <-->|appels d'outils| TOOLS[🧰 Outils]
    LLM --> TTS{{TTS<br/>ElevenLabs ☁ OU Piper 🏠}}
    TTS --> SPK([🔊 Haut-parleurs])

    TOOLS -.-> HOME[💡 Hue / 🎬 OBS / đŸ–„ïž PC]
    TOOLS -.-> NET[📅 Agenda / 📧 Mail / 💬 Discord / 📾 Instagram]
    TOOLS -.-> CDP[🌐 Chrome via CDP]
    TOOLS -.-> TW[📞 Appels Twilio]
    TOOLS -.->|dĂ©lĂšgue la rĂ©flexion| HERMES[🧠 Hermes<br/>agent dĂ©libĂ©ratif local]
    TOOLS -.-> MCP[[🔌 Serveur MCP]]
    HERMES -.->|lit les outils sûrs| MCP
    MCP -.-> EXT[Claude Desktop / autres clients]
    PANEL[🧭 Panneau web local<br/>modĂšles · Ă©tat · permissions] -.-> TOOLS
```

> **Jarvis tient les clés & le corps** (il exécute) ; **Hermes pense** (réflexion, recherche,
> analyse du Vault). Hermes ne voit que les **outils sûrs** exposés par le serveur MCP de Jarvis.

## ☁ Cloud vs 🏠 Local

| | **cloud** (défaut) | **local** (hors ligne) |
|---|---|---|
| LLM | OpenAI Responses API (`gpt-5.6-terra` / `gpt-6-astra`) | Ollama (`qwen3.5:4b`
) |
| Voix | ElevenLabs | Piper (français) |
| Transcription | faster-whisper (local) | faster-whisper (local) |
| Qualité | maximale | bonne (selon le modÚle) |
| Coût | à l'usage | gratuit |
| Vie privée | appels API | **rien ne sort de la machine** |
| Matériel | léger | GPU recommandé |

Bascule en une ligne : `mode: local`, `hybride` (dĂ©faut) ou `qualite` — ou Ă  la voix « passe en local ». Voir [docs/local.md](docs/local.md) et [docs/costs.md](docs/costs.md)
pour le bilan honnĂȘte de fiabilitĂ© (un modĂšle 7B gĂšre bien les outils domotique/PC ;
les **features à vision comme le navigateur & les réservations restent cloud recommandé**).

**MatĂ©riel local (honnĂȘte) :** Whisper `medium` ≈ 2–3 Go VRAM, `qwen3.5:4b` (Q4) ≈ 3 Go —
une carte **6 Go** (RTX 2060/3060) fait tourner les deux confortablement. Le `qwen3.5:9b`
(~6 Go) demande plus de marge. Piper est temps réel sur CPU. `python scripts/doctor.py`
conseille le modĂšle selon ta VRAM.

## 🚀 DĂ©marrage rapide

Prérequis : **Python 3.13**, [uv](https://docs.astral.sh/uv/), Windows 11, un micro.

```bash
uv sync
uv run playwright install chromium        # pour les réservations / le navigateur
copy config.example.yaml config.yaml      # puis remplis ce dont tu as besoin
uv run python jarvis14.py
```

Dis **« Hey Jarvis »**. Le seul réglage strictement requis est `openai.cle` (mode
cloud) ou un modĂšle local (mode local). Tout le reste est optionnel.

DĂ©butant complet ? Vois **[INSTALL_WITH_AI.md](INSTALL_WITH_AI.md)** — Ă  coller dans
n'importe quelle IA gratuite, elle t'installe tout pas Ă  pas. Ou lance l'installateur
interactif : `python scripts/setup.py`. Un souci ? `python scripts/doctor.py` diagnostique.

## đŸ€ Se faire aider par une IA (gratuitement)

**Pour INSTALLER** (aucune connaissance requise) — l'option zĂ©ro friction : ouvre
n'importe quel chatbot gratuit ([Claude.ai](https://claude.ai),
[ChatGPT](https://chat.openai.com), [Gemini](https://gemini.google.com)), colle le
contenu de **[INSTALL_WITH_AI.md](INSTALL_WITH_AI.md)**, et laisse-toi guider.

**Pour MODIFIER / bidouiller le code**, plusieurs options gratuites :

- 🏠 **Cline ou Aider + Ollama** — un assistant de code **100 % local et gratuit**, dans
  l'esprit du projet. Le must si tu veux rester hors ligne.
- **Gemini CLI** — gratuit, limites gĂ©nĂ©reuses, agentique dans le terminal.
- **GitHub Copilot Free** — niveau gratuit dans VS Code.
- **Cursor** (offre gratuite) — pratique pour dĂ©couvrir, mais limitĂ©.
- **Claude Code** — si tu l'as (c'est ce qui a construit ce projet).

Aucun outil n'est imposé : prends celui qui te convient.

## ⚙ Configuration

Tout est dans un unique `config.yaml` **non versionné** (copié depuis
`config.example.yaml`, qui documente chaque clé). Nouvelles sections cÎté config :
`cloud`/`openai` (LLM cloud), `tts`/`elevenlabs` (voix), `hermes` (délégation), `integrations`/`hub` (Vault + génération), `suivi` (pipeline
de contenus), `securite.toujours` (autorisations N2 mémorisées), `budget.prix`
(coût LLM), `serveur`/`pont_iphone`. Guides par intégration :

| Intégration | Guide |
|---|---|
| OpenAI / GPT-6 Astra | [docs/openai.md](docs/openai.md) |
| Cloud vs local, Ollama, Piper | [docs/local.md](docs/local.md) |
| Routage 4 backends, coûts & budgets | [docs/costs.md](docs/costs.md) |
| Philips Hue | [docs/hue.md](docs/hue.md) |
| OBS | [docs/obs.md](docs/obs.md) |
| Google Agenda + iCal | [docs/agenda.md](docs/agenda.md) |
| Détection de présence | [docs/presence.md](docs/presence.md) |
| Bot Discord | [docs/discord.md](docs/discord.md) |
| Appels Twilio | [docs/appels.md](docs/appels.md) |
| Navigateur (Chrome CDP) | [docs/navigateur.md](docs/navigateur.md) |
| Réservations web | [docs/reservation.md](docs/reservation.md) |
| Instagram | [docs/instagram.md](docs/instagram.md) |
| Serveur MCP | [docs/mcp.md](docs/mcp.md) |
| Pont iPhone (Raccourcis) | [docs/iphone.md](docs/iphone.md) |
| **Hermes (délégation, cloisonnement)** | [docs/hermes.md](docs/hermes.md) |
| **Hub de contenu (Vault + génération)** | [docs/hub_contenu.md](docs/hub_contenu.md) |
| **Suivi de contenus** | [docs/suivi_contenu.md](docs/suivi_contenu.md) |
| **Panneau web (modÚles · état · permissions)** | [docs/panneau.md](docs/panneau.md) |
| **Extinction / Wake-on-LAN** | [docs/wol.md](docs/wol.md) |
| **Gestes de la main (webcam)** | [docs/gestes.md](docs/gestes.md) |
| **Reconnaissance musicale (Shazam-like)** | [docs/musique.md](docs/musique.md) |
| **Spotify (playlist des musiques reconnues)** | [docs/spotify.md](docs/spotify.md) |
| **Cockpit (tableau de bord perso, local)** | [docs/cockpit.md](docs/cockpit.md) |
| **Overlay de rĂ©ponses (fenĂȘtre flottante)** | [docs/overlay.md](docs/overlay.md) |
| **Google Home / Nest** *(⚠ expĂ©rimental)* | [docs/google_home.md](docs/google_home.md) |
| **Alexa / Echo** *(via API non officielle)* | [docs/alexa.md](docs/alexa.md) |
| **Latence perçue (UX)** | [docs/latency.md](docs/latency.md) |

## đŸ›Ąïž Éthique & SĂ©curitĂ©

La confiance est intégrée, pas rajoutée :

- **Confirmation vocale** avant toute action irréversible (envoi de mail, réservation, suppression, appel
).
- **Les appels se prĂ©sentent** honnĂȘtement : *« Bonjour, je suis l'assistant vocal automatisĂ© de [prĂ©nom]
 »* — jamais en se faisant passer pour un humain.
- **Jamais** de mot de passe ni de données bancaires saisis, jamais de paiement automatique.
- **Domaines protégés** (banque, impÎts, santé) sur ton vrai navigateur = **lecture seule**.
- **Secrets & donnĂ©es perso jamais versionnĂ©s** (`config.yaml`, mĂ©moire, logs, transcriptions d'appels, tokens OAuth — tous gitignorĂ©s).
- Au téléphone, Jarvis ne confirme que ce que tu as validé **avant** l'appel.
- **Niveaux de permission N1/N2/N3** : chaque outil a un niveau — **N1** sĂ»r (auto, local + iPhone), **N2** sensible (confirmation ; « toujours autoriser » rĂ©vocable), **N3** critique (confirmation Ă  chaque fois, jamais mĂ©morisable, **jamais Ă  distance**). Extinction du PC, mails, appels, rĂ©servations = N3.
- **Pont iPhone** : à distance, seuls les outils **sûrs (N1)** s'exécutent ; toute action sensible est refusée (« à faire à la voix à la maison »). Un token volé ne peut qu'allumer/éteindre des lumiÚres.
- **Cloisonnement Hermes** : Hermes lit le Vault et les outils **en lecture seule**, Ă©crit uniquement des brouillons — **aucun credential** dans son environnement.

## đŸ—ș Roadmap

- [x] **Délégation à Hermes** (agent délibératif local) + gateway Telegram (whitelist stricte)
- [x] **Hub de contenu** : Vault d'inspirations + génération d'idées/scripts + ingestion YouTube
- [x] **Suivi de contenus** : pipeline idĂ©e → publiĂ©, croisĂ© avec l'agenda
- [x] **Panneau web local** : modÚles · état de la chaßne · permissions **N1/N2/N3** · budget LLM
- [x] **Extinction propre du PC** (N3, dĂ©lai annulable) — rĂ©veil par prise connectĂ©e / Wake-on-LAN
- [ ] ContrÎle des lampes vidéo Godox (aujourd'hui Hue seulement)
- [x] Notes / idĂ©es (+ pont iPhone via Raccourcis) — rappels programmĂ©s Ă  venir
- [ ] Pilotage direct de la prise connectée par Jarvis (`rallumer_pc` avec garde-fou ping)
- [ ] TTS en streaming phrase par phrase (voir [docs/latency.md](docs/latency.md))
- [ ] Boucle navigateur en 100 % local : la vision de `qwen3.5` lit dĂ©jĂ  le texte des boutons (testĂ©) — reste Ă  valider le pilotage complet
- [ ] Rafraßchissement auto des tokens Instagram entre redémarrages (partiel aujourd'hui)

## đŸ€ Contribuer

Ajouter un outil = un seul fichier dans `tools/` avec un dĂ©corateur `@outil(...)` — il
est auto-découvert, aucun cùblage. Issues et PR bienvenues. Merci de ne jamais committer
de vrais secrets (vois `.gitignore`).

## 📄 Licence

MIT — voir [LICENSE](LICENSE).