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.
| The Packages page names every registry it has | 1 | { |
| 2 | "$schema": "../../node_modules/wrangler/config-schema.json", | |
| 3 | "name": "g1t-runner", | |
| 4 | "account_id": "1e6f2cffa3f445920836e8ebe446bb58", | |
| 5 | "compatibility_date": "2026-09-26", | |
| 6 | "main": "./src/index.ts", | |
| 7 | "workers_dev": false, | |
| Every sandbox on g1t's runners has 20 GB of disk, the most Cloudflare Containers give one, as much or more than a GitHub-hosted ubuntu-latest's 14 GB: the standard machine (ubuntu-latest and every other hosted label, and all other work) becomes a custom instance type of 1 vCPU, 4 GiB and 20 GB, where standard-1 had half a vCPU and 8 GB, and g1t-2core a custom 2 vCPU, 8 GiB and 20 GB, where standard-3 had 16 GB; g1t-4core stays standard-4, which already had 20 GB. 1 vCPU is the smallest a custom type may have, and Cloudflare bills CPU only as it is used, so the doubled vCPU costs only what a job uses of it. The contracts' instance table, its TypeScript mirror and the billing keeper's standard sandbox say the same sizes; the price scales, worked out as before from Cloudflare's list prices with every vCPU busy and the Durable Object behind each, are now 1.9 for g1t-2core and 3.4 for g1t-4core, against the larger standard machine, and the fallbacks for a sandbox second (33 millionths of a dollar with its vCPU busy) and a build second (16) follow it. A test holds wrangler.jsonc's sizes to the contracts', and another the scales to the list prices. The docs' machine tables, the larger machines' prices and the Cloudflare deploy guide say so. | 8 | // One image (the base plus the runner binary), on three machine sizes, |
| 9 | // each with the 20 GB of disk Containers allow at most. The standard and | |
| 10 | // g1t-2core machines are custom instance types (1 vCPU is the smallest a | |
| 11 | // custom type may have, with at least 3 GiB of memory per vCPU), since | |
| 12 | // the named ones that size come with 8 and 16 GB. crates/contracts | |
| 13 | // (INSTANCE_TYPES) and services/billing (keeper.rs) say the same sizes. | |
| The Packages page names every registry it has | 14 | // scripts/deploy.mjs deploys with each image set to the reference it |
| 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. | 15 | // built and pushed ("The runner's images" in |
| 16 | // docs.g1t.sh/guides/deploy-to-cloudflare/), so a deploy builds | |
| 17 | // nothing; "./Dockerfile" here is for building by hand. | |
| The Packages page names every registry it has | 18 | "containers": [ |
| 19 | { | |
| 20 | "class_name": "AttemptSandbox", | |
| 21 | "image": "./Dockerfile", | |
| Every sandbox on g1t's runners has 20 GB of disk, the most Cloudflare Containers give one, as much or more than a GitHub-hosted ubuntu-latest's 14 GB: the standard machine (ubuntu-latest and every other hosted label, and all other work) becomes a custom instance type of 1 vCPU, 4 GiB and 20 GB, where standard-1 had half a vCPU and 8 GB, and g1t-2core a custom 2 vCPU, 8 GiB and 20 GB, where standard-3 had 16 GB; g1t-4core stays standard-4, which already had 20 GB. 1 vCPU is the smallest a custom type may have, and Cloudflare bills CPU only as it is used, so the doubled vCPU costs only what a job uses of it. The contracts' instance table, its TypeScript mirror and the billing keeper's standard sandbox say the same sizes; the price scales, worked out as before from Cloudflare's list prices with every vCPU busy and the Durable Object behind each, are now 1.9 for g1t-2core and 3.4 for g1t-4core, against the larger standard machine, and the fallbacks for a sandbox second (33 millionths of a dollar with its vCPU busy) and a build second (16) follow it. A test holds wrangler.jsonc's sizes to the contracts', and another the scales to the list prices. The docs' machine tables, the larger machines' prices and the Cloudflare deploy guide say so. | 22 | // Workflow jobs with `runs-on: ubuntu-latest` (and every other |
| 23 | // hosted label), and all other work: 1 vCPU, 4 GiB, 20 GB. | |
| 24 | "instance_type": { "vcpu": 1, "memory_mib": 4096, "disk_mb": 20000 }, | |
| The Packages page names every registry it has | 25 | "max_instances": 20, |
| 26 | // A deploy replaces sandboxes. Ones that are busy are given this | |
| 27 | // long, in seconds, to finish first, so shipping g1t does not | |
| The runner no longer runs g1t's own agents. Cloud and self-hosted runners now do what a forge's runner does: Actions jobs, required checks, merge checks and merge-queue test runs, deployments, dependency bumps and backups. Everything that started Claude Code in a sandbox on an issue or pull request is gone, with its prompts, model access, mentions, delegation, plans, reviews, revisions and the workspace agents' computers. | 28 | // kill work in the middle. |
| The Packages page names every registry it has | 29 | "rollout_active_grace_period": 7200 |
| 30 | }, | |
| 31 | { | |
| Every sandbox on g1t's runners has 20 GB of disk, the most Cloudflare Containers give one, as much or more than a GitHub-hosted ubuntu-latest's 14 GB: the standard machine (ubuntu-latest and every other hosted label, and all other work) becomes a custom instance type of 1 vCPU, 4 GiB and 20 GB, where standard-1 had half a vCPU and 8 GB, and g1t-2core a custom 2 vCPU, 8 GiB and 20 GB, where standard-3 had 16 GB; g1t-4core stays standard-4, which already had 20 GB. 1 vCPU is the smallest a custom type may have, and Cloudflare bills CPU only as it is used, so the doubled vCPU costs only what a job uses of it. The contracts' instance table, its TypeScript mirror and the billing keeper's standard sandbox say the same sizes; the price scales, worked out as before from Cloudflare's list prices with every vCPU busy and the Durable Object behind each, are now 1.9 for g1t-2core and 3.4 for g1t-4core, against the larger standard machine, and the fallbacks for a sandbox second (33 millionths of a dollar with its vCPU busy) and a build second (16) follow it. A test holds wrangler.jsonc's sizes to the contracts', and another the scales to the list prices. The docs' machine tables, the larger machines' prices and the Cloudflare deploy guide say so. | 32 | // Workflow jobs with `runs-on: g1t-2core`: 2 vCPU, 8 GiB, 20 GB. |
| The Packages page names every registry it has | 33 | "class_name": "Sandbox2Core", |
| 34 | "image": "./Dockerfile", | |
| Every sandbox on g1t's runners has 20 GB of disk, the most Cloudflare Containers give one, as much or more than a GitHub-hosted ubuntu-latest's 14 GB: the standard machine (ubuntu-latest and every other hosted label, and all other work) becomes a custom instance type of 1 vCPU, 4 GiB and 20 GB, where standard-1 had half a vCPU and 8 GB, and g1t-2core a custom 2 vCPU, 8 GiB and 20 GB, where standard-3 had 16 GB; g1t-4core stays standard-4, which already had 20 GB. 1 vCPU is the smallest a custom type may have, and Cloudflare bills CPU only as it is used, so the doubled vCPU costs only what a job uses of it. The contracts' instance table, its TypeScript mirror and the billing keeper's standard sandbox say the same sizes; the price scales, worked out as before from Cloudflare's list prices with every vCPU busy and the Durable Object behind each, are now 1.9 for g1t-2core and 3.4 for g1t-4core, against the larger standard machine, and the fallbacks for a sandbox second (33 millionths of a dollar with its vCPU busy) and a build second (16) follow it. A test holds wrangler.jsonc's sizes to the contracts', and another the scales to the list prices. The docs' machine tables, the larger machines' prices and the Cloudflare deploy guide say so. | 35 | "instance_type": { "vcpu": 2, "memory_mib": 8192, "disk_mb": 20000 }, |
| The Packages page names every registry it has | 36 | "max_instances": 10, |
| 37 | "rollout_active_grace_period": 7200 | |
| 38 | }, | |
| 39 | { | |
| 40 | // Workflow jobs with `runs-on: g1t-4core`: 4 vCPU, 12 GiB, 20 GB. | |
| 41 | "class_name": "Sandbox4Core", | |
| 42 | "image": "./Dockerfile", | |
| 43 | "instance_type": "standard-4", | |
| 44 | "max_instances": 10, | |
| 45 | "rollout_active_grace_period": 7200 | |
| 46 | } | |
| 47 | ], | |
| 48 | "durable_objects": { | |
| 49 | "bindings": [ | |
| 50 | { "name": "SANDBOX", "class_name": "AttemptSandbox" }, | |
| 51 | { "name": "SANDBOX_2CORE", "class_name": "Sandbox2Core" }, | |
| The runner no longer runs g1t's own agents. Cloud and self-hosted runners now do what a forge's runner does: Actions jobs, required checks, merge checks and merge-queue test runs, deployments, dependency bumps and backups. Everything that started Claude Code in a sandbox on an issue or pull request is gone, with its prompts, model access, mentions, delegation, plans, reviews, revisions and the workspace agents' computers. | 52 | { "name": "SANDBOX_4CORE", "class_name": "Sandbox4Core" } |
| The Packages page names every registry it has | 53 | ] |
| 54 | }, | |
| 55 | "migrations": [ | |
| 56 | { "tag": "v1", "new_sqlite_classes": ["AttemptSandbox"] }, | |
| Every agent can have its own computer. A session that needs one wakes it: a home of its own on g1t cloud, one per agent and never shared, where it runs commands, reads and writes files and keeps what it made, with each session working in its own folder under a shared home; after ten idle minutes it sleeps, its home kept as a snapshot and restored when it wakes, and Reset wipes the home while memory and artifacts stay. Its shell and files are abilities with the usual choices, Alone, Alone when asked, Ask first or Never, offered only inside sessions and never to a chat reply; every command shows on the session with its output, and the agent's new Computer tab shows the state, the disk used of the five gigabytes included, the recent commands, and Wake, Put to sleep and Reset. Machine time counts only while it is awake, on the sandbox lines of the ledger that name the agent and who asked, held to the same spend caps as the session; the disk itself costs nothing in this version. The runner gained a long-lived supervisor that answers the computer's requests inside the container, and the runner service a computer per agent that keeps its snapshot in the agent homes bucket when one is attached, and says so when none is. The REST API and the agent tool can read a computer, wake it, put it to sleep and reset it. The agents, abilities, sessions, runners, billing and deploy guides say how it works and what an operator sets up; pinning a computer to your own runner, its browser and take-over come next. | 57 | { "tag": "v2", "new_sqlite_classes": ["Sandbox2Core", "Sandbox4Core"] }, |
| The runner no longer runs g1t's own agents. Cloud and self-hosted runners now do what a forge's runner does: Actions jobs, required checks, merge checks and merge-queue test runs, deployments, dependency bumps and backups. Everything that started Claude Code in a sandbox on an issue or pull request is gone, with its prompts, model access, mentions, delegation, plans, reviews, revisions and the workspace agents' computers. | 58 | { "tag": "v3", "new_sqlite_classes": ["AgentComputer"] }, |
| 59 | // Workspace agents' computers are gone, and with them their objects. | |
| 60 | { "tag": "v4", "deleted_classes": ["AgentComputer"] } | |
| The Packages page names every registry it has | 61 | ], |
| 62 | "services": [ | |
| 63 | { "binding": "IDENTITY", "service": "g1t-identity" }, | |
| 64 | { "binding": "REPOS", "service": "g1t-repos" }, | |
| 65 | { "binding": "WORK", "service": "g1t-work" }, | |
| 66 | { "binding": "BILLING", "service": "g1t-billing" }, | |
| 67 | { "binding": "ACTIONS", "service": "g1t-actions" }, | |
| 68 | { "binding": "DEPLOYMENTS", "service": "g1t-deployments" }, | |
| 69 | // The event bus: abuse.flagged, when a sandbox looks like it is mining. | |
| 70 | { "binding": "EVENTS", "service": "g1t-events" } | |
| 71 | ], | |
| 72 | // A sweep for lifecycle steps whose trigger was missed or whose sandbox | |
| 73 | // died before reporting, which also starts queued nightly backups. | |
| 74 | "triggers": { "crons": ["*/5 * * * *"] }, | |
| The runner no longer runs g1t's own agents. Cloud and self-hosted runners now do what a forge's runner does: Actions jobs, required checks, merge checks and merge-queue test runs, deployments, dependency bumps and backups. Everything that started Claude Code in a sandbox on an issue or pull request is gone, with its prompts, model access, mentions, delegation, plans, reviews, revisions and the workspace agents' computers. | 75 | // Events it reacts to: a pull request that may now merge by its |
| 76 | // repository's settings, a merge check or the merge queue to start. | |
| The Packages page names every registry it has | 77 | "queues": { |
| Merge branch 'worktree-agent-ad8a36dfcd4176015' into spend-guardrails | 78 | "consumers": [{ "queue": "g1t-events-runner", "max_batch_size": 20, "max_batch_timeout": 1, "max_retries": 3, "dead_letter_queue": "g1t-events-dlq" }] |
| The Packages page names every registry it has | 79 | }, |
| 80 | "vars": { | |
| 81 | "CLOUDFLARE_ACCOUNT_ID": "1e6f2cffa3f445920836e8ebe446bb58", | |
| 82 | // Guardrails' network list is enforced by starting sandboxes without | |
| 83 | // internet and passing their HTTP(S) through this Worker. "off" opens | |
| 84 | // every sandbox's network again, whatever its guardrails say. | |
| 85 | "EGRESS": "enforce", | |
| 86 | // Sandboxes stop themselves when they look like they are mining | |
| 87 | // (crates/runner abuse.rs). "off" turns the CPU watch off; miners | |
| 88 | // named in commands are refused either way. | |
| 89 | "ABUSE_WATCH": "on", | |
| Merge branch 'main' into actions-toolkit-oidc-artifacts | 90 | // Each workflow job gets a Docker Engine of its own, inside its |
| 91 | // sandbox, started the first time a step uses Docker or the job has | |
| 92 | // `services:` or `container:` (crates/runner docker/). "off" gives | |
| 93 | // jobs none. | |
| 94 | "DOCKER": "on", | |
| The Packages page names every registry it has | 95 | // Nightly backups (src/backup.ts): each sweep starts this many of the |
| 96 | // backups the repos service queued, with at most BACKUPS_RUNNING at | |
| 97 | // once. "0" starts none. | |
| 98 | "BACKUPS_PER_SWEEP": "4", | |
| 99 | "BACKUPS_RUNNING": "6" | |
| 100 | }, | |
| Merge branch 'worktree-agent-a8752162fea25f63f' into spend-guardrails | 101 | // Every log kept: few requests, and a failed run must be traceable. |
| 102 | "observability": { "enabled": true, "head_sampling_rate": 1 } | |
| The Packages page names every registry it has | 103 | } |
This file's history is long; its oldest lines are credited to the oldest commit read.