GodMode
ActifUn tableau de bord natif pour piloter tous mes projets et mes modèles IA locaux, d'un seul clic.

Le contexte
Quand on jongle avec plusieurs projets locaux (backends, frontends, workers) et des modèles LLM chargés en RAM, la ligne de commande devient un frein. GodMode est un panneau de contrôle unifié : une icône dans la barre de menus et une fenêtre détaillée. Un clic pour démarrer, arrêter ou redémarrer un service ; un raccourci pour décharger tous les modèles IA qui surchauffent la machine. Multi-projets par conception : ce qui marche pour un projet marche pour tous, sans hardcoding.
Mon rôle
Conception et développement de bout en bout : architecture du cœur Rust, surface IPC, scanners système, détection des runtimes LLM, interface React et suite de tests. Projet mené en solo.
Fonctionnalités clés
- Dashboard projets : cartes par projet, start/stop/restart par service, pastille de santé et tri favoris puis alphabétique.
- Cycle de vie des process : arrêt gracieux SIGTERM avec fenêtre de grâce puis SIGKILL, nettoyage des enfants orphelins.
- Contrôle des LLM : détection des principaux runtimes d'inférence locaux, avec empreinte RAM réelle, modèle, taille, quantification et attribution du process appelant.
- Kill all LLMs : gros bouton en appui long, item dans la barre système et raccourci global, avec notification macOS du nombre de process stoppés et de la RAM libérée.
- Panneau de pression mémoire : mémoire système détaillée (utilisée, wired, compression, swap), niveau de pression déterministe, masquage des daemons non tuables.
- Détection automatique des services par lecture des manifestes (package.json, Cargo.toml, pyproject.toml, requirements.txt, Makefile), avec déduction du port et du script de build.
- Scan live des ports en écoute (lsof croisé au répertoire courant) et logs tail en direct, avec résumé lisible du crash extrait de la stderr.
- Toolbox développeur : inspection et libération d'un port occupé, mesure et purge des caches (npm, pnpm, yarn, pip, Homebrew, Hugging Face, Xcode).
Défis techniques
- Tuer proprement un service enveloppé par un shell : GodMode crée un groupe de process au spawn (setsid) puis signale le groupe entier (killpg, fenêtre de grâce, escalade SIGKILL) et balaie les enfants restants : la cause traitée, pas le symptôme.
- Rendre visibles les outils installés par l'utilisateur : une app lancée depuis le Finder hérite du PATH minimal de launchd ; l'outil résout le vrai PATH une fois au démarrage via un shell de login, puis le met en cache.
- Attribuer un modèle LLM à son projet : remontée de la chaîne des process parents (profondeur bornée, détection de cycle) et correspondance de répertoire aux frontières exactes, la correspondance projet l'emportant sur le propriétaire nommé.
- Identifier le modèle de façon robuste : cascade de repli (flag --model, cache Hugging Face, fichier de poids, module Python) avec extraction de la taille et de la quantification, en expressions régulières linéaires anti-ReDoS.
- Mesurer la vraie pression mémoire : filtrage des daemons système sur deux niveaux pour ne présenter que des process sûrs à tuer, et pression calculée de façon déterministe (usage, compression, swap) plutôt qu'un simple pourcentage.
- Scanner en continu sans noyer l'interface : sur-échantillonnage avant filtrage, enrichissement ps/lsof en parallèle, cadences distinctes (ports, santé) et déduplication.
L'ampleur
Une implémentation réelle et testée, pas un prototype.
- Une application de bureau native, réellement fonctionnelle et éprouvée, pas une maquette.
- Sécurisée par conception : tout s'exécute en local, sans serveur ni port ouvert sur l'extérieur.
- Un cœur soigneusement testé, pour un comportement fiable à chaque lancement.
Résultats
Un outil actif, utilisé au quotidien pour orchestrer un environnement de développement multi-projets.
- Un outil en usage quotidien : démarrage, arrêt et supervision de tous les projets locaux d'un seul geste.
- Architecture Rust modulaire (registry, process manager, scanners) qui pilote n'importe quel dépôt sans hardcoding.
Stack technique 03 familles · 08 technologies
La stack technique
Chaque technologie du projet, reliée au reste de ma pratique : plus un neurone est large, plus je l'ai éprouvé de projets en projets.
Inventaire complet
Architecture
- IPC natif
- État server-authoritative (source de vérité backend Rust)
- Event bus Rust → frontend
- Isolation sous ~/.godmode/
Cœur
- Rust
- Tokio (multi-thread, process, signal)
- rusqlite
- nix (signaux POSIX)
- sysinfo
- regex linéaires
- serde
- anyhow / thiserror
- tracing
Desktop
- Tauri 2
- Plugins global-shortcut, notification, dialog, fs
- Trayicon permanent + titlebar custom
- Cible macOS 13+ (Apple Silicon / Intel)
Interface
- React 19
- TypeScript 5
- Tailwind 4
- Zustand
Qualité
- 64 tests Rust
- 24 Vitest + Testing Library
- 6 Playwright e2e
- cargo clippy -D warnings
- écritures config atomiques
Approche
- Un clic = une action, safe-by-default
- allowlist de permissions, zéro injection shell, aucun sudo
- regex anti-ReDoS, chemins sanitizés
- fix à la cause racine
Architecture
- IPC natif
- État server-authoritative (source de vérité backend Rust)
- Event bus Rust → frontend
- Isolation sous ~/.godmode/
Cœur
- Rust
- Tokio (multi-thread, process, signal)
- rusqlite
- nix (signaux POSIX)
- sysinfo
- regex linéaires
- serde
- anyhow / thiserror
- tracing
Desktop
- Tauri 2
- Plugins global-shortcut, notification, dialog, fs
- Trayicon permanent + titlebar custom
- Cible macOS 13+ (Apple Silicon / Intel)
Interface
- React 19
- TypeScript 5
- Tailwind 4
- Zustand
Qualité
- 64 tests Rust
- 24 Vitest + Testing Library
- 6 Playwright e2e
- cargo clippy -D warnings
- écritures config atomiques
Approche
- Un clic = une action, safe-by-default
- allowlist de permissions, zéro injection shell, aucun sudo
- regex anti-ReDoS, chemins sanitizés
- fix à la cause racine
Projet suivant
Alpha
ActifUn système autonome temps réel, conçu avec une discipline d'ingénierie extrême.
