MIRA is an open-source, local-first multimodal assistant built with ROS 2. It combines offline speech recognition, interruptible Pocket TTS, Ollama, opt-in vision, auditable Markdown memory, and a real-time Next.js interface.
Assistant vocal local et interrompable construit sur ROS 2, avec mémoire Markdown, vision volontaire et interface Next.js en temps réel.
Sur Ubuntu 22.04 x86-64 ou ARM64 :
curl -fsSL https://raw.githubusercontent.com/w4coder/mira-ros2/main/install.sh | bashL'installateur récupère ROS 2 Humble, un Node.js isolé, les dépendances Python/JavaScript, construit le workspace et précharge Pocket TTS avec la voix Estelle. Il ne demande aucune clé cloud. Le dépôt GitHub cible peut être remplacé ainsi :
curl -fsSL URL_INSTALL_SH | MIRA_REPOSITORY=https://github.com/organisation/depot.git bashPuis :
mira doctor
mira startOuvrez http://localhost:3000. La première initialisation des modèles peut prendre
plusieurs minutes. Pour installer depuis un clone existant, une seule commande suffit
également : ./install.sh.
mira demoLe mode démo utilise exclusivement un échange fictif. Il n'ouvre ni micro, ni caméra, ni mémoire personnelle et ne contacte aucun fournisseur d'IA.
Lire la démonstration avec la voix Pocket TTS Estelle de MIRA (MP4 H.264/AAC)
- capture micro, mot de réveil et transcription locale ;
- orchestration de tours, interruptions et tâches prioritaires ;
- cognition via un modèle Ollama configurable ;
- synthèse Pocket TTS locale, progressive et interrompable, voix Estelle ;
- mémoire auditable en Markdown avec index Chroma reconstructible ;
- caméra et partage d'écran activés uniquement par l'utilisateur ;
- état, conversation, mémoire et contrôles dans une interface WebSocket/Next.js.
micro/caméra → nœuds de perception → orchestrateur → cognition/mémoire
↓
interface Next.js ↔ bridge WebSocket local ← ROS 2 → synthèse vocale
La vue détaillée et les contrats sont décrits dans docs/architecture.md.
Copiez .env.example vers .env pour modifier les valeurs locales. Les réglages
essentiels sont :
| Variable | Défaut | Usage |
|---|---|---|
MIRA_DATA_DIR |
~/.local/share/mira |
mémoire, index, modèles et caches |
MIRA_WS_HOST |
127.0.0.1 |
adresse du bridge |
MIRA_WS_PORT |
8765 |
port du bridge |
MIRA_WS_TOKEN |
vide en local | obligatoire hors boucle locale |
MIRA_POCKET_LANGUAGE |
french_24l |
modèle de langue Pocket TTS |
MIRA_POCKET_VOICE |
estelle |
voix Pocket TTS prédéfinie |
MIRA_POCKET_THREADS |
2 |
threads CPU consacrés à la synthèse |
MIRA_STT_DEVICE |
cpu |
cpu ou cuda |
MIRA_DIARIZATION_DEVICE |
cpu |
périphérique PyTorch |
Après une modification de NEXT_PUBLIC_ROBOT_WS_*, exécutez mira build : ces
variables sont intégrées au bundle navigateur pendant la compilation Next.js.
Le parcours de base est CPU et local. CUDA et pyannote restent optionnels et ont leurs propres prérequis ; consultez THIRD_PARTY.md.
Les dossiers memory_vault/, memory_index/, .runtime/, les modèles, les médias et
.env sont ignorés par Git. Le bridge écoute uniquement sur 127.0.0.1 par défaut.
N'exposez jamais directement le port 8765 sur Internet. Consultez SECURITY.md
et lancez ce contrôle avant publication :
mira checknpm --prefix ui-next run lint
npm --prefix ui-next run build
source /opt/ros/humble/setup.bash
source install/setup.bash
colcon test --event-handlers console_direct+Les instructions de contribution sont dans CONTRIBUTING.md. Les cas d'utilisation et la reproduction des médias sont dans docs/use-cases.md.
Mira est un projet expérimental : ce n'est ni un dispositif médical, ni un système de sécurité, ni un contrôleur robotique certifié. L'installation automatisée cible Ubuntu 22.04 et ROS 2 Humble. Le fonctionnement des périphériques audio/vidéo dépend de la machine et doit être validé localement.
Le code est sous Apache License 2.0. Les modèles, voix et services tiers restent soumis à leurs propres licences et ne sont pas incorporés au dépôt.

