Skip to main content
Mesa implements the Git HTTP smart protocol over HTTPS. Any standard Git client can clone, fetch, and push to Mesa repositories.

Base URL

Endpoints

Both plain and gzip-compressed request bodies are accepted.

Authentication

All endpoints require HTTP Basic auth with a Mesa API key. The username field is ignored — only the password (API key) matters.
t is a conventional placeholder. Any username value works.

Scopes

API keys can be org-wide or scoped to specific repositories. See Authentication for details.

Clone and fetch

Push

Pushing requires the write scope on your API key.

Branch operations

Credential helpers

Store your Mesa credentials so you don’t need to embed API keys in URLs.

CI/CD example

Store your API key as MESA_API_KEY in your CI secrets store. Keys without write scope can still clone and fetch.

Supported operations

Wire protocol

Fetch (upload-pack) speaks Git protocol v2 only. Every info/refs?service=git-upload-pack response advertises:
The Git-Protocol request header is ignored — Mesa always responds with v2 on the fetch path. Pre-v2 clients cannot fetch from Mesa. Push (receive-pack) has no v2 spec upstream and uses the historical smart-HTTP framing. Advertised capabilities: report-status, side-band-64k, ofs-delta, delete-refs.

Client compatibility

Supported fetch arguments

Mesa’s v2 command=fetch accepts the baseline gitprotocol-v2 arguments: want <oid>, have <oid>, done, thin-pack, no-progress, ofs-delta, include-tag, and wait-for-done. Shallow fetch (advertised via fetch=… shallow) is supported: shallow <oid>, deepen <n>, deepen-since <unix-time>, and deepen-relative. The server replies with a shallow-info section listing shallow <oid> / unshallow <oid> boundary changes before the packfile. This powers git clone --depth=<n>, git clone --shallow-since=<date>, git fetch --deepen=<n>, and git fetch --unshallow. deepen-not (--shallow-exclude) is not yet supported. Ref-in-want (advertised via fetch=… ref-in-want) is supported: want-ref <ref> resolves a ref name to its current oid server-side and reports the result in a wanted-refs section. Because the name is resolved at fetch time, it is immune to the race where a ref moves between a client’s ls-refs and its fetch. Object filtering (filter) and multi-round negotiation (acknowledgments/ready) are not yet supported.

Limits

These limits apply to individual push operations. There are no rate limits on the number of operations.

Git ↔ Mesa concept mapping

When you interact with Mesa via Git, concepts are translated automatically: When you git push, commits become changes and branch refs become bookmarks. When you git clone or git fetch, Mesa translates changes and bookmarks back into commits and refs. The round-trip is transparent — your Git client sees a normal repository. See Versioning for a deeper look at changes, bookmarks, and how Mesa’s model compares to Git and Jujutsu.