https://github.com/charmbracelet/soft-serve Skip to content Sign up * Why GitHub? + Features + Mobile + Actions + Codespaces + Packages + Security + Code review + Issues + Integrations + GitHub Sponsors + Customer stories * Team * Enterprise * Explore + Explore GitHub + Learn and contribute + Topics + Collections + Trending + Learning Lab + Open source guides + Connect with others + The ReadME Project + Events + Community forum + GitHub Education + GitHub Stars program * Marketplace * Pricing + Plans + Compare plans + Contact Sales + Education [ ] * # In this repository All GitHub | Jump to | * No suggested jump to results * # In this repository All GitHub | Jump to | * # In this organization All GitHub | Jump to | * # In this repository All GitHub | Jump to | Sign in Sign up {{ message }} charmbracelet / soft-serve Public * Notifications * Star 347 * Fork 5 * A tasty, self-hostable Git server for the command line MIT License 347 stars 5 forks Star Notifications * Code * Issues 4 * Pull requests 3 * Actions * Projects 0 * Wiki * Security * Insights More * Code * Issues * Pull requests * Actions * Projects * Wiki * Security * Insights main Switch branches/tags [ ] Branches Tags Could not load branches Nothing to show Loading {{ refName }} default View all branches Could not load tags Nothing to show {{ refName }} default Loading View all tags 8 branches 1 tag Code Loading Latest commit @muesli muesli Fix releases link in README ... d356f97 Dec 8, 2021 Fix releases link in README d356f97 Git stats * 171 commits Files Permalink Failed to load latest commit information. Type Name Latest commit message Commit time .github/workflows Update goreleaser workflow Dec 7, 2021 config Rename Stats interface to Callbacks Oct 18, 2021 internal Run git update-server-info after creating default config Nov 18, 2021 server Export server.Reload() Oct 20, 2021 .gitignore fix: clean up GoReleaser config (#24) Dec 7, 2021 .golangci.yml Add lint workflow Dec 6, 2021 .goreleaser.yml fix: clean up GoReleaser config (#24) Dec 7, 2021 Dockerfile Rename soft-serve binary in goreleaser Dec 7, 2021 LICENSE Create LICENSE Nov 18, 2021 README.md Fix releases link in README Dec 8, 2021 docker.md Add package manager and download info to installation notes Dec 7, 2021 go.mod Remove wish replace and update deps Dec 6, 2021 go.sum Remove wish replace and update deps Dec 6, 2021 main.go Move main.go back to root Oct 13, 2021 View code [ ] Soft Serve Where can I see it? Installation Setting up a server Configuration Pushing (and creating!) repos The Soft Serve TUI Server Settings License README.md Soft Serve A nice rendering of some melting ice cream with the words 'Charm Soft Serve' next to it Latest Release Build Status A tasty, self-hosted Git server for the command line. Soft Serve screencast * Configure with git * Create repos on demand with git push * Browse repos with an SSH-accessible TUI * Easy access control + Allow/disallow anonymous access + Add collaborators with SSH public keys + Repos can be public or private Where can I see it? Just run ssh git.charm.sh for an example. Installation Soft Serve is a single binary called soft. You can get it from a package manager: # macOS or Linux brew tap charmbracelet/tap && brew install charmbracelet/tap/soft-serve # Arch Linux yay -S soft-serve You can also download a binary from the releases page. Packages are available in Alpine, Debian, and RPM formats. Binaries are available for Linux, macOS, and Windows. Or just build and install it with go: git clone ssh://git.charm.sh/soft-serve cd soft-serve go install Setting up a server Make sure git is installed, then run soft. That's it. A Docker image is also available. Configuration The Soft Serve configuration is simple and straightforward: # The name of the server to show in the TUI. name: Soft Serve # The host and port to listen on. Defaults to 0.0.0.0:23231. host: localhost port: 23231 # The access level for anonymous users. Options are: read-write, read-only # and no-access. anon-access: read-write # You can grant read-only access to users without private keys. allow-keyless: false # Which repos should appear in the menu? repos: - name: Home repo: config private: true note: "Configuration and content repo for this server" - name: Example Public Repo repo: my-public-repo private: false note: "A publicly-accessible repo" - name: Example Private Repo repo: my-private-repo private: true note: "A private repo" # Authorized users. Admins have full access to all repos. Regular users # can read all repos and push to their collab-repos. users: - name: Beatrice admin: true public-keys: - KEY TEXT - name: Frankie collab-repos: - my-public-repo - my-private-repo public-keys: - KEY TEXT When soft is run for the first time, it creates a configuration repo containing the main README displayed in the TUI as well as a config file for user access control. git clone ssh://localhost:23231/config The config repo is publicly writable by default, so be sure to setup your access as desired. You can also set the SOFT_SERVE_INITIAL_ADMIN_KEY environment variable before first run and it will restrict access to that initial public key until you configure things otherwise. Pushing (and creating!) repos You can add your Soft Serve server as a remote to any existing repo: git remote add soft ssh://localhost:23231/REPO After you've added the remote just go ahead and push. If the repo doesn't exist on the server it'll be created. git push soft main The Soft Serve TUI Soft Serve serves a TUI over SSH for browsing repos, viewing READMEs, and grabbing clone commands: ssh localhost -p 23231 It's also possible to "link" to a specific repo: ssh localhost -t -p 23231 REPO Server Settings In addition to the Git-based configuration above, there are a few environment-level settings: * SOFT_SERVE_PORT: SSH listen port (default 23231) * SOFT_SERVE_HOST: SSH listen host (default 0.0.0.0) * SOFT_SERVE_KEY_PATH: SSH host key-pair path (default .ssh/ soft_serve_server_ed25519) * SOFT_SERVE_REPO_PATH: Path where repos are stored (default .repos ) * SOFT_SERVE_INITIAL_ADMIN_KEY: The public key that will initially have admin access to repos (default ""). This must be set before soft runs for the first time and creates the config repo. If set after the config repo has been created, this setting has no effect. License MIT --------------------------------------------------------------------- Part of Charm. The Charm logo CharmRe Ai Kai Yuan * Charm loves open source About A tasty, self-hostable Git server for the command line Resources Readme License MIT License Releases 1 v0.1.0 Latest Dec 7, 2021 Packages 1 Contributors 5 * @aymanbagabas * @toby * @meowgorithm * @caarlos0 * @muesli Languages * Go 98.7% * Dockerfile 1.3% * (c) 2021 GitHub, Inc. * Terms * Privacy * Security * Status * Docs * Contact GitHub * Pricing * API * Training * Blog * About You can't perform that action at this time. You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.