Raw capture โ raw/bucketvcs.md
url: https://github.com/erans/bucketvcs date_fetched: 2026-07-05 backfilled: true
bucketvcs is a Git server backed directly by cloud object storage โ Amazon S3, Cloudflare R2, Google Cloud Storage, or Azure Blob. No database cluster holding your Git objects. No ever-growing block-storage volume to snapshot and babysit. The bucket is the repository.
Point stock git at it over HTTPS or SSH, push, and your history lands in object storage that's effectively infinite, eleven-nines durable, and priced by the gigabyte. Then open the built-in web UI to browse it.
Version control at the price of a bucket. Pay per-GB at S3/R2/GCS/Azure rates instead of provisioning, growing, and backing up block volumes. On Cloudflare R2 there are no egress fees โ clone and fetch all day. Durability and scale are your provider's problem, not yours.
Bring your own bucket. Your code sits in your cloud account, under your encryption keys and your access policies โ not on a vendor's servers. Delete the deployment tomorrow and your repositories are still right where you left them.
Native HTTPS and SSH, Git protocol v2, and full compatibility with stock git and standard credential helpers. Nothing to install on developer machines. It behaves like the Git remote your team already knows.
Protocol-v2 bundle-URI and packfile-URI acceleration offload heavy initial clones to signed object-storage URLs (CDN-frontable on cloud backends), so the gateway isn't streaming gigabytes on every onboarding.
Log in with a password or OIDC single sign-on and browse your code โ syntax-highlighted file views with line-anchor links, commit logs, diffs, ref-to-ref compare, rendered READMEs. Self-service token, SSH-key, and web-session management for every user; repo settings (grants, deploy keys, webhooks, protected refs/paths) delegated to repo admins; user/repo/quota/session administration and a built-in audit-log viewer for operators. No JavaScript build, no separate service โ templates and assets are compiled into the binary, and every page works without JS.
Not a toy. bucketvcs ships the things a real Git host needs:
--replica-ofover provider-replicated buckets (S3 CRR, GCS dual-region, Azure RA-GRS); all pushes stay in the write region โ operator guideA single pure-Go binary. The only local state is a small SQLite file for auth and metadata โ your Git data never touches a database. The gateway is easy to run, easy to scale out, and has nothing stateful to lose.
Traditional self-hosted Git (GitHub Enterprise, GitLab, Gitea) keeps your repositories on a database and a block-storage filesystem you have to size, monitor, snapshot, and migrate. bucketvcs makes the object store the source of truth instead:
| Traditional Git host | bucketvcs | |
|---|---|---|
| Repo storage | Block volume + database | Object storage (the bucket isit) |
| Scaling storage | Resize/migrate volumes | Unbounded, automatic |
| Durability & backup | Your snapshots & ops | Provider's (eleven 9s) |
| Data ownership | Vendor-managed | Your cloud account, your keys |
| Footprint | Services + DB + storage | One Go binary + a bucket |
Runs on S3, R2, GCS, and Azure Blob (all first-class), plus a local-filesystem backend for development that needs no credentials.
Upgrading from an earlier release? See the
upgrade notes.
Prebuilt binaries for Linux, macOS, and Windows (amd64 + arm64) are attached
to every GitHub Release, alongside
a checksums.txt. Pick the version you want, then grab the matching artifact:
VER=0.6.0 # latest: https://github.com/erans/bucketvcs/releases/latestLinux โ .deb, .rpm, or a portable tarball (swap amd64 โ arm64 on ARM):
# Debian / Ubuntu
curl -fsSLO https://github.com/erans/bucketvcs/releases/download/v$VER/bucketvcs_${VER}_linux_amd64.deb
sudo dpkg -i bucketvcs_${VER}_linux_amd64.deb
# Fedora / RHEL / openSUSE
curl -fsSLO https://github.com/erans/bucketvcs/releases/download/v$VER/bucketvcs_${VER}_linux_amd64.rpm
sudo rpm -i bucketvcs_${VER}_linux_amd64.rpm
# Any distro (tarball)
curl -fsSL https://github.com/erans/bucketvcs/releases/download/v$VER/bucketvcs_${VER}_linux_amd64.tar.gz | tar xz
sudo install bucketvcs /usr/local/bin/
macOS โ tarball (arm64 = Apple Silicon, amd64 = Intel):
curl -fsSL https://github.com/erans/bucketvcs/releases/download/v$VER/bucketvcs_${VER}_darwin_arm64.tar.gz | tar xz
sudo install bucketvcs /usr/local/bin/
# binaries aren't notarized yet; if Gatekeeper blocks the first run, clear the quarantine flag:
xattr -d com.apple.quarantine /usr/local/bin/bucketvcs 2>/dev/null || true
Windows (PowerShell) โ zip:
$ver = "0.6.0"
Invoke-WebRequest "https://github.com/erans/bucketvcs/releases/download/v$ver/bucketvcs_${ver}_windows_amd64.zip" -OutFile bucketvcs.zip
Expand-Archive bucketvcs.zip -DestinationPath $Env:LOCALAPPDATA\bucketvcs
# then add %LOCALAPPDATA%\bucketvcs to your PATH
From source (Go 1.26+):
git clone https://github.com/erans/bucketvcs
cd bucketvcs && go build -o bucketvcs ./cmd/bucketvcs
Put the resulting bucketvcs binary on your PATH.
A complete end-to-end walkthrough โ a repository, access control, the gateway, and your first push (on local disk or any cloud backend) โ lives in the Quickstart.
The short version:
bucketvcs init --store s3://my-bucket my-org my-repo
bucketvcs serve --store s3://my-bucket --addr :8080
git push https://my-host/my-org/my-repo main
Then open http://my-host:8080/ in a browser โ the web UI serves on the same
listener (log in with a user created via bucketvcs user add + user set-password,
or wire up OIDC; see the web UI guide).
The web UI is optional โ omit --ui or pass --ui=false if you only need the Git protocol gateway and CLI.
bucketvcs doctor โ read-only health checks for storage, auth-db, and config. Accepts the same flags as serve; swap serve for doctor to validate a deployment without binding any ports.
Next: want pushes to kick off CI? Wire up build triggers to start a Google Cloud Build, AWS CodeBuild, Azure Pipelines run, or any HTTP endpoint on push.
The web UI is built in to the same binary โ no separate service, no JavaScript build step, no external dependencies. Templates and static assets are compiled into the binary at build time; every page works without JS.
| Login | Repositories |
|---|---|
| File tree with rendered README | Syntax-highlighted file view |
|---|---|
| Commit history | Commit diff |
|---|---|
| Compare two refs |
|---|
| Session management | Audit log viewer |
|---|---|
The UI is optional. Run without it by omitting --ui or passing --ui=false โ the Git gateway and all CLI commands work the same either way.
bucketvcs is open-source and built for production use. A single binary serves the Git protocol (HTTPS/SSH) and an embedded web UI โ browse code in the browser, log in with a password or OIDC SSO, and manage users, repos, tokens, webhooks, and policies from the settings pages. Everything is equally administrable through the bucketvcs CLI.
Run bucketvcs <command> --help for the full command surface, and browse ** docs/** for design specs, operator guides, and quickstarts.
Licensed under the Apache License, Version 2.0. Copyright 2026 Eran Sandler.
Distributed binaries statically link third-party Go modules; see NOTICE for required attributions and THIRD_PARTY_LICENSES for their full license texts.