← Sun, Sep 27 digest

Walgit: A Git server that is one binary in front of an object store

read article ↗ hn thread ↗

Walgit is a single-binary, Rust-implemented Git server that uses S3 or GCS object storage as the source of truth, enabling stateless scaling without databases.

read it The detailed architectural breakdown offers valuable insight into implementing distributed Git over object storage.

summary

Walgit is a Rust-based Git server that uses an S3 or GCS object store as the single source of truth, eliminating the need for databases or heavy local coordination. By storing pushes as immutable objects and relying on a manifest compare-and-swap (CAS) for consensus, instances act as disposable caches. It implements smart HTTP, bundle-URI clones, Git LFS, and automated compaction, enabling scalable Git hosting on commodity machines.

key points

  1. Object storage acts as a write-ahead log (WAL), making local server instances disposable caches.
  2. Manifest compare-and-swap (CAS) provides consensus without leader election or complex quorum setups.
  3. Bundle-uri optimization offloads heavy clone and fetch traffic to static object storage or CDNs.

who should read it

Systems engineers and backend developers interested in Git infrastructure and distributed storage.

discussion positive

consensus

Commenters enthusiastically welcome the wave of object-store-backed Git servers inspired by Cursor's architecture post.

pushback

Commenters criticized the project for lacking attribution or references to Tobi's earlier, similar fork of the concept.

best comment by wrsh07 ↗

I'm confused why there's no attribution or reference to Tobi's (which in turn referenced the cursor git post)

Attribution is not just a problem for LLMs in mathematics!

Tobi is where I first heard the concept: https://github.com/tobi/walgit

And he credits this Cursor post for giving him the ideas and says it's worth reading: https://cursor.com/blog/git-at-any-scale

Note: in related work, the East River Source Control team has posted about their vision for git as well: https://ersc.io/blog/what-comes-after-git

It calls out project lineage and missing attribution to an earlier implementation of the same idea.

Generated by an LLM from the article and thread. Check the sources before relying on it.