Introduction
Soft Serve is a Git hosting server built by the Charm team that combines SSH-based repository access with a polished terminal UI for browsing code, commits, and branches. It is designed for small teams and personal use where a full Gitea or GitLab instance is more than needed.
What Soft Serve Does
- Hosts Git repositories accessible over SSH with public-key authentication
- Provides a browsable terminal UI when you SSH into the server
- Serves a read-only web interface for viewing repos in a browser
- Supports access control with admin, read-write, and read-only roles
- Runs server-side Git hooks for custom automation on push events
Architecture Overview
Soft Serve runs as a single Go binary that embeds an SSH server (powered by the Wish framework), a Git backend, and an optional HTTP server. Repositories are stored as bare Git repos on the filesystem. The TUI is rendered server-side using Bubble Tea and Lip Gloss, streamed to the client over the SSH session. Configuration and access control are managed through a special admin repo or a YAML config file.
Self-Hosting & Configuration
- Install via Homebrew, Go install, or download a binary from GitHub Releases
- Run
soft serveto start with default settings on port 23231 (SSH) and 23232 (HTTP) - Add SSH public keys for users via the admin settings repo or CLI
- Configure repos, access levels, and descriptions in the YAML config or via the admin repo
- Deploy with Docker using the official
charmcli/soft-serveimage
Key Features
- Beautiful terminal UI for browsing repos, commits, diffs, and branches
- Single binary with no database, web framework, or external dependencies
- SSH-native with public-key authentication and per-repo access control
- Built-in web interface for read-only repository browsing
- Git LFS support for large file storage
Comparison with Similar Tools
- Gitea — Full-featured forge with issues and PRs; Soft Serve focuses on lightweight Git hosting
- Gogs — Similar to Gitea but lighter; Soft Serve is even simpler with no web-based workflows
- cgit — Read-only web viewer; Soft Serve adds SSH hosting and a TUI
- git-daemon — Bare-bones Git protocol; Soft Serve adds authentication, access control, and a browsable interface
FAQ
Q: Can I use Soft Serve as my primary Git host? A: For personal projects and small teams, yes. For issue tracking and pull requests, pair it with a separate tool or use Gitea.
Q: Does it support Git over HTTPS? A: The web interface is read-only. Push and pull operations use SSH.
Q: How do I manage user access? A: Add SSH public keys and assign roles (admin, read-write, read-only) via the admin settings repository or config file.
Q: Can I mirror repos from GitHub or GitLab?
A: Soft Serve does not have built-in mirroring. Use a cron job with git fetch --mirror to sync externally.