Inside GitHub’s new Git storage architecture
- Source
- github.blog
- Author
- Karthik Raman
- Date

Context
GitHub has rebuilt how it stores Git repositories because it expects coding agents to make individual repositories far busier, and in internal testing the new design handled 5,000 concurrent agents sending 7,200 pushes per second to one repository while reads kept consistently low latency (GitHub's engineering post). Today the busiest repositories on GitHub receive at most dozens of writes in a second, in short bursts, and GitHub expects those bursts to become a sustained rate within the next year. Each push also triggers more reads, as CI, deployment systems and other agents fetch the new commit. GitHub set a target of at least two orders of magnitude more scale per repository and announced the architecture at its Universe conference (Universe announcements).
The design rests on one observation about Git. The files and commits a push uploads, called objects, never change and are named by their contents, so many writers can store them at once without coordinating. The only part of a push that needs agreement is the reference update, the small pointer that says which commit a branch now points to. GitHub therefore stores objects, bundled into packs, in Azure Blob Storage, and keeps references and the list of packs in a separate replicated log service called Ref-CAS, short for Reference Compare-and-Swap. Requests are served by virtual replicas, disposable machines whose local disks are only caches. A write uploads its pack to Blob Storage first and then commits one transaction to Ref-CAS, so a reference only ever points at data that is already durable. A read starts with a version check, and if nothing has changed, it costs a single comparison.
GitHub explains why it did not keep references in Blob Storage too. A single log blob for a repository's references allowed only one conditional write at a time and topped out in the mid-hundreds of writes per second. Splitting references across several blobs raised the write ceiling but forced every read to check every blob and wait for the slowest, a poor trade when reads outnumber writes by orders of magnitude. In Ref-CAS, each transaction locks only the references it touches and becomes visible once a majority of replicas record it. Because agents mostly push to their own branches, most updates do not conflict, and GitHub says reference state alone can be updated tens of thousands of times per second. Merging the growing pile of small packs, called , now runs on separate background nodes rather than on the machines serving traffic, which GitHub says keeps the pack count, and latency, flat as writes climb.
For developers, pushing, fetching and branching work the same way. The architecture is in a limited private preview, with a broader rollout planned for early next year, and GitHub lists further work such as fetching single objects, replicas in more regions, an atomic multi-file commit API and letting agents read files without cloning. The throughput figures come from GitHub's own internal testing, not an outside , and the two-orders-of-magnitude figure is a design target rather than a measured result.
- GitHub says internal tests of its new Git storage architecture handled 5,000 concurrent agents sending 7,200 pushes per second to one repository. Today the busiest repositories on GitHub.com see at most dozens of writes per second, in short bursts.
- The design rests on one observation: Git objects are immutable and named by content, so concurrent writers can store them without agreeing on anything. Only reference updates need ordering, and a separate quorum-replicated log service, Ref-CAS, handles just those.
- GitHub first tried keeping references in Azure Blob Storage. A single-blob log capped writes in the mid-hundreds per second, and splitting references across blobs made every read check all segments. Ref-CAS transacts reference state at tens of thousands of operations per second.
- Serving nodes are disposable virtual replicas whose disks are only caches, and a read of an unchanged repository costs one version comparison. Compaction and garbage collection run on separate nodes against Blob Storage, which GitHub says keeps pack count flat as pushes climb.
- The architecture is in limited private preview, with a broader rollout planned for early next year. GitHub's stated next steps include access to files without a clone, an atomic multi-file commit API, and event streams for repository changes.
- context compaction — Summarizing an agent's earlier conversation to free room in the context window so a long session can keep going.
- benchmark — A standard public test set for comparing AI models — the shared scoreboards behind every "model X beats model Y" claim.
- AI agent — An AI system that doesn't just answer once but works toward a goal in a loop — taking actions, reading the results, and deciding what to do next.
Checking sign-in…
Loading comments…


