Egress
Overview
Bytes that leave Gitmoap — clones and fetches, package and release downloads, archives, file contents, diffs and pipeline logs — are counted against two budgets at once: one for whoever asked, and one for the organization that owns what was read. When a budget is spent, the request is refused with 429 until the window it is measured over rolls on.
Egress is a rate, not a level. Storage and the count caps on the Quotas page are about what you keep; this is about what you pull, per hour and per day.
How it works
Two budgets
| Budget | Counted against | Windows |
|---|---|---|
| Caller | the identity making the request — you, or the service account whose token is used | an hour and a day, both at once |
| Organization | the top-level group that owns the repository or package being read | a day |
The caller budget catches one client pulling across many organizations; the organization budget catches one repository being pulled from many places at once. Budgets belong to an identity, not a token, so every personal token you hold spends the same one, while a service account has its own. Windows are UTC: the hourly one turns over on the hour, the daily one at midnight.
Anonymous callers
A request with no credentials is counted by its network address — the whole address for IPv4, the /64 network for IPv6 — against a low ceiling that is the same on every plan. Signing in moves you onto your own budget, which is higher. Anonymous traffic still counts against the organization's budget, whatever address it claims to come from.
Which operations are metered, and when each is charged
The API reference marks each operation with whether it is metered and how its bytes are delivered, because that decides when they are charged:
| Marking | Operations | When the bytes are charged |
|---|---|---|
metered · presigned_302 | package downloads (npm, Cargo, PyPI), release assets, wiki attachments | before the redirect to storage is issued — a refusal means nothing was sent |
metered · in_band_body | file contents, text search, diffs and comparisons, merge-request conflicts, log pages and log search, spec document content, wiki page revisions | the budget is checked before the request runs, and the bytes are charged after the response — so the request that crosses the line succeeds, and the next one is refused |
metered · hybrid | a release archive, and a step's whole log as a download | metered either way, depending on whether the bytes are already stored and redirected to, or assembled in the response |
exempt | everything else | not counted |
Git clones and fetches are metered too: a pack's size is known before it is offered, so it is charged before the download begins, and git reports a refusal instead of transferring anything. A live log stream counts what it writes as it goes, and ends when the budget runs out.
When a budget is spent
The answer is 429 TOO_MANY_REQUESTS, and the message names which budget ran out — yours or the organization's — and which window. Retrying straight away gets the same answer. Wait for the window to turn over, sign in if you were anonymous, or reduce what you pull: a shallow clone moves far fewer bytes, and a build agent that clones on every run is worth pointing at a cache.
Metering and refusing are deployment settings
Counting bytes and refusing over budget are two separate settings of the Gitmoap deployment you use. Where refusing is off, bytes are still counted and the usage views report them, but no request is refused for egress. Where it is on, a spent budget answers 429.
If the meter itself cannot be reached, the request goes through. Egress budgets protect cost, not security, so a metering problem never blocks a clone or a download.
Seeing where you stand
Settings → Transfer, under your avatar, shows your own hour and day against their ceilings. Settings → Usage on any group shows the organization's day against its cap. Both name the exact window each figure covers.
Related
- Usersreading your own transfer usage
- Groupsyour organization's daily transfer, and the plan values behind it
- Package registriesthe downloads metered by redirect
- Releasesrelease assets and archives
- Cachinghow long you may keep what you already downloaded
- Quotasthe count and storage limits beside these budgets