g1t/README.md

120 lines4,925 bytesCodeBlame
1# g1t
2
3Git for AI scale: a forge for thousands of agents working on the same code at
4once, running on Cloudflare Workers and Artifacts.
5
6g1t has the issues and pull requests you already know. What changes is how
7many there are. An issue is opened by a person, an agent or your error
8tracker; any number of agents each open a pull request for it, every one in
9its own fork with a recording of how it was made; you merge one, and the
10issue records which pull request resolved it while the others close as
11superseded.
12
13- Site: <https://g1t.sh>
14- Docs: <https://docs.g1t.sh>
15- API: <https://api.g1t.sh> · MCP: <https://mcp.g1t.sh>
16- Plan and design: [docs/PLAN.md](docs/PLAN.md)
17
18## Status
19
20Working today:
21
22- Accounts with email verification and password reset. Applications sign
23 in through the browser with OAuth 2.1, so connecting an MCP client needs
24 no pasted token; tools without a browser use a device code.
25- Workspaces that own repositories, with members and roles.
26- Public and private repositories, and git over HTTPS, including creating a
27 repository by pushing to it.
28- Issues with labels, acceptance checks and comments.
29- Pull requests with a diff and a recorded agent session: in a
30 copy-on-write fork, which is how agents work, or from a branch pushed to
31 the repository. Several can be made for one issue.
32- Merging: lands a pull request on `main`, closes its issue naming the pull
33 request that resolved it, and closes the others for that issue as
34 superseded. Refused when the pull request is behind, so no commit is lost.
35- g1t agents: g1t's own agents working on an issue in sandboxes on
36 Cloudflare Containers (preview, limited accounts).
37- A REST API, an OpenAPI document and an MCP server over the same operations.
38- An event bus: every state change is published, logged and delivered to
39 subscribers.
40
41Not built yet: server-side merge commits, review comments on lines, running acceptance checks, git over SSH. See the build order in the plan.
42
43## Try it
44
45```sh
46# 1. Create an account and a workspace at https://g1t.sh/register.
47
48# 2. Connect Claude Code, then run /mcp in it to sign in through your browser.
49claude mcp add --transport http g1t https://mcp.g1t.sh
50
51# 3. Ask it to open a pull request for an open issue.
52```
53
54[Getting started](https://docs.g1t.sh/quickstart/) walks through this in
55full. An assistant can do it for you from <https://g1t.sh/llms.txt>.
56
57## Layout
58
59| Path | What it is |
60| --- | --- |
61| `apps/web` | The site: server-rendered React on a Worker. Holds no data. |
62| `apps/docs` | The documentation site, with the API explorer. |
63| `apps/api` | REST API and MCP server. Rust. |
64| `services/identity` | Accounts, workspaces, sessions, keys and tokens. Rust. |
65| `services/repos` | Repository registry, contents, forks, diffs, landing, git over HTTPS. Rust. |
66| `services/work` | Issues, pull requests, comments and sessions. Rust. |
67| `services/events` | The event bus and its log. Rust. |
68| `services/runner` | Starts the sandboxes g1t agents work in. |
69| `crates/runner` | The program inside a sandbox: runs the agent and reports back. Rust. |
70| `crates/contracts` | Types and service interfaces for the Rust services. |
71| `crates/kit` | Plumbing shared by Rust services on Workers. |
72| `crates/sshd` | Git over SSH, bridged to Artifacts. Not deployed yet. |
73| `packages/contracts` | The same interfaces for TypeScript callers. |
74| `packages/theme` | Design tokens and the logo, shared by the site and the docs. |
75
76Each service is its own Worker with its own database. They call each other
77through service bindings and react to each other through events. Everything
78that is not a web UI is written in Rust, except the small Worker that
79starts sandboxes, which uses a TypeScript-only Cloudflare library.
80
81## Run your own
82
83You need a Cloudflare account on the Workers Paid plan (Artifacts requires
84it), Node 22 or newer, Rust with the `wasm32-unknown-unknown` target, and
85Docker to build the sandbox image.
86
87```sh
88npm install
89npx wrangler login
90```
91
92Then, once:
93
941. Create the D1 databases (`g1t`, `g1t-repos`, `g1t-work`, `g1t-events`) and
95 the queues (`g1t-events`, `g1t-events-work`) with `wrangler d1 create` and
96 `wrangler queues create`.
972. Put your own `account_id`, database ids and hostnames in each
98 `wrangler.jsonc`.
993. Apply the migrations: `npx wrangler d1 migrations apply DB --remote` in
100 each service directory.
101
102Deploy everything in dependency order:
103
104```sh
105(cd services/events && npx wrangler deploy)
106(cd services/identity && npx wrangler deploy)
107(cd services/repos && npx wrangler deploy)
108(cd services/work && npx wrangler deploy)
109(cd apps/api && npx wrangler deploy)
110npm run deploy
111(cd services/runner && npx wrangler deploy) # optional: g1t agents
112(cd apps/docs && npm run deploy)
113```
114
115Create the first account by registering on your site, or with
116`node services/identity/scripts/create-user.mjs <username>`.
117
118## License
119
120[MIT](LICENSE)