# Soft Serve — Self-Hosted Git Server with a Beautiful TUI > Soft Serve is a lightweight, self-hosted Git server by Charm that provides SSH-based repository hosting with a built-in terminal user interface. It supports access control, a web interface, and Git hooks, all in a single Go binary with no database required. ## Install Save as a script file and run: # Soft Serve — Self-Hosted Git Server with a Beautiful TUI ## Quick Use ```bash # Install and start brew install charmbracelet/tap/soft-serve soft serve # Clone a repo over SSH: git clone ssh://localhost:23231/my-repo # Browse repos in the TUI: ssh localhost -p 23231 ``` ## 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 serve` to 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-serve` image ## 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. ## Sources - https://github.com/charmbracelet/soft-serve - https://charm.sh/soft-serve/ --- Source: https://tokrepo.com/en/workflows/15afa0db-4106-11f1-9bc6-00163e2b0d79 Author: Script Depot