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.
| Security: postcss-selector-parser 7.1.6 and basic-ftp 6.2.2, pinned by overrides | 1 | { |
| 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 |
| Security: postcss-selector-parser 7.1.6 and basic-ftp 6.2.2, pinned by overrides | 10 | // 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 address | 14 | // 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 | ], | |
| Security: postcss-selector-parser 7.1.6 and basic-ftp 6.2.2, pinned by overrides | 20 | // 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 to | 46 | // 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" }, | |
| Security: postcss-selector-parser 7.1.6 and basic-ftp 6.2.2, pinned by overrides | 54 | // 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-guardrails | 57 | // 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 2 | 66 | { "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-guardrails | 69 | ], |
| 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-guardrails | 75 | "observability": { "enabled": true, "head_sampling_rate": 0.1 }, |
| Security: postcss-selector-parser 7.1.6 and basic-ftp 6.2.2, pinned by overrides | 76 | "upload_source_maps": true |
| 77 | } |
This file's history is long; its oldest lines are credited to the oldest commit read.