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