// the take
Ginatra is a self-hosted web UI for browsing one or more local git repositories, built on Ruby's Sinatra framework. It's aimed at small teams or individuals who want a lightweight alternative to gitweb or cgit without setting up GitLab, and who are comfortable running a Ruby/Sinatra process on a server they control.
Multi-repo and multi-branch browsing from a single config file (git_dirs glob) means you don't need a separate instance per repo. Smart HTTP support lets it double as a clone endpoint, not just a read-only viewer. Ships as both a standalone gem/CLI (ginatra run/stop/status) and a mountable Sinatra app, so it fits either a quick personal setup or embedding into an existing Rack stack. Feature set (diffs, patches, Atom feeds, repo stats, syntax highlighting) covers what you'd actually want from a git browser, not just a file tree.
There's no authentication or per-repo access control anywhere in the config — if you expose this beyond localhost, every repo under git_dirs is world-readable (and clonable, if git_clone_enabled? is on) to anyone who can reach the port. It shells out to the system git binary for every browse/diff/stats operation with no visible caching layer, so large repos or deep history will be slow and CPU-heavy on each request rather than once. Config is a single flat YAML file with no secrets management — fine for a personal box, awkward if you want this managed via infra-as-code or multiple environments. The Sinatra/Rack stack and Gemfile.lock pin an older Ruby web ecosystem, so you're on the hook for keeping a less actively-patched set of gems current yourself rather than inheriting security fixes from a bigger platform.
We read the README, the directory tree and a key source file in October 2026. Nobody pays to be listed. How we judge →