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.

g1t.sh
252 linesCodeBlameRaw
1// @ts-check
2import starlight from '@astrojs/starlight';
3import { defineConfig } from 'astro/config';
4
5import { generateApiReference } from './scripts/api-reference.mjs';
6
7// A page per REST operation, written from the OpenAPI document.
8const apiGroups = generateApiReference();
9
10export default defineConfig({
11 site: 'https://docs.g1t.sh',
12 // Pages that moved, so links already shared still arrive.
13 redirects: {
14 '/guides/inbox/': '/guides/notifications/',
15 '/guides/mirroring/': '/guides/github/',
16 '/guides/today/': '/guides/home/',
17 // g1t no longer runs agents of its own: coding agents connect to it.
18 '/guides/g1t-agents/': '/guides/bring-your-own-agent/',
19 '/guides/working-with-g1t/': '/guides/bring-your-own-agent/',
20 '/guides/agents/': '/guides/bring-your-own-agent/',
21 '/guides/agent-abilities/': '/guides/bring-your-own-agent/',
22 '/guides/agent-access/': '/guides/bring-your-own-agent/',
23 '/guides/agent-memory/': '/guides/bring-your-own-agent/',
24 '/guides/agent-routines/': '/guides/bring-your-own-agent/',
25 '/guides/agent-sessions/': '/guides/why-blame/',
26 '/guides/agent-skills/': '/guides/bring-your-own-agent/',
27 '/guides/agent-budgets/': '/guides/usage-and-billing/',
28 '/guides/agents-and-memory/': '/guides/bring-your-own-agent/',
29 '/guides/talking-to-agents/': '/guides/bring-your-own-agent/',
30 '/guides/chat-app/': '/guides/chat/',
31 '/guides/customize/': '/guides/bring-your-own-agent/',
32 '/guides/marketplace/': '/guides/bring-your-own-agent/',
33 '/guides/models/': '/guides/integrations/',
34 '/guides/ai-gateway/': '/guides/integrations/',
35 '/guides/context-hub/': '/guides/bring-your-own-agent/',
36 // Project and workspace memory is gone: harnesses keep their own.
37 '/guides/memory/': '/guides/bring-your-own-agent/',
38 '/guides/spend/': '/guides/usage-and-billing/',
39 '/guides/outcomes/': '/guides/milestones/',
40 },
41 integrations: [
42 starlight({
43 title: 'g1t docs',
44 description: 'Guides and reference for g1t, where a team and its coding agents talk, build and ship.',
45 components: {
46 Footer: './src/components/Footer.astro',
47 Head: './src/components/Head.astro',
48 Header: './src/components/Header.astro',
49 PageTitle: './src/components/PageTitle.astro',
50 SiteTitle: './src/components/SiteTitle.astro',
51 SocialIcons: './src/components/SocialIcons.astro',
52 },
53 // Each tab under the header shows its own part of the sidebar.
54 routeMiddleware: './src/route-data.ts',
55 expressiveCode: {
56 // Dark first, as the base; the light one where the page is light.
57 // Starlight switches between them by <html data-theme>.
58 themes: ['github-dark-default', 'github-light-default'],
59 useDarkModeMediaQuery: false,
60 // Plain panels with a copy button, without window chrome.
61 defaultProps: { frame: 'none' },
62 styleOverrides: {
63 borderRadius: '0.75rem',
64 borderColor: 'var(--g1t-line)',
65 codeBackground: 'var(--g1t-surface)',
66 codeFontSize: '0.8125rem',
67 frames: {
68 editorBackground: 'var(--g1t-surface)',
69 terminalBackground: 'var(--g1t-surface)',
70 terminalTitlebarBackground: 'var(--g1t-raised)',
71 terminalTitlebarBorderBottomColor: 'var(--g1t-line)',
72 editorTabBarBackground: 'var(--g1t-raised)',
73 shadowColor: 'transparent',
74 },
75 },
76 },
77 logo: { src: '@g1t/theme/mark.svg', alt: '' },
78 favicon: '/favicon.svg',
79 customCss: [
80 '@g1t/theme/fonts.css',
81 '@g1t/theme/tokens.css',
82 './src/styles/light.css',
83 './src/styles/g1t.css',
84 ],
85 editLink: {
86 baseUrl: 'https://g1t.sh/flagon-io/g1t/blob/main/apps/docs/',
87 },
88 lastUpdated: true,
89 head: [
90 { tag: 'link', attrs: { rel: 'icon', href: '/favicon.ico', sizes: '32x32' } },
91 { tag: 'link', attrs: { rel: 'icon', type: 'image/png', sizes: '192x192', href: '/icon-192.png' } },
92 { tag: 'link', attrs: { rel: 'icon', type: 'image/png', sizes: '512x512', href: '/icon-512.png' } },
93 { tag: 'link', attrs: { rel: 'apple-touch-icon', sizes: '180x180', href: '/apple-touch-icon.png' } },
94 { tag: 'link', attrs: { rel: 'manifest', href: '/site.webmanifest' } },
95 // The browser's own bars, in the page's colour for the system's setting.
96 { tag: 'meta', attrs: { name: 'theme-color', content: '#0f0f11', media: '(prefers-color-scheme: dark)' } },
97 { tag: 'meta', attrs: { name: 'theme-color', content: '#fbfbfa', media: '(prefers-color-scheme: light)' } },
98 ],
99 sidebar: [
100 {
101 label: 'Get started',
102 items: [
103 { label: 'Quickstart', slug: 'quickstart' },
104 { label: 'How g1t works', slug: 'concepts/overview' },
105 { label: 'The g1t CLI', slug: 'guides/cli' },
106 { label: 'Home', slug: 'guides/home' },
107 { label: 'Ask g1t', slug: 'guides/ask' },
108 { label: 'Notifications', slug: 'guides/notifications' },
109 { label: 'The desktop app', slug: 'guides/desktop' },
110 { label: 'The phone app', slug: 'guides/mobile' },
111 { label: 'Search and Explore', slug: 'guides/search' },
112 { label: 'Status and incidents', slug: 'guides/status' },
113 ],
114 },
115 {
116 label: 'Chat',
117 items: [
118 { label: 'Chat', slug: 'guides/chat' },
119 { label: 'Artifacts', slug: 'guides/artifacts' },
120 ],
121 },
122 {
123 label: 'Projects',
124 items: [
125 { label: 'Projects', slug: 'guides/projects' },
126 { label: 'Deployments', slug: 'guides/deployments' },
127 { label: 'Deployments API', slug: 'guides/deployments-api' },
128 { label: 'Observability', slug: 'guides/observability' },
129 { label: 'Packages', slug: 'guides/packages' },
130 { label: 'Container images', slug: 'guides/containers' },
131 { label: 'npm', slug: 'guides/npm' },
132 { label: 'Cargo', slug: 'guides/cargo' },
133 { label: 'Composer', slug: 'guides/composer' },
134 { label: 'Maven', slug: 'guides/maven' },
135 { label: 'NuGet', slug: 'guides/nuget' },
136 { label: 'RubyGems', slug: 'guides/rubygems' },
137 { label: 'Go modules', slug: 'guides/go' },
138 { label: 'Secrets and variables', slug: 'guides/secrets-and-variables' },
139 ],
140 },
141 {
142 label: 'Security',
143 items: [
144 { label: 'Security', slug: 'guides/security' },
145 { label: 'Dependency updates', slug: 'guides/dependency-updates' },
146 { label: 'Secret protection', slug: 'guides/security/secret-protection' },
147 { label: 'Code scanning', slug: 'guides/security/code-scanning' },
148 { label: 'Supply chain', slug: 'guides/security/supply-chain' },
149 { label: 'Advisories and reporting', slug: 'guides/security/advisories' },
150 { label: 'Security overview', slug: 'guides/security/security-overview' },
151 { label: "What's free and what's paid", slug: 'guides/security/pricing' },
152 ],
153 },
154 {
155 label: 'Coding agents',
156 items: [
157 { label: 'Connect a coding agent', slug: 'guides/bring-your-own-agent' },
158 { label: 'Claude Code plugin', slug: 'guides/claude-code-plugin' },
159 { label: 'Sessions, claims and dependencies', slug: 'guides/sessions' },
160 { label: 'Sessions and why-blame', slug: 'guides/why-blame' },
161 ],
162 },
163 {
164 label: 'Connect your tools',
165 items: [
166 { label: 'Integrations', slug: 'guides/integrations' },
167 { label: 'Webhooks', slug: 'guides/webhooks' },
168 { label: 'GitHub Actions', slug: 'guides/actions' },
169 { label: 'Self-hosted runners', slug: 'guides/self-hosted-runners' },
170 { label: 'Guardrails', slug: 'guides/guardrails' },
171 ],
172 },
173 {
174 label: 'Landing changes',
175 items: [
176 { label: 'Pull requests and checks', slug: 'guides/pull-requests' },
177 { label: 'Checks', slug: 'guides/checks' },
178 { label: 'Pull requests into other branches', slug: 'guides/base-branches' },
179 { label: 'Labels', slug: 'guides/labels' },
180 { label: 'Milestones', slug: 'guides/milestones' },
181 { label: 'The merge queue', slug: 'guides/merge-queue' },
182 { label: 'Rules', slug: 'guides/rules' },
183 { label: 'CODEOWNERS', slug: 'guides/codeowners' },
184 { label: 'Forks and branches', slug: 'concepts/forks' },
185 ],
186 },
187 {
188 label: 'Workspaces',
189 items: [
190 { label: 'Accounts and sign-in', slug: 'guides/authentication' },
191 { label: 'GitHub', slug: 'guides/github' },
192 { label: 'Workspaces and tokens', slug: 'guides/workspaces' },
193 { label: 'Access and roles', slug: 'guides/access-and-roles' },
194 { label: 'Permissions', slug: 'guides/permissions' },
195 { label: 'Teams', slug: 'guides/teams' },
196 { label: 'People and teams', slug: 'guides/people-and-teams' },
197 { label: 'Managing a repository', slug: 'guides/managing-repositories' },
198 { label: 'Releases', slug: 'guides/releases' },
199 { label: 'Transferring a repository', slug: 'guides/transferring-repositories' },
200 { label: 'Audit log', slug: 'guides/audit-log' },
201 { label: 'Usage and billing', slug: 'guides/usage-and-billing' },
202 { label: 'Git', slug: 'guides/git' },
203 ],
204 },
205 {
206 label: 'Run g1t yourself',
207 items: [
208 { label: 'With Docker Compose', slug: 'guides/self-hosting' },
209 { label: 'How a self-hosted g1t runs', slug: 'guides/self-hosting-architecture' },
210 { label: 'Deploy to Cloudflare', slug: 'guides/deploy-to-cloudflare' },
211 ],
212 },
213 {
214 label: 'Architecture',
215 items: [
216 { label: 'Overview', slug: 'architecture/overview' },
217 { label: 'How a request is served', slug: 'architecture/requests' },
218 { label: 'Services and contracts', slug: 'architecture/services' },
219 { label: 'Git', slug: 'architecture/git' },
220 { label: 'Events', slug: 'architecture/events' },
221 { label: 'Work and the merge queue', slug: 'architecture/work' },
222 { label: 'Actions, runners and sandboxes', slug: 'architecture/compute' },
223 { label: 'Deployments and telemetry', slug: 'architecture/deployments' },
224 { label: 'Data and storage', slug: 'architecture/data' },
225 { label: 'Identity and access', slug: 'architecture/identity' },
226 { label: 'How g1t ships', slug: 'architecture/shipping' },
227 ],
228 },
229 {
230 label: 'Reference',
231 items: [
232 { label: 'API overview', slug: 'reference/api' },
233 { label: 'MCP tools', slug: 'reference/mcp' },
234 { label: 'CLI commands', slug: 'reference/cli' },
235 { label: 'Rate limits', slug: 'reference/rate-limits' },
236 { label: 'Try it in the explorer', link: '/api/reference/', attrs: { target: '_self' } },
237 { label: 'OpenAPI document', link: 'https://api.g1t.sh/openapi.json' },
238 { label: 'llms.txt', link: 'https://g1t.sh/llms.txt' },
239 ],
240 },
241 {
242 label: 'About',
243 items: [
244 { label: "What g1t can't do yet", slug: 'about/limitations' },
245 { label: 'An open letter to Cloudflare', slug: 'about/open-letter-to-cloudflare' },
246 ],
247 },
248 ...apiGroups,
249 ],
250 }),
251 ],
252});