Git hosting at any scale.

Ordinary Git over HTTPS, a code browser, pull requests, and write-ahead log durability in object storage. Clone, fetch and push with a stock client. Browse the tree, blame a file, open a pull request. A push is acknowledged only once its objects and refs are in the log, so replacing the container does not lose a repository.

Code browser

Trees, files, commits and history at any ref, rendered from the durable repository.

Blame

Line-by-line author, commit and age, paginated so a large file stays cheap to open.

Branches & tags

Real refs, the default branch, and annotated tags. Create and delete from the browser.

Pull requests & comments

Compare two branches, merge, and keep a durable conversation next to the change.

Search

Find a file by path, or scan content at a commit, with a stated budget when the revision is too large.

HTTPS clone

Stock Git over HTTPS. No custom transport, no extra client, one clone URL.

How it's built

Four moving parts, and a rule about the order they run in.

  1. A Cloudflare Worker proxies every request to one named container. It rewrites nothing and buffers nothing: the container has to read a push body itself, in full, before it answers.
  2. A Go server serves the Git protocol and the browser UI from the same process. A keyed per-repository lock is the consistency boundary for mutations.
  3. A write-ahead log in R2 holds ordered ref updates and the packs they need. An entry counts as committed only when the repository's index names it, so an interrupted upload is an orphan rather than history.
  4. A catalog beside the log carries repositories, settings, pull requests, activity and comments, each with a revision so a stale edit is refused instead of silently winning.

Clone over HTTPS

git clone https://cask.build/{owner}/{repo}.git

The long version — the push ordering, the merge journal, the read budgets and the deletion tombstone — is in Git at any scale (18 min read).