Annulez l’abonnement à la GUI Git et exécutez SauceCtrl localement sous Linux
SauceCtrl est un client Git open source basé sur Bun pour Linux, doté d’une barre latérale pour gérer plusieurs répertoires, d’un graphique des commits, d’un terminal PTY et d’un emballage AppImage, sans frais mensuels.
Un client Git open source local conçu pour les workflows Linux : plusieurs dépôts visibles en même temps, une seule fenêtre, et aucune cotisation récurrente.
Les développeurs qui passent d’Debian à Fedora et à d’autres distributions conservent souvent la même habitude sur leurs différents ordinateurs — plusieurs clones ouverts en parallèle — et souhaitent pouvoir voir d’un coup d’œil l’état des branches sans devoir gérer plusieurs fenêtres séparées. De nombreuses interfaces graphiques Git commerciales supposent qu’on travaille sur un seul projet à la fois. Ce modèle ne convient pas lorsque le travail quotidien concerne plusieurs dépôts.
Le prix des abonnements représente une autre contrainte. Des outils comme GitKraken sont performants, mais la demande de renouvellement peut susciter une question cruciale : si les besoins réels sont le changement de branche, un graphique des commits, la préparation des modifications et un terminal, est-ce suffisant pour justifier un autre paiement mensuel ?
SauceCtrl répond à cette question. Il est licencié sous MIT, open source, et fonctionne sur l’ordinateur local plutôt que comme un client SaaS hébergé.
Acheter des distributions est courant sur les ordinateurs de bureau Linux : le même développeur peut utiliser Debian sur un poste de travail, Fedora sur un ordinateur portable, et une version immuable sur un appareil de voyage. Un logiciel qui s’installe correctement sur tous ces systèmes sans nécessiter de répertoire privé de paquets fait partie des exigences du produit, et non d’une considération ultérieure.
Pourquoi maintenant
Deux changements au sein de l’écosystème ont rendu possible une compilation en un week-end.
La CLI GitHub (gh) gère déjà l’authentification et les opérations GitHub depuis la ligne de commande. Il n’y a pas de procédure OAuth personnalisée à l’intérieur de l’application de bureau : il suffit d’exécuter gh auth login, de suivre les étapes dans le navigateur, puis de continuer. SauceCtrl intègre une véritable terminal en bas de la fenêtre pour ces commandes précises.
Bun offre un environnement d’exécution JavaScript rapide incluant SQLite et FFI. Cela est important car le terminal intégré a besoin d’un véritable PTY, et non d’un simple widget de shell esthétique, or node-pty ne fonctionne pas sous Bun. L’application ouvre donc un PTY à l’aide de openpty via bun:ffi. Cette contrainte est inhabituelle, mais le résultat est un terminal utilisable.
Les éditeurs modernes assistés par l’IA ont également raccourci le processus de compilation. Autrefois, il restait peu de temps pour disposer d’une interface graphique personnelle pour Git ; la combinaison de Bun, gh et du codage assisté par des agents a rendu cette idée réalisable.
Fonctionnalités
SauceCtrl affiche une interface générée par le navigateur à l’intérieur d’une fenêtre de bureau, tandis qu’un processus Bun sur l’hôte effectue le travail réel : il invoque git, communique avec gh, gère les terminaux et stocke en mémoire les métadonnées du projet dans SQLite sous ~/.sauce-ctrl/.
La version 0.1 comprend :
- Une barre latérale multi-projet permettant d’ajouter des dépôts et de changer entre eux sans redémarrer l’application
- Un contrôle de branches couvrant les références locales et distantes, avec une fonction de récupération depuis l’en-tête
- Un arbre des historiques de commits basé sur des voies, similaire à celui offert aux clients payants
- Des panneaux détaillés pour le message, l’auteur, la date, les commits parents et des statistiques par fichier
- Des flux de préparation et d’enregistrement des commits pour marquer/démarquer les fichiers, saisir le message et enregistrer le commit
- Un terminal intégré lié au dépôt actif, permettant d’exécuter
gh auth loginou toute autre commande - Un chemin de configuration GitHub pour installer et authentifier
ghdirectement depuis l’interface utilisateur
Rien d’exotique : simplement tout ce dont on a besoin au quotidien en un seul endroit.
La partie AppImage
Il était indésirable d’envoyer à nouveau un chemin d’installation fragile par distribution. SauceCtrl est donc distribué sous forme d’AppImage : un seul fichier à télécharger et à exécuter, qui regroupe l’application avec le runtime Bun. Les données et les paramètres du projet restent stockés dans ~/.sauce-ctrl/, que vous le lanciez depuis la source ou depuis l’AppImage.
Compilation à partir de la source avec :
git clone https://github.com/rohit-gh/sauce-ctrl.git
cd sauce-ctrl
bun install
bun run build:appimage
Le résultat est stocké à release/SauceCtrl-x86_64.AppImage. Le script de compilation peut également le copier dans le dossier Téléchargements et le marquer comme exécutable. Le git système reste nécessaire (ainsi que gh si les fonctionnalités de GitHub sont importantes), mais les conflits entre gestionnaires de paquets entre distributions disparaissent en grande partie.
Stack (pour les curieux)
Le trafic de terminal via WebSockets est isolé dans un sous-processus Bun dédié. En conservant cette voie au sein du serveur HTTP de Nitro, les connexions étaient en pratique bloquées ; le dépôt documente la solution de contournement pour ceux qui souhaitent diagnostiquer le problème.
Personnalisez-le
Puisque le projet est open source, les équipes peuvent modifier les icônes et les thèmes, forker le code ou créer leur propre AppImage. Des fichiers de contexte orientés agents tels que AGENTS.md ainsi que des règles Cursor sont disponibles pour une assistance structurée.
L’objectif n’est pas d’offrir des fonctionnalités identiques à celles de tous les clients commerciaux. Il s’agit plutôt de disposer de plusieurs dépôts, d’une seule interface, d’un empaquetage natif pour Linux et sans abonnement. Si cela correspond à vos contraintes, clonez le dépôt SauceCtrl sur GitHub (utilisateur rohit-gh, projet sauce-ctrl) sous licence MIT. Les problèmes et les demandes de fusion sont les bienvenus en cas de dysfonctionnement ou d’absence d’un flux de travail.