ASCII Vision : une station terminale tout-en-un avec chat IA, vidéo ASCII et effets 3D
https://github.com/lalomorales22/asciivision
📌 ASCII VISION est une application terminale Rust qui concentre une quantité impressionnante de fonctionnalités dans un seul binaire. Multi-chat IA avec streaming, lecture vidéo en ASCII art, webcam en temps réel, effets 3D, tiling à la Hyprland, jeux intégrés, monitoring système et chat vidéo WebSocket. L’interface en mode texte supporte les couleurs RGB et permet de basculer entre plusieurs fournisseurs d’IA (Claude Haiku 4.5, Grok 4 Fast, GPT-5 Nano, Gemini 3 Flash) ou les modèles locaux Ollama. L’installation se fait en une seule commande via un script qui gère toutes les dépendances.
Le chat IA multi-fournisseurs constitue le cœur de l’application. Les réponses s’affichent caractère par caractère via SSE streaming pour Claude, OpenAI et Grok. Le basculement entre providers se fait avec la touche F2 ou la commande /provider, et chaque conversation est persistée dans SQLite. Les modèles locaux Ollama sont détectés automatiquement et accessibles via un sélecteur numéroté. L’agentic tool use permet à l’IA d’exécuter des commandes shell, de lire et écrire des fichiers, de rechercher dans le codebase et de faire des requêtes HTTP, avec des niveaux d’approbation configurables.
Points clés :
🤥 Chat IA multi-fournisseurs (Claude, Grok, GPT-5, Gemini, Ollama) avec streaming temps réel
🎬 Lecture vidéo MP4 et YouTube en ASCII art via FFmpeg
📷 Webcam convertie en ASCII temps réel avec gestion d’erreur
🎮 Effets 3D terminaux : pluie matrix, plasma, champ d’étoiles, cube filaire, feu, particules
🪟 Tiling fenêtres à la Hyprland avec Ctrl+hjkl et 6 presets de layout
🎯 Jeux intégrés jouables : Pac-Man, Space Invaders, Pingouin 3D
📊 Moniteur système : CPU, mémoire, swap, réseau, load moyenne avec sparklines
💾 Persistence SQLite des conversations et mémoire agent persistante
🌐 Chat vidéo WebSocket multi-utilisateur avec flux ASCII
La lecture vidéo ASCII décode les fichiers MP4 et les sources YouTube en temps réel via FFmpeg. L’introduction animée avec cracktro et les effets visuels constituent la vitrine de cette fonctionnalité. La webcam capture le flux vidéo et le convertit en ASCII art, avec un message d’erreur explicite si l’appareil est occupé par une autre application. Le streaming YouTube ne nécessite plus de cache complet avant lecture, résolvant d’abord l’URL média pour une lecture directe.
Les six effets 3D terminaux cèdent la place au fonctionnement normal après un cycle complet. La pluie matrix arc-en-ciel, le champ plasma, le champ d’étoiles 3D, le cube filaire rotatif, la simulation de feu et l’orage de particules utilisent tous le rendu ASCII pur avec des couleurs et des animations fluides. Ces effets servent autant à la démonstration technique qu’à l’esthétique rétro.
Le système de tiling s’inspire de Hyprland avec des raccourcis Ctrl+hjkl pour naviguer et Ctrl+HJKL pour déplacer les panneaux. Six presets de layout sont disponibles, et chaque tuile peut être réassignée à l’un des 13 types de panneaux. Les fenêtres Tiles embarquent des terminaux PTY réels pour lancer Codex, Claude, Gemini ou n’importe quel autre outil CLI directement dans l’interface.
La fenêtre Games propose trois jeux jouables : Pac-Man, Space Invaders et un pingouin 3D. Les contrôles WASD s’appliquent quand la tuile Games est focalisée et que la ligne de commande est vide. Le sélecteur permet de choisir le jeu avec les chiffres, les flèches ou WASD, puis de lancer avec Entrée ou Espace.
Le moniteur système affiche les statistiques en temps réel : CPU global avec pourcentage et barre colorée, mémoire utilisée totale, swap actif, réseau montant/descendant, load moyenne sur 1/5/15 minutes et nombre de cœurs. Les seuils de couleur changent selon l’utilisation (vert <50%, ambre 50-80%, rouge >80%).
Le chat vidéo WebSocket permet d’héberger un serveur ou de se connecter à un serveur existant pour des sessions multi-utilisateurs. Jusqu’à quatre flux distants s’affichent en grille, avec un flux de chat et une liste d’utilisateurs connectés. Chaque client peut diffuser sa webcam en ASCII et participer au chat textuel.
L’installation automatisée via install.sh gère Rust, FFmpeg, LLVM, yt-dlp, Ollama, la compilation et l’ajout au PATH. macOS (Homebrew), Ubuntu/Debian, Fedora/RHEL, Arch Linux et openSUSE sont supportés. Les utilisateurs Windows doivent passer par WSL2. L’application fonctionne sans clé API pour les fonctionnalités locales, les clés étant optionnelles pour les providers cloud.
La gestion du contexte inclut la résumé automatique des anciens messages lorsque la fenêtre contextuelle se remplit, l’injection de fichiers avec @, l’épinglage de messages et la mémoire persistante de l’agent entre les sessions. Toutes les conversations sont sauvegardées dans ~/.config/asciivision/conversations.db.
Le moteur de thème dynamique avec génération de palettes HSL aléatoires permet de randomiser toutes les couleurs de l’interface avec F9. F10 restaure les valeurs par défaut. Chaque panneau, bordure, accent et couleur d’arrière-plan réagit au thème en temps réel.
Concrètement, ASCII Vision s’adresse aux utilisateurs de terminal qui veulent centraliser plusieurs outils dans une interface unifiée. Au lieu de jongler entre plusieurs terminaux et applications, l’interface unique de la visionneuse ASCII donne accès à chat IA, vidéo, jeux, monitoring et tiling. Le gain de temps se situe autant dans la découverte que dans l’organisation et l’exécution.
L’application ne prétend pas remplacer les outils spécialisés, mais les regroupe dans une expérience cohérente et performante. L’approche pure Rust avec streaming SIMD et terminaux PTY réels garantit réactivité et stabilité même avec des flux vidéo ou des connexions multiples.
À retenir, ASCII Vision est une station terminale tout-en-un qui combine chat IA agentic, vidéo ASCII, effets 3D, tiling, jeux et monitoring dans une interface texte performante et visuellement impressionnante. L’installation simplifiée et la compatibilité multiplateforme la rendent accessible à la fois pour expérimenter et pour un usage quotidien intensif.
