Skip to content

Where people and agents ship software together. The open-source git platform for the whole job: issues, agents, checks and deploys to the edge.

240 linesCodeBlameRaw
1---
2title: Status and incidents
3description: Where to see whether g1t is working, what each check measures, how incidents and maintenance are posted, how to subscribe, and the JSON and feeds behind the page.
4---
5
6[status.g1t.sh](https://status.g1t.sh/) says whether each part of g1t is
7working now, how each has done over the last 90 days, what g1t staff have
8said about anything that went wrong, and what planned maintenance is
9coming. It runs as a service of its own, apart from the site, so it stays
10up when g1t.sh does not.
11
12The account menu at the bottom of the sidebar shows the same state as a
13dot beside **Status**, and so does the footer of g1t.sh's public pages.
14
15## What is checked
16
17Every minute, each part gets one quick request, the same one a visitor
18would make, over the public internet:
19
20| Part | What the check does |
21| --- | --- |
22| Website and sign-in | Loads `g1t.sh/login`, and asks the API about an access token no one holds, which the account service must refuse with `401` |
23| API | Loads `api.g1t.sh/` |
24| Git and repositories | Lists the branches of a public repository over HTTPS (`info/refs`), the first step of every clone |
25| Git storage | How the store that keeps every repository (Cloudflare Artifacts) answered g1t over the last five minutes. Down when a quarter or more of its calls failed, or g1t stopped asking after repeated failures; degraded when it rate limited g1t, its calls took over 1.5 seconds on average, or g1t is serving repositories from its backup store (reads work, pushes and merges wait) |
26| Page speed | Loads a public project page (`g1t.sh/flagon-io/g1t`) and `g1t.sh/explore`, timed to the first byte of each answer |
27| MCP server | Loads `mcp.g1t.sh/` |
28| Documentation | Loads `docs.g1t.sh/` |
29| Deployments | Loads `g1t.page/`. Each deployed app is not checked one by one. |
30| Sandboxes | Not checked yet: starting a sandbox costs money and takes seconds. The page says so rather than showing green. |
31| Billing | Reads billing's price book. Stripe itself is not checked. |
32
33A part that answers in over 1.5 seconds counts as slow, and one that
34fails or takes over 5 seconds counts as down. **Page speed** is held to
35a tighter budget: slower than 800 ms on either page counts as slow.
36
37## What each part shows
38
39A part shows the worse of its last check and what an open incident says
40about it. During planned maintenance it shows **Under maintenance**
41instead, unless an incident says something worse.
42
43| State | Meaning |
44| --- | --- |
45| Operational | Its check answered quickly, and no incident says otherwise |
46| Degraded | Slow to answer, or an incident reports degraded performance |
47| Partial outage | An incident reports that it is partly down |
48| Outage | Its check failed, or an incident reports a major outage |
49| Under maintenance | Planned work on it is under way |
50| Not monitored | It has no check, and no incident is open on it |
51
52The banner at the top sums them up:
53
54| Banner | When |
55| --- | --- |
56| All systems normal | Every checked part answered quickly, and no incident is open |
57| Under maintenance | Planned work is under way, and nothing else is wrong |
58| Degraded performance | Some parts are slow, and none is down |
59| Partial outage | A part other than the website, API or git is down, a part is partly down, or an incident is open |
60| Major outage | The website, the API or git is down, or an open incident reports a major outage |
61
62## Uptime bars
63
64Each part has a bar of 90 days, one square per day in UTC, newest on the
65right. Hover over a square, tap it, or focus the bar and use the arrow
66keys to see that day's share of answered checks, failed and slow checks,
67the average response time, and any incident. On a phone the bar shows
68the last 30 days.
69
70| Square | The day |
71| --- | --- |
72| Green | At least 99.9% of checks answered, so one failed check in a day stays green |
73| Peach | At least 95% answered, over a quarter of answers were slow, or an incident with degraded performance or a partial outage on the part was open |
74| Red | Less than 95% answered, or an incident with a major outage on the part was open |
75| Gray | No checks yet |
76
77The percentage under each bar is the share of checks that answered over
7890 days, rounded down, so a single failure never shows as 100%. Checks
79made while a part is under planned maintenance are not counted.
80
81## Incidents
82
83When something goes wrong, g1t staff post an incident: a title, the
84parts it affects and how badly, and updates as it moves from
85**Investigating** to **Identified**, **Monitoring** and **Resolved**.
86
87- Open incidents are shown at the top under **Happening now**, with every
88 update, newest first.
89- Each incident has a page of its own at
90 `https://status.g1t.sh/incidents/<id>`, with its full history. Links in
91 emails and feeds go there.
92- Incidents resolved in the last 14 days are listed under **Past
93 incidents**; [History](https://status.g1t.sh/history) lists every
94 incident and maintenance of the last 12 months, by month.
95- After a significant incident, g1t publishes a **postmortem** on the
96 incident's page: a summary, the impact, a timeline, the root cause, what
97 went well and badly, and what will change. Incidents with one are marked
98 **Postmortem** in the lists.
99- Times are shown in your time zone, with its abbreviation (`PDT`,
100 `CEST`); hover one to see it in UTC. The JSON, the feeds and email keep
101 UTC.
102
103### Severity
104
105Staff give every incident a severity. It decides how fast the team
106responds and how often it posts updates; it is not shown on the status
107page, which shows each part's impact instead.
108
109| Severity | Meaning | Public updates |
110| --- | --- | --- |
111| SEV1 | Critical: g1t is down or unusable for most people, or data is at risk | At least every 30 minutes; subscribers are emailed |
112| SEV2 | Major: a core part (sign-in, git, the API) is broken or badly degraded for many people | At least hourly; subscribers are emailed |
113| SEV3 | Minor: one part is degraded or broken for some people, and there is a way around it | As things change |
114| SEV4 | Low: little or no customer impact | As things change |
115
116### Noticed before anyone reports it
117
118When a part fails, or is slow, on four of five checks in a row, g1t
119staff are alerted and an incident is drafted for them. It appears on the
120status page once someone confirms it, usually within minutes. The part's
121own state on the page changes at once either way, because it comes from
122the checks.
123
124A brief blip does not become an incident. A slow answer is checked again
125straight away, and counts as slow only if the second answer is slow too.
126If the part recovers and stays healthy for 10 minutes before anyone
127confirms the draft, the draft is dismissed and never appears on the page.
128While g1t is deploying, and for 3 minutes after, a slow restart is not
129drafted unless it outlasts the deploy.
130
131**Page speed** is timed to the first byte of each page, loaded as a
132browser loads it. The checks identify themselves as `g1t-status/1.0` at
133the end of a browser's user agent.
134
135If something is broken and the page does not show it, write to
136[support@g1t.sh](mailto:support@g1t.sh) or see
137[support](https://g1t.sh/support).
138
139## Planned maintenance
140
141Work that may interrupt a part is announced ahead of time:
142
1431. It is listed under **Upcoming maintenance** with its window (start and
144 end, shown in your time zone), the parts it affects, and what you may
145 notice.
1462. When the window opens, it moves to **Maintenance in progress**, and its
147 parts show **Under maintenance**.
1483. When the window ends, it is marked complete on its own, with an update
149 saying so. Staff can also start it early, finish it early, or cancel it.
150
151Each maintenance window has a page at
152`https://status.g1t.sh/maintenance/<id>`.
153
154## Subscribe to updates
155
156Get an email when an incident or maintenance is posted or updated:
157
1581. Enter your address under **Subscribe to updates** on
159 [status.g1t.sh](https://status.g1t.sh/), or on
160 [status.g1t.sh/subscribe](https://status.g1t.sh/subscribe) to choose
161 which parts you hear about. Leave every part clear to hear about all of
162 them.
1632. Open the email from `noreply@g1t.sh` and follow **Confirm
164 subscription**, then press the button on the page. The link works once,
165 for 24 hours. Nothing is sent until you confirm.
1663. To change which parts you hear about, subscribe again with the same
167 address and confirm again.
168
169Every email has an **Unsubscribe** link at the bottom, and mail apps that
170support one-click unsubscribing show it too. Staff choose per update
171whether to email: SEV1 and SEV2 updates are emailed, smaller ones may
172not be. The feeds carry every update.
173
174## Feeds
175
176Every public incident update and maintenance notice, newest first, the
177last 50:
178
179| Feed | Address |
180| --- | --- |
181| Atom (feed readers, Slack's RSS app, and most chat tools) | `https://status.g1t.sh/feed.xml` |
182| JSON Feed 1.1 | `https://status.g1t.sh/feed.json` |
183
184Each item links to the update on its incident's or maintenance's page.
185
186## The status as JSON
187
188`GET https://status.g1t.sh/status.json` returns the same report, readable
189from any origin and cached for 30 seconds:
190
191```sh
192curl -s https://status.g1t.sh/status.json
193```
194
195```json
196{
197 "checked_at": "2026-10-05T14:03:00.000Z",
198 "overall": {
199 "state": "up",
200 "title": "All systems normal",
201 "line": "Every part of g1t answered its last check."
202 },
203 "components": [
204 {
205 "key": "api",
206 "name": "API",
207 "address": "api.g1t.sh",
208 "checks": "The API's front page.",
209 "state": "up",
210 "check_state": "up",
211 "detail": "Answered in 84 ms",
212 "latency_ms": 84,
213 "uptime_90d": 99.98
214 }
215 ],
216 "incidents": [],
217 "maintenance": []
218}
219```
220
221| Field | What it is |
222| --- | --- |
223| `overall.state` | `up`, `degraded`, `down`, `maintenance`, or `unknown` before the first check |
224| `components[].state` | What the page shows: `up`, `degraded`, `partial`, `down`, `maintenance`, or `unmonitored` |
225| `components[].check_state` | What the last check alone said: `up`, `degraded`, `down` or `unmonitored` |
226| `components[].uptime_90d` | Share of checks answered over 90 days, 0 to 100, or `null` |
227| `incidents[]` | Open incidents, and those resolved in the last 90 days, newest first |
228| `incidents[].status` | `investigating`, `identified`, `monitoring` or `resolved` |
229| `incidents[].impact` | `down` when any part has a major outage, otherwise `degraded` |
230| `incidents[].component_impacts` | Each affected part's `key` and `impact`: `degraded`, `partial_outage` or `major_outage` |
231| `incidents[].url` | The incident's page |
232| `incidents[].postmortem_published_at` | When its postmortem was published, or `null` |
233| `incidents[].updates` | Newest first, each with `id`, `at`, `status` and `text` |
234| `maintenance[]` | Maintenance scheduled or under way, soonest first, each with `title`, `message`, `components`, `starts_at`, `ends_at`, `state` (`scheduled` or `in_progress`), `url` and `updates` |
235
236`https://status.g1t.sh/badge.svg` is a small badge with the banner's
237words, for a README or a dashboard.
238
239The old addresses, `g1t.sh/status` and `g1t.sh/status.json`, redirect
240here.