Git hosting at any scale.

Ordinary Git over HTTPS, a code browser, pull requests, and durable storage in Cloudflare Artifacts. 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 Artifacts, 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 checks Cask's login at the edge, serves clone and fetch straight from Artifacts with a short-lived token, and hands pushes, the UI and the API to one named container.
  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. Cloudflare Artifacts stores every object and ref. The container pushes each accepted change there, with a lease on the old value, before it reports success, and enforces branch protection itself.
  4. A catalog in R2 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 Cask on Artifacts: how it works (11 min read).