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.

490 linesCodeBlameRaw
1---
2title: Home
3description: Your workspace's front page. The past week in four figures, the daily signal (what your work says today, with the evidence), where you're needed now, what happened since you were last here in plain English, what is running, and the one item to start with. How every number is worked out.
4---
5
6**Home** is the first page of your workspace, at `/<workspace>/-/home`.
7Across the top is [the past week](#the-past-week) in four figures, each
8against the week before. Under it, the main column is read top to
9bottom:
10
111. **[The daily signal](#the-daily-signal)**: what the workspace's work
12 says today. Its headline is the finding that matters most, and the
13 others follow, each a sentence with its evidence and where to see it.
14 Under them is a box that [asks g1t](#ask-from-home) about any of it.
152. **Where you're needed**: everything waiting on you, however long ago
16 it started, with the action beside each item. Its first row is
17 [Start here](#start-here), the one item to do first, and why.
183. **Since you were last here**: one card for the span. It shows what people
19 did, what changed in plain English when you ask for it, and what landed,
20 each change with whether it is live yet.
21
22The side column stays in view as you scroll:
23
24- **[Running now](#running-now)**: workflow runs and builds still going.
25- **[Spent](#spent)**: what the span cost, and the month so far.
26- **[Settled for you](#settled-for-you)**: what finished by itself.
27
28On a phone it is one column: the past week, the daily signal, Where
29you're needed, Running now, the span, then Spent and Settled for you.
30
31For a workspace's owners, Home also opens
32[Getting started](/guides/workspaces/#getting-started), the setup guide,
33until they finish or close it. The **Getting started** button at the top
34of Home opens it again at any time, as `?setup=1` does.
35
36Every number on the page comes from what g1t has recorded. Nothing is
37estimated, and nothing compares your workspace or its teams with anyone
38else's: each figure is set against your own last weeks. When a part of g1t does not answer, the section it feeds says
39so, and the rest of the page still shows. Only what you ask g1t is written
40by a model: [What changed](#what-changed) and the answers in Ask.
41
42## The past week
43
44Four figures for the last seven UTC days. Each shows how it moved since the
45seven days before (green when that is good news, red when it is not) and a
46line over the last ten weeks. Point at the line, or focus it and use the
47arrow keys, to read any week. Each figure opens the page behind it.
48
49| Figure | What it counts |
50| --- | --- |
51| **Agent-authored merges** | Pull requests that merged in the week and were an [agent's](#whose-work-is-an-agents). |
52| **Spend per agent merge** | The week's agent [usage](/guides/usage-and-billing/#the-usage-page) at price, plus what the [sessions](/guides/sessions/) started in it cost (estimated at list price from their token usage), divided by the agent pull requests that merged in it: an average, not what any one cost. A dash when usage can't be read or nothing an agent made merged. |
53| **Stalled changes** | Pull requests open at the end of each week (now, for this one), opened three days or more before, with nothing in the three days before: no push, comment, review, timeline event, check or session. Drafts count. |
54| **Agent rework rate** | Of the agent pull requests that merged in the week, the share a person asked for changes on before they merged. |
55
56### Whose work is an agent's
57
58A pull request is an agent's when g1t's agent opened it, it was opened as
59an agent's, or a [session](/guides/sessions/) is tied to it: linked to it,
60started for it, or pushing its branch. Its owner is the person who asked
61for it, else its author, so an agent's work counts toward the person it
62was for.
63
64## The daily signal
65
66First the day, then one sentence for the finding that matters most today,
67then the others. Each finding names its evidence in a line of figures,
68links to where you can see it, and has **Ask g1t**, which asks
69[Ask](/guides/ask/) to look into it. A finding with a trend has its line
70beside it. When nothing stands out, the headline says what the week did.
71
72| Finding | When it shows |
73| --- | --- |
74| **Work items waiting on one unreviewed change** | An open pull request no one has reviewed is for a work item that other open work items are blocked by. The one holding up the most leads. |
75| **Agent drafts waiting for review** | This week's first reviews waited at least four times as long as agents took to open the pull requests (from their session starting), and at least four hours. Without that gap: first reviews took half as long again as the weeks before. |
76| **A milestone shipped** | A milestone closed in the last seven days, against its due date, with its weeks in build, its merged pull requests and its projects. |
77| **Where agent spend is going** | More than a third of the quarter's agent spend by pull request went into one milestone (else one work item, else one project). Spend is g1t's usage on each pull request and its share of its sessions' cost. |
78| **Stalled changes rising** | At least three more stalled changes than last week, and a quarter more. |
79| **Agent rework moving** | People asked for changes on agents' merged work at least 8 points more, or less, often than over the four weeks before (with five agent merges or more). |
80| **A practice catching on** | Two or more people started using a harness (Claude Code, Codex, Cursor and so on) this month, at least two weeks after the first person did. |
81| **Who works where** | Someone started merging to a project one person has carried (three quarters of its last 90 days' merges), or merged to a project for the first time this week after work elsewhere. |
82
83Findings are ordered by how much they hold up: blocked work first, then
84waits, then what shipped and where spend went. Up to five show, and the
85rest are one click away. What the work says is read again at most every
86five minutes for each person, so a figure can be up to five minutes
87behind. The same reads, at more length, are on the
88[workspace overview](/guides/workspaces/#the-workspace-overview).
89
90## Ask from Home
91
92The box under the daily signal asks g1t anything about your work. Type a question and
93press **Enter** (**Shift+Enter** starts a new line): the top bar's
94[Ask](/guides/ask/) panel opens and sends it, and the answer streams in
95there. Under the box are questions to start with:
96
97| Starter | What it does |
98| --- | --- |
99| **Summarize what changed since I was last here** | Writes a summary of the span into [What changed](#what-changed), further down the page, and brings it into view. Over another span it says so, such as **Summarize what changed in the last 7 days** |
100| **What needs me first?** | Asks which things need you, most urgent first, one line each on what to do |
101| **What shipped today?** | Asks what shipped today: what is live, what is still deploying, and what failed |
102| **Who's working on what?** | Asks who is working on what right now, and whether anything is stuck |
103
104Everything you ask from Home goes to your
105[direct message with @g1t](/guides/ask/#one-conversation-in-ask-and-in-chat),
106as a question asked in Ask does, so you can carry on from it in Ask or in
107Chat. It answers with your workspace's own AI provider, so an owner has to
108[set Ask up](/guides/ask/#set-it-up) first. Until then, or while g1t is
109still answering an earlier question, the panel opens with your question
110in its box rather than sending it, so nothing you typed is lost.
111
112## Where you're needed
113
114This list has no time window: something that started waiting a week ago
115is here until you deal with it. Each row says what it is, what is at
116stake, how long it has waited, and has its action beside it.
117
118| Source | Rows |
119| --- | --- |
120| Code | A failed production build; your open pull request that can't land until you act (it conflicts, a required check fails, someone asked for changes, approvals are missing); your pull request that meets everything its branch asks for, ready for you to merge; a review asked of you by name; an invitation to a repository; a job waiting for a self-hosted runner |
121| Notifications | An unread notification in this workspace that is a warning (someone or something is waiting) or a failure. One whose cause is over, such as a workflow that has passed since or a pull request that merged, has [settled](/guides/notifications/#threads-that-settle-themselves) and is not here |
122| Chat | A conversation that mentions you, or a direct message you haven't read. Muted conversations are left out |
123
124A notification about something already on the list, such as a pull
125request whose row is there, is left out.
126
127Each row's button takes you to the place where you act on it: **See the
128build** for a failed production build, **Review** for a review asked of
129you, **Respond** for an invitation, **Look** for a job waiting for a
130runner or your pull request that can't land (**Review** when it waits
131for a verdict), **Reply** for a message, and
132**Open** for a notification. Your pull request that is ready to merge,
133marked **Ready to merge**, says **Open** too: it opens the pull request,
134where you merge it. Nothing on Home merges on the spot.
135
136Rows are ordered most pressing first, by tier, then by how long each has
137waited, longest first:
138
1391. A failed production build.
1402. Your pull request that can't land until you act on it.
1413. Finished work that only waits for you: your pull request to merge, a
142 review, an invitation.
1434. Something that may be stuck: a job without a runner.
1445. Unread warnings and failures in your notifications.
1456. Mentions and direct messages.
146
147The list shows the first eight rows; **Show more** opens the rest. The
148sentence under the page's heading starts with how many things need you.
149
150## Start here
151
152**Start here** is the first row of Where you're needed, set apart at the
153top: the most pressing tier, and within it the row that has waited
154longest. g1t picks it with that rule, so the same rows always give the
155same pick. It says why, such as "Everything it needs is met; it lands when
156you merge it." When others in its tier are waiting too, it adds that this
157one has waited longest. Beside its button are what is at stake, how long
158it has waited, and who is on it.
159
160Its title links to what it picked: the pull request, work item or build. The
161button opens the same place. For a pull request (one ready to
162merge, a review asked of you, or yours that is stuck) it says **Open pull
163request**; you merge or review there. For anything else it names the
164action, such as **See the build** or **Respond**.
165
166## Since you were last here
167
168Home remembers when you were last on it, for each workspace, with your
169account, so it is the same on your laptop and your phone. The span's card
170covers what happened since then, and its heading says the span
171in words, such as **Since Tuesday evening · 2 days** or **Since 40
172minutes ago**.
173
174| Switch | What it covers |
175| --- | --- |
176| **Since last visit** | From the end of your last visit to now. The default. |
177| **Last 24 hours** | The 24 hours up to now. |
178| **Last 7 days** | The 7 days up to now. |
179
180The switch is part of the address (`?window=24h`, `?window=7d`), so you
181can bookmark a span.
182
183How a visit is counted:
184
185- A visit counts once the page has been in view for five seconds. A quick
186 refresh does not count, so it never wipes what you haven't looked at.
187- What it records is when the page loaded, so anything that happens while
188 you are reading shows next time.
189- Visits less than 30 minutes apart are one visit. Going to a pull request
190 and coming back, or refreshing, keeps the same span until you have been
191 away for half an hour.
192- With no visit on record, Home shows the last 24 hours and says so. After
193 more than 14 days away, it shows the last 14 days.
194
195The sentence under the heading sums it up, for example:
196
197> 8 things need you. Since Tuesday evening, 3 people pushed 41 commits and
198> merged 5 changes, and 12 changes landed.
199
200It says what people did first (the commits they pushed and the changes
201they merged; if neither, the messages they sent), then everything that
202[landed](#landed). When nothing at
203all was counted, it says so plainly:
204
205> Quiet since Tuesday evening: nothing pushed, merged, deployed or said.
206
207When Code and Chat both failed to answer, the sentence ends with "what
208people did couldn't be read" rather than reading as quiet.
209
210### What changed
211
212**What changed**, at the top of the span's card, has g1t tell you what happened in the
213span in plain English: what changed, why, and what is live. It is not
214written until you ask, since each summary is a call to your workspace's
215AI provider:
216
2171. Choose **Summarize** on the card, or the
218 [starter](#ask-from-home) **Summarize what changed since I was last
219 here** at the top of the page.
2202. g1t's summary streams into the card as it is written. It reads g1t as
221 you, as [Ask](/guides/ask/#what-it-can-read) does, so it covers only
222 what you can see.
2233. When it is finished:
224 - **Ask a follow-up** opens the top bar's Ask on the same
225 conversation, so you can ask about anything in the summary.
226 - **Summarize again** writes a new one.
227 - **In your direct message with g1t** opens the conversation in Chat,
228 where the summary is kept.
229
230The question g1t is sent reads as you would ask it, with the span's start
231in your time zone: "Summarize what changed since I was last here (2:12
232PM) in plain English." Choosing another span with the switch starts it
233over. When Ask is not set up, the card says so: owners get a link to
234connect a provider and choose it for Ask, and members are told to ask an
235owner.
236
237### People
238
239Under What changed, **People** shows what people did in the span, one line
240per kind of thing with its count, and each line opens the place that lists
241them: a project's Activity tab for pushes, its pull requests, **Work** for
242work items, Artifacts, Chat. Beside the heading are the faces of the five most active,
243and how many more there were.
244
245| Line | What counts | From |
246| --- | --- | --- |
247| *3 people pushed 41 commits to 4 projects* | Every push to a branch of one of the workspace's repositories (`git.push`; tags are not pushes). The commits are the ones each push brought to its branch, along the branch's first-parent line from where it is now back to where it was, at most 50, and one for a new branch. A push recorded before commits were counted counts as one commit. | Events |
248| *opened 2 pull requests, merged 5, closed 1 without merging* | `pull.opened`, `pull.merged`, `pull.closed` | Events |
249| *reviewed 3 pull requests* | A review is a comment with a verdict | Events |
250| *opened 4 work items, closed 6* | `work_item.opened`, `work_item.closed` | Events |
251| *left 9 comments* | `comment.created` without a verdict | Events |
252| *2 deploys went out, 1 failed* | `deployment.succeeded` and `deployment.failed`, by who set the build off | Events |
253| *published 1 release*, *published 2 package versions* | `release.published`, `package.published` | Events |
254| *created 1 doc, edited 7 docs* | Artifacts made (`folio.created`), and artifacts whose content changed (`folio.updated`): each artifact once, and everyone whose changes a version holds edited it. "Docs" when every one is a doc, else "artifacts". Counts only: Home never shows an artifact's title here. | Events |
255| *sent 120 messages in 5 conversations* | Text messages and thread replies that were not deleted, in the conversations you can read: every public channel, and the private channels and direct messages you are in. Conversations are those with at least one message. | Chat |
256
257A push an import made names nobody, so it is counted without a face.
258
259It says when it has nothing to show, and names the part that didn't
260answer (Code or Chat) so an empty list never reads as a quiet day.
261
262### Landed
263
264The rest of the span's card is everything that landed in the span,
265newest first:
266
267| Row | What it is |
268| --- | --- |
269| A pull request merged | With who wrote it, and who merged it when that was someone else |
270| A push to a default branch | One row per push a person made straight to a default branch: its commit's first line when it brought one, else how many commits, and who pushed. For the ten projects pushed to most in the span; past those, one row per project with how many commits and pushes |
271| A production build | Only one that no merge or push on the list already speaks for: a redeploy, a rollback, a build of a project whose pushes weren't read, or one that failed. A build that shipped a merge is that merge's [live label](#live-after-merge), not a row of its own. Previews stay on the project's Deployments |
272| A release published | Its tag and name, and who released it |
273| A package version published | Its name and version, and who published it |
274
275Its line counts them by kind, and how many of the merges and pushes are
276live, deploying, waiting to deploy, or failed to deploy. The first five
277show; **Show more** opens the rest. Over **Last 7 days** the rows are
278grouped by day (**Today**, **Yesterday**, **Sun, Oct 11**), five of each
279day showing.
280
281#### Explain a change
282
283Every row has an **Explain** button (the sparkle beside its time,
284"Explain this change in plain English"). It opens the top bar's
285[Ask](/guides/ask/) and asks g1t about that one change:
286
287| Row | What g1t is asked |
288| --- | --- |
289| A merge or a push | "Explain pull request #47 in acme/web in plain English: what changed, why, and is it live?" (or the commit, for a push) |
290| A production build | What went out in that deployment |
291| A release or a package version | What's new in it |
292
293The answer is kept in your direct message with @g1t, like everything you
294[ask from Home](#ask-from-home).
295
296#### Live after merge
297
298Each merge and push says whether it is live yet, for a project that
299deploys to production. Landing on `main` is not shipping: a change is
300shipped once a production deployment that contains it succeeds.
301
302| Label | When |
303| --- | --- |
304| **Live 9 min after merge** | A production deployment that succeeded shipped it, this long after it landed. The label opens that deployment, or the workflow run that deployed it |
305| **Deploying** | A production deployment after it is under way |
306| **Deploy failed** | The production deployment after it failed, and none has shipped it since |
307| **Waiting to deploy** | Nothing has deployed it yet |
308
309How g1t knows: when a production deployment succeeds, a
310[g1t.page build](/guides/deployments/) or one a workflow or the API
311reported, g1t reads its commit's history back and writes down each
312commit no production deployment shipped before as shipped by this one.
313So a commit's first production deployment is the one that took it live,
314and a rollback to an older commit ships nothing new. Home reads only what
315was written down, so this costs nothing when the page loads. A change
316that landed before g1t began writing this down for its project goes live
317with the first production deployment that succeeded after it.
318
319#### Made with an agent
320
321A merge or push made in a harness session, such as Claude Code working
322for you, carries the agent marker beside its title; it opens the
323session. A pull request is marked when a session is tied to it (it
324pushed the branch, named the pull request, or a commit on it carries a
325`G1t-Session:` trailer); a push when one of its commits carries the
326trailer. The change is still yours, and stays in the same list. When one of its sources (pull
327requests, pushes and releases, deployments) didn't answer, the card says
328so under the list.
329
330## Running now
331
332At the top of the side column, what is going right now, longest-going
333first, each with its state and how long it has gone:
334
335| Kind | What it is |
336| --- | --- |
337| Workflow run | A [workflow](/guides/actions/) run that is queued, waiting, running, or waiting for approval, in the ten projects pushed to most in the span (their newest 20 runs each) |
338| Build | A project's newest build, queued or building |
339
340## Spent
341
342In the side column: what the workspace spent over the span, from its
343[statement](/guides/usage-and-billing/), with each line at its price: what
344was charged plus what your plan's included usage, a trial, a pool or a
345discount paid of it. The lines are the statement's kinds of charge, such
346as **Runner minutes, 2-core**, **Self-hosted runner time** and
347**Deployments**, most first. Payments, credits, refunds and tax
348are money in, not spend, and are left out. Under the total are the days
349counted and the month so far, at price.
350
351The statement keeps whole days, midnight to midnight UTC, so spend counts
352from the start of the UTC day the span began: a span since 3 p.m. UTC
353yesterday counts all of yesterday. Usage that g1t measures through the
354month, such as hosting requests and storage, shows on the day it is added
355to the statement.
356
357## Settled for you
358
359At the bottom of the side column: your notifications in this workspace
360that [settled themselves](/guides/notifications/#threads-that-settle-themselves)
361in the span, newest first, each with why, such as **CI passed in run 330**
362or **Merged by @ana**: a later run passed, the pull request merged, the
363deployment went out. One you marked done yourself is not counted. **Done**
364opens the notifications that are done.
365
366## While the page is open
367
368Home keeps up with the workspace without a reload. What lands, starts
369running, finishes or comes to need you while you are on the page joins its
370list, sliding in at its place and lit for a moment; counts and the
371sentence under the heading update with it. Runs that finish leave Running
372now.
373
374| Home updates when | From |
375| --- | --- |
376| Commits are pushed to a project's default branch, or a tag is pushed | The workspace's projects (the first 25) |
377| A pull request is opened, reviewed, merged or closed, a comment changes, or a work item linked to one of them changes | The same projects |
378| A workflow run or a job in it starts or finishes, a build or deployment moves, or a release or package is published | The same projects |
379| A [session](/work/sessions/) starts or ends | The same projects |
380| Something comes to need you, or you deal with it elsewhere | Your notifications |
381
382A busy workspace sends changes all the time, so Home refreshes a second
383after the last one and at most every five seconds. It works like the
384[pages that update live](/guides/notifications/#pages-that-update-live):
385never while you are typing in Ask or have a dialog open, and a tab out of
386view catches up when you come back to it. Pushes to other branches and a
387commit's checks don't refresh Home, because it doesn't show them. Spend
388updates with the rest but changes only as usage is metered.
389
390Refreshing in place keeps the same span: it is the same visit.
391
392## Without Code access
393
394A member whose membership does not include Code sees Home without anything
395from Code:
396
397- The past week and the daily signal are not shown. The page opens with
398 **What are we building today?** and the box that asks g1t.
399- People shows what was said and the artifacts edited; nothing from
400 repositories.
401- Where you're needed has no rows from Code, and no notifications about a
402 repository.
403- Landed and Running now are not shown.
404- Spent is the same for every member.
405
406## When something doesn't answer
407
408Each section reads its own part of g1t and shows as soon as it has it.
409When one does not answer:
410
411- Where you're needed and Running now name the parts that didn't answer,
412 so an empty list never reads as nothing waiting.
413- People counts what could be read, and names the part that is missing
414 (Code or Chat). If nothing could be read, the card says so, and the
415 sentence under the heading says what people did couldn't be read.
416- Landed and Spent each say their part didn't answer. When
417 deployments or sessions can't be read, Landed shows its rows without
418 their live labels or agent markers.
419- Settled for you says when your notifications can't be read.
420- The daily signal says when the work couldn't be read, and the past week
421 is left out. When some projects didn't answer, it says its findings
422 leave them out.
423- What changed says when Ask can't be reached or isn't set up, or when
424 the question could not be sent.
425- If your last visit can't be read, the span is the last 24 hours and the
426 page says why.
427
428When a list g1t reads is longer than it reads at once (100 pull requests
429per project and state, 50 projects, builds
430of 20 projects, 5,000 events of the span), the page says that some work
431may be missing or some counts are low.
432
433## How it scales
434
435Every event in g1t is in one log, and its ids sort by time, so a span is a
436range of ids. Home asks the events service for one digest of the span: for
437each of the workspace's repositories (the first 50) and each kind of event
438it counts, that is one range scan of an index on repository, type and id,
439and the workspace's artifact events are the same range under no
440repository. A busy week of tens of repositories is a few thousand rows,
441read in one round trip; chat's count is one query over the conversations
442you can read. When a workspace has hundreds of repositories, the next step
443is a daily rollup per workspace that the digest reads instead of the log.
444It is not built yet.
445
446## For services: activity_digest and activity
447
448Home's counts come from two methods other services can call too.
449
450**`activity_digest`** on the events service (`repo_ids`, `workspace`,
451`from`, `until`; RFC 3339, `[from, until)`; the caller has checked the
452viewer may read each repository) returns, per repository that had any
453event: `pushes` (`count`, `commits`, `branches`, `by` with each actor's
454pushes and commits, and `default_branch` with the same for pushes straight
455to it and `last_at`), `pulls` (`opened`, `merged`, `closed`), `work_items`
456(`opened`, `closed`, for the work items linked to it), `reviews`, `comments`, `deployments` (`succeeded`,
457`failed`, `production`), `releases` and `packages` (newest first, at most
45850 each); and for the workspace named, `folios` (`created`, `edited` with
459each folio's authors, `edited_count`). Every count by actor is a list of
460`{ actor, count }`, where `actor` is a member key: `user:<id>` for an
461account (g1t is `user:usr_g1t_agent`), `agent:<id>` for an agent, or
462empty for nobody. `complete` is
463false when more than 5,000 events fell in the span, or more than 50
464repositories were named.
465
466**`activity`** on the chat service (`workspace`, `viewer`, `from`,
467`until`) returns `messages`, `channels` (conversations with at least one)
468and `authors` (`key`, `messages`; most first), over text messages and
469thread replies not deleted in the conversations the viewer can read.
470
471**`workspace_signals`** on the work service takes `workspace`,
472`repo_ids` (at most 100), `viewer`, `until` (a UTC day), `weeks` (1 to
47313), `days` (1 to 28) and `since` (a UTC day, at most 400 days before
474`until`). For the repositories the viewer can read, it returns:
475
476- `weeks`: per repository and week of seven days ending with `until`,
477 `merged`, `agent_merged`, `agent_reworked`, `agent_drafted` and
478 `agent_draft_seconds`, `reviewed` and `review_seconds`, and `stalled`.
479- `days`: per repository and day, `opened`, `merged`, `agent_merged`,
480 `reworked`, `reviews` and `sessions`.
481- `waiting`: open pull requests with no first review, oldest first, at
482 most 50, each with its work item and the open work items it `blocks`.
483- `pulls`: those opened or merged since `since`, at most 3,000 newest
484 first, each with its owner, work item and milestone; `pulls_capped`
485 when there were more.
486- `authors`: per repository and owner, their merges over its history and
487 in the last 90 days.
488- The `items` and `milestones` those name.
489
490Rows are per repository, so a caller asking in batches adds them up.