Skip to content
GitmoapdocsBeta
Concept· Why does it work like that?Draft

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

BudgetCounted againstWindows
Callerthe identity making the request — you, or the service account whose token is usedan hour and a day, both at once
Organizationthe top-level group that owns the repository or package being reada 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:

MarkingOperationsWhen the bytes are charged
metered · presigned_302package downloads (npm, Cargo, PyPI), release assets, wiki attachmentsbefore the redirect to storage is issued — a refusal means nothing was sent
metered · in_band_bodyfile contents, text search, diffs and comparisons, merge-request conflicts, log pages and log search, spec document content, wiki page revisionsthe 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 · hybrida release archive, and a step's whole log as a downloadmetered either way, depending on whether the bytes are already stored and redirected to, or assembled in the response
exempteverything elsenot 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.

  • 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