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
77 linesCodeBlameRaw

Pick any line to see why it is the way it is: the commit, the pull request and issue it came from, and what the agent was thinking.

Billing and Usage reconcile: own-provider runs leave Billing's at-price total, and Usage's not-charged part is at price less charged1{
2 "$schema": "../../node_modules/wrangler/config-schema.json",
3 "name": "g1t",
4 "account_id": "1e6f2cffa3f445920836e8ebe446bb58",
5 "compatibility_date": "2026-09-26",
6 // AsyncLocalStorage, for per-request timings and D1 bookmarks
7 // (app/lib/perf.server.ts).
8 "compatibility_flags": ["nodejs_als"],
The docs folder is gone, and what it held lives where people read it: how a self-hosted g1t runs and how to deploy g1t to Cloudflare are pages on docs.g1t.sh under Run g1t yourself, and speed, rate limits and operating g1t.sh are sections of CONTRIBUTING.md; code that cited a file in docs/ now points to the page or section that covers it, or says what it means itself, and applied migrations and the runner images are left as they were.9 // Where it runs (CONTRIBUTING.md, "Speed"). Off runs it in the data centre
Billing and Usage reconcile: own-provider runs leave Billing's at-price total, and Usage's not-charged part is at price less charged10 // nearest the visitor; scripts/perf/placement-probe.mjs measures the
11 // alternatives and `apply` changes every Worker's at once.
12 "placement": { "mode": "off" },
13 "main": "./workers/app.ts",
Merge g1tusercontent.com: registry answers run nothing in a browser, the site's pages run only their own scripts, repository files and avatars on their own origin, raw files rate limited per address14 // g1tusercontent.com: repository files and avatars, on an origin of
15 // their own that never sees g1t.sh's cookies (workers/usercontent.ts).
16 "routes": [
17 { "pattern": "g1t.sh", "custom_domain": true },
18 { "pattern": "g1tusercontent.com", "custom_domain": true }
19 ],
Billing and Usage reconcile: own-provider runs leave Billing's at-price total, and Usage's not-charged part is at price less charged20 // The site holds no data of its own; everything goes through services.
21 // GitHub Actions artifacts, as the API keeps them, for download from a run.
22 // Uploaded avatars (g1t-avatars), served at /avatars/<sha256>. Read
23 // only here: the identity service checks and writes them.
24 "kv_namespaces": [
25 { "binding": "BLOBS", "id": "16a4232cb746418db53782aa068be693" },
26 { "binding": "AVATARS", "id": "e627b571f07047e187c03e1fc2b3bbdd" }
27 ],
28 // The self-hosted runner's releases, served at /downloads/runner/
29 // (routes/downloads-runner.ts); published by scripts/runner-release.mjs.
30 "r2_buckets": [{ "binding": "DOWNLOADS", "bucket_name": "g1t-downloads" }],
31 "services": [
32 { "binding": "IDENTITY", "service": "g1t-identity" },
33 { "binding": "REPOS", "service": "g1t-repos" },
34 // The package registries, on g1t.sh/v2/ (workers/app.ts).
35 { "binding": "PACKAGES", "service": "g1t-packages" },
36 { "binding": "WORK", "service": "g1t-work" },
37 { "binding": "BILLING", "service": "g1t-billing" },
38 { "binding": "EVENTS", "service": "g1t-events" },
39 { "binding": "INTEGRATIONS", "service": "g1t-integrations" },
40 { "binding": "WEBHOOKS", "service": "g1t-webhooks" },
41 { "binding": "ACTIONS", "service": "g1t-actions" },
42 { "binding": "DEPLOYMENTS", "service": "g1t-deployments" },
43 { "binding": "PROJECTS", "service": "g1t-projects" },
44 { "binding": "SECURITY", "service": "g1t-security" },
45 { "binding": "SEARCH", "service": "g1t-search" },
Chat and workspace agents: channels, DMs and named agents you talk to46 // Chat: channels, direct messages and the live socket (services/chat).
47 { "binding": "CHAT", "service": "g1t-chat" },
The artifacts service is services/artifacts, the Worker g1t-artifacts, bound as ARTIFACTS by the API, the site and the agents; its live rooms move to it with a Durable Object transfer from g1t-docs-service, and its database, bucket, indexes and queue keep their names. The git store's binding and settings are GITSTORE, its ops scripts gitstore-*, and workflow run artifacts keep their compatible API under run_artifacts modules. The deploy tool puts a Worker that has never deployed before the Workers in its stage that bind to it, and the deploy guide gives the cutover runbook.48 // Artifacts: spaces, artifacts, each one's live socket, and files in them (services/artifacts).
49 { "binding": "ARTIFACTS", "service": "g1t-artifacts" },
Merge the workspace shell: navigation and phone shell, g1t as orchestrator, agents in roles with audience-checked reads, reactions and custom emoji, live notifications and browser push, the homepage tour (agents 0002, chat 0002)50 // Live notifications, counts and browser push: each tab's feed socket (services/notify).
51 { "binding": "NOTIFY", "service": "g1t-notify" },
Projects have Observability: their requests, logs, traces, metrics and errors, from apps on g1t.page with nothing to set up, and from software anywhere else over OpenTelemetry.52 // Observability: each project's requests, logs, traces, metrics and errors, and its live tail (services/telemetry).
53 { "binding": "TELEMETRY", "service": "g1t-telemetry" },
Billing and Usage reconcile: own-provider runs leave Billing's at-price total, and Usage's not-charged part is at price less charged54 // Production screenshots for a project's overview (services/og).
55 { "binding": "SCREENSHOTS", "service": "g1t-og", "entrypoint": "Screenshots" }
56 ],
Merge branch 'worktree-agent-a8752162fea25f63f' into spend-guardrails57 // The front door's limits (app/lib/front-door-limits.ts). Every id and
58 // limit is in RATE_LIMITS (packages/contracts/src/rate-limits.ts), which
59 // the tests check this against. Self-hosted, without them, nothing is limited.
60 "ratelimits": [
61 { "name": "WEB_ANONYMOUS_LIMIT", "namespace_id": "4201", "simple": { "limit": 600, "period": 60 } },
62 { "name": "WEB_HEAVY_LIMIT", "namespace_id": "4202", "simple": { "limit": 30, "period": 60 } },
63 { "name": "WEB_SESSION_LIMIT", "namespace_id": "4203", "simple": { "limit": 1200, "period": 60 } },
64 { "name": "WEB_ADDRESS_LIMIT", "namespace_id": "4204", "simple": { "limit": 3000, "period": 60 } },
65 { "name": "GIT_ANONYMOUS_LIMIT", "namespace_id": "4205", "simple": { "limit": 120, "period": 60 } },
Merge main into Artifacts Phase 266 { "name": "GIT_SIGNED_LIMIT", "namespace_id": "4206", "simple": { "limit": 1200, "period": 60 } },
Merge branch 'ask-g1t'67 { "name": "WEB_TOKEN_LIMIT", "namespace_id": "4207", "simple": { "limit": 1000, "period": 60 } },
68 { "name": "WEB_ASK_LIMIT", "namespace_id": "4208", "simple": { "limit": 20, "period": 60 } }
Merge branch 'worktree-agent-a8752162fea25f63f' into spend-guardrails69 ],
70 // Logs of a tenth of requests: every page view is one, too many to keep all.
Merge main into rm-agents: mirroring removal, open signups, free-tier limits, the g1t CLI and runner fixes, with the agent removal kept. The CLI's table of operations is regenerated from the API without the agent, customize and AI credit operations; no CLI command used them.71 // Cloudflare Turnstile on email sign-up (app/lib/turnstile.ts): the
72 // widget's public site key here, and its secret as the TURNSTILE_SECRET
73 // secret. Either one empty turns it off.
74 "vars": { "TURNSTILE_SITE_KEY": "" },
Merge branch 'worktree-agent-a8752162fea25f63f' into spend-guardrails75 "observability": { "enabled": true, "head_sampling_rate": 0.1 },
Billing and Usage reconcile: own-provider runs leave Billing's at-price total, and Usage's not-charged part is at price less charged76 "upload_source_maps": true
77}

This file's history is long; its oldest lines are credited to the oldest commit read.