Aller au contenu

Lyra

Assistant DevOps vocal local par défaut. On lui parle ou on lui écrit en français ; il pilote des machines virtuelles, des sauvegardes et des appareils au travers de serveurs MCP, et ne lance jamais une action sensible sans confirmation humaine.

English: Lyra is a voice-driven DevOps assistant that runs locally by default (Ollama, faster-whisper, Piper). It drives VMs, backups and devices through MCP servers and never runs a sensitive action without a human confirmation. AGPL-3.0, commercial licence available. Data flows: English version.

Pourquoi local

  • Rien ne sort sans configuration explicite. Modèles de langage, reconnaissance et synthèse vocales tournent sur la machine. Les sorties réseau possibles sont listées une par une, avec la commande qui le vérifie.
  • Pas de facture à l'usage. Les modèles par défaut (0,5 et 1 milliard de paramètres) tiennent dans 4 Go de mémoire graphique, ou tournent sur le processeur, ou sur un Ollama partagé du réseau interne.
  • Fonctionne derrière un proxy et sans Internet. Miroirs internes PyPI et Hugging Face, archive d'installation hors ligne : voir Derrière un proxy, sans Internet.
  • Garanties lisibles dans le code. Confirmation humaine, validation des arguments, règles sudo script par script : chaque garantie renvoie au code et au test qui la tient (Sécurité).

Ce que Lyra sait faire

  • VMs KVM : démarrer, arrêter, cloner, snapshots, exécution de commandes, vérification de clones
  • Backups : status, liste, création, restauration, vérification, nettoyage (Timeshift/Borg/snapshot)
  • Domotique : TV Philips (power, volume, Ambilight, apps, YouTube Premium sans pubs via ADB), lumières Hue (couleurs, scènes, groupes), Chromecast (catt), home cinéma Denon
  • Mode vocal : STT (faster-whisper) + TTS (Piper), 6 voix françaises au choix
  • Mode performance : domotique sans confirmation (latence < 200ms) — jamais pour VM/backup
  • Human-in-the-loop : confirmation obligatoire avant toute action sensible, todo-list pour les actions multiples
  • Opérations async : clone VM, backups longs exécutés en arrière-plan avec notification
  • Démon résident : sessions multiples, pipeline RAG déjà chaud, ~0.3-1s par requête une fois lancé

Le cœur (dialogue, recherche d'outils, démon, mode texte) fonctionne sans aucun serveur MCP ; chacun s'ajoute à l'installation ou ensuite. Pour brancher sa propre infrastructure : Ajouter un serveur MCP.

Comment ça marche

Chaque requête traverse le démon lyra-daemon (socket Unix, pipeline RAG déjà chargé en mémoire, plusieurs sessions en parallèle). Le RAG à 3 niveaux (registry / capabilities / parameters dans ChromaDB) retrouve les outils MCP pertinents ; un système de règles déterministes (lyra/rules/) court-circuite EPHAISTOS pour les cas fréquents et fiables ; sinon EPHAISTOS extrait les arguments (avec un encodage TOON qui compresse les specs d'environ 40 % — sauté si le modèle fait moins d'1B, il ne le comprend pas encore) ; LYRA porte la conversation et le ton ; HESTIA exécute et route vers le bon serveur MCP.

flowchart LR
    subgraph ENTREE["Entree utilisateur"]
        direction TB
        USER(["Texte ou voix"])
        STT["faster-whisper (STT)"]
    end

    subgraph DAEMON["lyra-daemon (socket unix, multi-session)"]
        direction TB
        PRE["SlangNormalizer + ContextInjector"]
        IC{"IntentClassifier"}
        PRE --> IC
    end

    subgraph RAG["RAG Enhanced"]
        direction TB
        R3["RAG3Tier (ChromaDB)<br/>registry / capabilities / parameters"]
        EMB["embeddings<br/>all-MiniLM-L6-v2"]
        FUS["fallback<br/>BM25 + Semantic + RRF"]
        RULES{"rules.detect()<br/>vm, backup, hue, denon,<br/>tv, catt, tracking,<br/>ironman, screen_manager"}
        R3 --> EMB
        R3 --> RULES
    end

    subgraph MODELES["Modeles locaux (Ollama)"]
        direction TB
        TOON["encodage TOON<br/>(si modele >= 1B)"]
        EPH["EPHAISTOS<br/>qwen2.5-coder:0.5b"]
        LYR["LYRA<br/>llama3.2:1b"]
        TOON --> EPH
    end

    subgraph EXEC["HESTIA - execution MCP"]
        direction TB
        HES["HESTIA"]
        M1["fedora-agents"]
        M2["hue-mcp"]
        M3["pylips-mcp"]
        M4["denon-mcp"]
        M5["catt-mcp"]
        M6["tracking"]
        HES --> M1
        HES --> M2
        HES --> M3
        HES --> M4
        HES --> M5
        HES --> M6
    end

    subgraph SORTIE["Sortie"]
        direction TB
        TTS["Piper TTS"]
        TXT["Reponse texte"]
    end

    USER --> PRE
    USER -. vocal .-> STT
    STT --> PRE
    IC -->|demande| R3
    IC -->|info / discussion| LYR
    RULES -->|match : court-circuit| HES
    RULES -->|pas de match| TOON
    EPH --> HES
    R3 -. si RAG3Tier desactive .-> FUS
    FUS --> RULES
    HES --> LYR
    LYR --> TTS
    LYR --> TXT

Par où commencer

Je veux… Page
savoir si ma machine suffit Matériel
essayer sans rien installer chez moi Essayer sans rien installer
installer Installation
comprendre ce qui est capté et ce qui sort Flux de données
piloter mes propres outils Ajouter un serveur MCP
voir les mesures Benchmarks