Service auto-hébergé
charmbracelet/soft-serve avatar
charmbracelet/soft-serve

soft-serve : capacités documentées et limites d’usage

Le puissant serveur Git auto-hébergable pour la ligne de commande. Vous pouvez également essayer certaines des commandes suivantes : Vous pouvez également utiliser Soft Serve pour parcourir les référentiels locaux à l'aide de la navigation logicielle [répertoire] ou en exécutant soft dans un référentiel Git.

7 219 étoiles241 forksGoMIT
GitHub

En bref

De quoi s’agit-il ?
The mighty, self-hostable Git server for the command line. You can also try some of the following commands: Or you can use Soft Serve to browse local repositories using soft browse [directory] or running soft within a Git repository.. Cette lecture française relie les fonctions, l’installation et les limites aux éléments du README.
À qui s’adresse-t-il ?
soft-serve convient aux personnes dont le besoin correspond aux fonctions décrites dans le README et qui peuvent fournir son environnement d’exécution. Il convient moins à un usage fondé sur une compatibilité, une performance ou un support non documenté.
Puis-je l’utiliser commercialement ?
Oui. MIT est une licence permissive : vous pouvez utiliser, modifier et vendre un logiciel qui en dépend, à condition de conserver les mentions de droit d’auteur et de licence.
Est-il encore maintenu ?
Oui. Les derniers commits datent d’il y a 15 jours.
En quel langage est-il écrit ?
Principalement Go, d’après les statistiques de langage de GitHub.

Ces réponses reposent sur les données GitHub du projet (dernière synchronisation le 15 septembre 2026) et sur notre analyse. Elles ne constituent pas un avis juridique.

ANALYSE OPEN SOURCE APPROFONDIE

Un serveur Git que vous pilotez en ligne de commande

Soft Serve est un serveur Git auto-hébergé que vous pilotez en ligne de commande. Le README le décrit comme un serveur Git auto-hébergé et savoureux pour la ligne de commande. Il expose une interface terminal via SSH, permet de cloner des dépôts via SSH, HTTP ou le protocole Git, et prend en charge Git LFS avec des backends HTTP et SSH. Vous pouvez gérer les dépôts via SSH, les créer à la demande via SSH ou git push, parcourir les dépôts, fichiers et commits via une interface accessible par SSH, et imprimer des fichiers via SSH avec coloration syntaxique et numéros de ligne. Le projet est écrit en Go et distribué sous licence MIT.

Pour soft-serve, le contrôle 1 se vérifie avec les repères git push, ssh git.charm.sh, bash # Jump directly to a repo in the TUI ssh git.charm.sh -t soft-serve

# Print out a directory tree for a repo ssh git.charm.sh repo tree soft-serve

# Print a specific file ssh git.charm.sh repo blob soft-serve cmd/soft/main.go

# Print a file with syntax highlighting and line numbers ssh git.charm.sh repo blob soft-serve cmd/soft/main.go -c -l ,

Or you can use Soft Serve to browse local repositories using , or running , within a Git repository.

## Installation

Soft Serve is a single binary called , . You can get it from a package manager:

, bash # macOS or Linux brew install charmbracelet/tap/soft-serve

# Windows (with Winget) winget install charmbracelet.soft-serve

# Arch Linux pacman -S soft-serve

# Nix nix-env -iA nixpkgs.soft-serve

# Debian/Ubuntu sudo mkdir -p /etc/apt/keyrings curl -fsSL https://repo.charm.sh/apt/gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/charm.gpg echo "deb [signed-by=/etc/apt/keyrings/charm.gpg] https://repo.charm.sh/apt/ * *" | sudo tee /etc/apt/sources.list.d/charm.list sudo apt update && sudo apt install soft-serve

# Fedora/RHEL echo '[charm] name=Charm baseurl=https://repo.charm.sh/yum/ . La documentation décrit The mighty, self-hostable Git server for the command line. You can also try some of the following commands: Or you can use Soft Serve to browse local repositories using soft browse [directory] or running soft within a Git repository. ; elle ne permet pas d’attribuer au dépôt une garantie qui n’y figure pas. Le test utile consiste à reprendre l’entrée indiquée, à noter la sortie produite et à conserver le message d’erreur éventuel.

Dans un environnement de travail, exécutez le parcours 1 propre à soft-serve, sans élargir les permissions ni les données. Comparez ensuite le résultat avec le fichier, la commande ou la configuration mentionné dans le README de charmbracelet/soft-serve. Cette comparaison permet de distinguer une fonction disponible d’une attente importée d’un autre outil. Pour ce dépôt, observez git push, ssh git.charm.sh, bash # Jump directly to a repo in the TUI ssh git.charm.sh -t soft-serve

# Fedora/RHEL echo '[charm] name=Charm baseurl=https://repo.charm.sh/yum/ , ainsi que le code de retour et les journaux lorsque le README en parle.

Installation du binaire soft et démarrage du serveur

Soft Serve est distribué sous forme d'un binaire unique nommé soft. Le README documente l'installation via les gestionnaires de paquets : brew pour macOS ou Linux, winget pour Windows, pacman pour Arch Linux, Nix, un dépôt apt pour Debian/Ubuntu et un dépôt yum pour Fedora/RHEL. Des binaires précompilés sont disponibles pour Linux, macOS et Windows aux formats Alpine, Debian et RPM, et vous pouvez installer avec go install github.com/charmbracelet/soft-serve/cmd/soft@latest. Une image Docker est mentionnée, mais le README ne donne pas la commande Docker exacte. Pour démarrer un serveur, le README demande d'installer git puis d'exécuter soft serve. Cela crée un répertoire data qui stocke les dépôts, les clés SSH et la base de données. Au premier démarrage, définissez SOFT_SERVE_INITIAL_ADMIN_KEYS avec votre clé publique SSH pour créer un utilisateur admin. Vous pouvez aussi définir SOFT_SERVE_DEFAULT_REPO pour créer un dépôt public vide au démarrage ; le README précise que cela ne garantit que l'existence, pas l'accessibilité, qui dépend des paramètres d'accès.

Pour soft-serve, le contrôle 2 se vérifie avec les repères git push, ssh git.charm.sh, bash # Jump directly to a repo in the TUI ssh git.charm.sh -t soft-serve

Dans un environnement de travail, exécutez le parcours 2 propre à soft-serve, sans élargir les permissions ni les données. Comparez ensuite le résultat avec le fichier, la commande ou la configuration mentionné dans le README de charmbracelet/soft-serve. Cette comparaison permet de distinguer une fonction disponible d’une attente importée d’un autre outil. Pour ce dépôt, observez git push, ssh git.charm.sh, bash # Jump directly to a repo in the TUI ssh git.charm.sh -t soft-serve

Fichier de configuration et variables d'environnement

Les paramètres du serveur se trouvent dans config.yaml dans le répertoire data après le premier démarrage. Le fichier par défaut contient des sections pour le nom du serveur, le format de journal, l'adresse d'écoute SSH :23231, le démon Git :9418, HTTP :23232, le pilote de base de données (sqlite ou postgres), Git LFS, les tâches cron et un écouteur de statistiques. Vous pouvez remplacer tout paramètre avec des variables d'environnement commençant par SOFT_SERVE_ suivi du nom du paramètre en majuscules, par exemple SOFT_SERVE_SSH_LISTEN_ADDR ou SOFT_SERVE_HTTP_PUBLIC_URL. Le chemin des données est contrôlé par SOFT_SERVE_DATA_PATH, et un emplacement personnalisé du fichier de configuration peut être défini avec SOFT_SERVE_CONFIG_LOCATION. La base de données prend en charge SQLite et Postgres ; par défaut, SQLite est utilisé. Le README montre comment pointer vers une base Postgres en définissant le pilote sur postgres et en fournissant une URL de source de données. Dans la configuration exemple, Git LFS est activé par défaut, mais le transfert SSH pur est désactivé par défaut.

Pour soft-serve, le contrôle 3 se vérifie avec les repères git push, ssh git.charm.sh, bash # Jump directly to a repo in the TUI ssh git.charm.sh -t soft-serve

Dans un environnement de travail, exécutez le parcours 3 propre à soft-serve, sans élargir les permissions ni les données. Comparez ensuite le résultat avec le fichier, la commande ou la configuration mentionné dans le README de charmbracelet/soft-serve. Cette comparaison permet de distinguer une fonction disponible d’une attente importée d’un autre outil. Pour ce dépôt, observez git push, ssh git.charm.sh, bash # Jump directly to a repo in the TUI ssh git.charm.sh -t soft-serve

Authentification et autorisation

L'authentification et l'autorisation dans Soft Serve sont gérées via SSH. Le README indique que tout ce qui nécessite une authentification se fait via SSH et que les clés publiques SSH en double ne sont pas autorisées. L'accès anonyme est contrôlé par deux paramètres : anon-access définit le niveau d'accès pour les utilisateurs anonymes (no-access, read-only, read-write ou admin-access, par défaut read-only), et allow-keyless autorise les connexions sans clé (par défaut true). Si allow-keyless est désactivé, les clones HTTP et git:// sont refusés. Le README avertit que ces remplacements pour le développement local via SOFT_SERVE_ANON_ACCESS et SOFT_SERVE_ALLOW_KEYLESS accordent un accès complet non authentifié et ne doivent jamais être exposés à un réseau non fiable. Des jetons d'accès peuvent être générés via la CLI SSH pour l'authentification HTTP. Il existe quatre niveaux d'accès : no-access, read-only, read-write et admin-access. Une limitation documentée : en raison d'un défaut dans le package x/crypto/ssh de Go, les nouvelles clés SSH RSA ne fonctionnent pas, seules les anciennes clés RSA SHA-1 sont prises en charge.

Pour soft-serve, le contrôle 4 se vérifie avec les repères git push, ssh git.charm.sh, bash # Jump directly to a repo in the TUI ssh git.charm.sh -t soft-serve

Dans un environnement de travail, exécutez le parcours 4 propre à soft-serve, sans élargir les permissions ni les données. Comparez ensuite le résultat avec le fichier, la commande ou la configuration mentionné dans le README de charmbracelet/soft-serve. Cette comparaison permet de distinguer une fonction disponible d’une attente importée d’un autre outil. Pour ce dépôt, observez git push, ssh git.charm.sh, bash # Jump directly to a repo in the TUI ssh git.charm.sh -t soft-serve

Créer et gérer les dépôts

Les dépôts sont gérés avec la commande repo via SSH, et le README liste les sous-commandes pour blob, branch, collab, create, delete, description, hide, import, info, list, mirror, private, project-name, rename, tag et tree. Pour créer un dépôt, un utilisateur enregistré peut exécuter repo create <nom> ou simplement pousser vers un dépôt distant pointant vers le serveur Soft Serve ; si le dépôt n'existe pas, le push le crée. Les dépôts peuvent être imbriqués, importés depuis des dépôts distants publics avec repo import, et marqués comme miroirs de tirage avec --mirror. Des collaborateurs peuvent être ajoutés avec des niveaux d'accès spécifiques. Les dépôts peuvent être rendus privés, masqués des listes, renommés et supprimés. Les webhooks sont pris en charge pour des événements tels que push, collaborators et branch_tag_create. Le README montre aussi des commandes pour imprimer un arbre de dépôt et des blobs de fichiers via SSH, avec des options pour la coloration syntaxique et les numéros de ligne. L'utilisation de ces commandes repo nécessite d'être collaborateur du dépôt.

Pour soft-serve, le contrôle 5 se vérifie avec les repères git push, ssh git.charm.sh, bash # Jump directly to a repo in the TUI ssh git.charm.sh -t soft-serve

Dans un environnement de travail, exécutez le parcours 5 propre à soft-serve, sans élargir les permissions ni les données. Comparez ensuite le résultat avec le fichier, la commande ou la configuration mentionné dans le README de charmbracelet/soft-serve. Cette comparaison permet de distinguer une fonction disponible d’une attente importée d’un autre outil. Pour ce dépôt, observez git push, ssh git.charm.sh, bash # Jump directly to a repo in the TUI ssh git.charm.sh -t soft-serve

TUI SSH et hooks Git

La TUI Soft Serve sert principalement à parcourir les dépôts via SSH. Vous pouvez vous connecter avec ssh à votre serveur, ou sauter directement à un dépôt en passant son nom comme commande. Le README décrit aussi soft browse pour les dépôts locaux, et l'exécution de soft dans un dépôt Git. Appuyer sur c sur un dépôt en surbrillance copie la commande de clonage, selon la prise en charge OSC52 du terminal. Pour l'automatisation côté serveur, Soft Serve prend en charge les hooks Git : pre-receive, update, post-update et post-receive. Les hooks peuvent être par dépôt, stockés dans le répertoire hooks du dépôt, ou globaux, stockés dans le répertoire hooks sous le chemin des données. Le README inclut un exemple de hook update qui affiche des informations sur le push. Le projet fait partie de Charm et est distribué sous licence MIT, qui accorde le droit d'utiliser, copier, modifier, fusionner, publier, distribuer, sous-licencier et vendre des copies, mais le logiciel est fourni sans garantie.

Pour soft-serve, le contrôle 6 se vérifie avec les repères git push, ssh git.charm.sh, bash # Jump directly to a repo in the TUI ssh git.charm.sh -t soft-serve

Dans un environnement de travail, exécutez le parcours 6 propre à soft-serve, sans élargir les permissions ni les données. Comparez ensuite le résultat avec le fichier, la commande ou la configuration mentionné dans le README de charmbracelet/soft-serve. Cette comparaison permet de distinguer une fonction disponible d’une attente importée d’un autre outil. Pour ce dépôt, observez git push, ssh git.charm.sh, bash # Jump directly to a repo in the TUI ssh git.charm.sh -t soft-serve

Conclusion éditoriale

soft-serve convient aux personnes dont le besoin correspond aux fonctions décrites dans le README et qui peuvent fournir son environnement d’exécution. Il convient moins à un usage fondé sur une compatibilité, une performance ou un support non documenté. Commencez par git push et ssh git.charm.sh, observez la sortie et les erreurs, puis décidez si le résultat répond au cas réel.

Sources officielles

  1. Official README
  2. Project repository
  3. Release notes
Notes de la communauté

Notes de la communauté