| 1 | # g1t |
| 2 | |
| 3 | **Git tracks changes. g1t coordinates change.** |
| 4 | |
| 5 | g1t is a git platform built for teams whose code is written by people and |
| 6 | their coding agents at the same time. You keep your own harness (Claude |
| 7 | Code, Codex, Cursor, Copilot or anything that speaks MCP); g1t is the |
| 8 | place they all work through. It hosts the repositories, shows who and what |
| 9 | is working on each project right now, keeps parallel work from colliding, |
| 10 | tests changes together before they land, deploys them, and remembers why |
| 11 | each change was made. |
| 12 | |
| 13 | g1t is MIT-licensed and in alpha. Use it on [g1t.sh](https://g1t.sh) (anyone |
| 14 | can sign up), or run it yourself. It runs on Cloudflare Workers, with |
| 15 | repositories in Cloudflare Artifacts, and the core runs in Docker. |
| 16 | |
| 17 | - Site: <https://g1t.sh> |
| 18 | - Docs: <https://docs.g1t.sh> |
| 19 | - API: <https://api.g1t.sh> · MCP: <https://mcp.g1t.sh> |
| 20 | - Limits you can hit today: [docs.g1t.sh/about/limitations](https://docs.g1t.sh/about/limitations/) |
| 21 | |
| 22 | ## Try it |
| 23 | |
| 24 | ```sh |
| 25 | # 1. Sign up and make a workspace at https://g1t.sh/register. |
| 26 | |
| 27 | # 2. Install the g1t CLI (Windows: irm https://g1t.sh/install.ps1 | iex). |
| 28 | curl -fsSL https://g1t.sh/install | sh |
| 29 | g1t auth login |
| 30 | |
| 31 | # 3. Install g1t's Claude Code plugin. It adds g1t's MCP server and records |
| 32 | # your sessions; run /mcp in Claude Code and sign plugin:g1t:g1t in. |
| 33 | claude plugin marketplace add https://g1t.sh/flagon-io/g1t.git |
| 34 | claude plugin install g1t@g1t |
| 35 | ``` |
| 36 | |
| 37 | Then work as you always do in a g1t repository: the session shows on the |
| 38 | project's page as it runs. [Getting started](https://docs.g1t.sh/quickstart/) |
| 39 | walks through it in full, and [Connect a coding agent](https://docs.g1t.sh/guides/bring-your-own-agent/) |
| 40 | sets up other harnesses. An assistant can do it for you from |
| 41 | <https://g1t.sh/llms.txt>. |
| 42 | |
| 43 | ## What's in it |
| 44 | |
| 45 | ### Coordinating agents |
| 46 | |
| 47 | - **Sessions.** Every run of a coding agent is recorded as it works: its |
| 48 | prompts, tool calls, subagents, branches, commits and pull requests. Work |
| 49 | that is not an issue yet is a session titled by what it is for. The |
| 50 | [Claude Code plugin](https://docs.g1t.sh/guides/claude-code-plugin/) does |
| 51 | it with no setup; any harness can with the CLI or MCP. |
| 52 | - **Live now.** A project's page shows who is working on it right now and |
| 53 | with which harness, grouped by issue, pull request or branch. |
| 54 | - **Claims.** Advisory, expiring claims on issues, so two agents don't do the |
| 55 | same work, with hand-offs between sessions and coordination events |
| 56 | (`g1t work events --follow`, or over MCP) when work overlaps. |
| 57 | - **Integration.** The merge queue tests changes together before they land, |
| 58 | finds which change broke a combination by bisecting, and sends the failure |
| 59 | to the session responsible. |
| 60 | - **Why-blame and decisions.** `g1t why file:line` answers why code is as it |
| 61 | is: its commit, pull request, issue, the decisions recorded along the way, |
| 62 | and the sessions behind it. |
| 63 | - **Memory.** Short notes about a project or workspace that your team and |
| 64 | your agents read before they start and add to as they learn. |
| 65 | - **Ask g1t.** Ask about your work from any page, or by messaging @g1t. It |
| 66 | answers with your workspace's own AI provider and reads g1t as you. |
| 67 | |
| 68 | ### Code |
| 69 | |
| 70 | - Public and private repositories, git over HTTPS, creating a repository by |
| 71 | pushing to it, GitHub import (every branch and tag, and issues). |
| 72 | - Issues, milestones, labels, pull requests, line comments and reviews. |
| 73 | - Required checks, rulesets, CODEOWNERS and the merge queue. |
| 74 | - Workflows from `.g1t/workflows` in GitHub Actions syntax, on g1t's Linux |
| 75 | runners or self-hosted ones on Linux, macOS and Windows, with caches, |
| 76 | secrets and variables. |
| 77 | - Packages: npm, Cargo, Composer, Maven, NuGet, RubyGems, Go modules and |
| 78 | container images. |
| 79 | - Secret push protection, history scanning and dependency update pull |
| 80 | requests. |
| 81 | |
| 82 | ### Deployments and observability |
| 83 | |
| 84 | - A preview of every pull request on `g1t.page`, production on merge, custom |
| 85 | domains. Static sites, Workers and containers, chosen from the project. |
| 86 | - Logs, traces, metrics and errors from your apps over OpenTelemetry. |
| 87 | |
| 88 | ### The workspace |
| 89 | |
| 90 | - Chat: channels, direct messages and threads, live. |
| 91 | - Artifacts: docs written together, live, with comments, suggestions and |
| 92 | history. |
| 93 | - Home, notifications with browser push, people and teams, roles, invites. |
| 94 | - A desktop app for Windows and Linux that can also be a runner for your |
| 95 | workspace, and an Android app in testing ([g1t.sh/download](https://g1t.sh/download)). |
| 96 | |
| 97 | ### Extend |
| 98 | |
| 99 | - REST API, OpenAPI, an MCP server, webhooks and the `g1t` CLI, all from one |
| 100 | set of operations. |
| 101 | - Integrations: your own AI providers, Sentry, Datadog and webhook alerts, |
| 102 | Jira and Linear. |
| 103 | - Usage billing with no seats and a public price book. |
| 104 | |
| 105 | ## Layout |
| 106 | |
| 107 | | Path | What it is | Language | |
| 108 | | --- | --- | --- | |
| 109 | | `apps/web` | The site: server-rendered React on a Worker. Holds no data. | TypeScript | |
| 110 | | `apps/docs` | The documentation site, with the API explorer. | TypeScript | |
| 111 | | `apps/api` | REST API and MCP server. | Rust | |
| 112 | | `apps/desktop` | The desktop app (Tauri), with a runner inside. | Rust, TypeScript | |
| 113 | | `apps/mobile` | The phone app (Expo). | TypeScript | |
| 114 | | `apps/status` | The status page at `status.g1t.sh`. | TypeScript | |
| 115 | | `apps/sudo` | g1t's own staff console. | TypeScript | |
| 116 | | `services/identity` | Accounts, workspaces, sessions, keys, tokens and invites. | Rust | |
| 117 | | `services/repos` | Repository registry, contents, forks, diffs, landing, git over HTTPS. | Rust | |
| 118 | | `services/work` | Issues, pull requests, reviews, check runs, agent sessions, claims and the merge queue. | Rust | |
| 119 | | `services/events` | The event bus and its log. | Rust | |
| 120 | | `services/search` | Site-wide search and Explore. | Rust | |
| 121 | | `services/billing` | Usage, the price book, limits, invoices and payments. | Rust | |
| 122 | | `services/actions` | Workflows, runs, caches and self-hosted runners. | Rust | |
| 123 | | `services/security` | Push protection findings, history scanning and dependency updates. | Rust | |
| 124 | | `services/integrations` | AI providers, Ask, alerts, trackers and the GitHub App. | Rust | |
| 125 | | `services/webhooks` | Webhook deliveries. | Rust | |
| 126 | | `services/packages` | The package registries and container images. | Rust | |
| 127 | | `services/runner` | Starts sandboxes for workflow jobs, builds and the merge queue. | TypeScript | |
| 128 | | `services/projects` | Projects: what a workspace builds and runs, and where its code lives. | TypeScript | |
| 129 | | `services/deployments` | Builds, previews and production on `g1t.page`. | TypeScript | |
| 130 | | `services/pages` | Serves every app deployed on `g1t.page`, and custom domains. | TypeScript | |
| 131 | | `services/telemetry` | Observability: OpenTelemetry ingest, logs, traces, metrics and errors. | TypeScript | |
| 132 | | `services/chat` | Channels, direct messages, threads and their live sockets. | TypeScript | |
| 133 | | `services/artifacts` | Docs: their spaces, sharing and live editing. | TypeScript | |
| 134 | | `services/notify` | Notifications: each person's feed, live counts and browser push. | TypeScript | |
| 135 | | `services/og` | Social cards at `og.g1t.sh`: a PNG per page, showing only what anyone may see. | TypeScript | |
| 136 | | `crates/g1t` | The `g1t` command line. | Rust | |
| 137 | | `crates/runner` | The program inside a sandbox, and the self-hosted runner: runs a workflow job or a build and reports back. | Rust | |
| 138 | | `crates/contracts` | Types and service interfaces for the Rust services. | Rust | |
| 139 | | `crates/kit` | Plumbing shared by Rust services on Workers. | Rust | |
| 140 | | `crates/rules` | The rules engine for rulesets on branches and tags. | Rust | |
| 141 | | `crates/blobstore` | Object storage: R2 on Cloudflare, any S3-compatible store self-hosted. | Rust | |
| 142 | | `crates/actions` | Reads workflows and evaluates their expressions. | Rust | |
| 143 | | `crates/scan` | Secret and lockfile scanning, shared by services. | Rust | |
| 144 | | `crates/secrets` | Secrets at rest and signatures. | Rust | |
| 145 | | `crates/sshd` | Git over SSH, bridged to Cloudflare Artifacts. Not deployed. | Rust | |
| 146 | | `packages/contracts` | The same interfaces for TypeScript callers. | TypeScript | |
| 147 | | `packages/theme` | Design tokens and the logo, shared by the site and the docs. | CSS | |
| 148 | | `plugins/claude-code` | g1t's Claude Code plugin: hooks, skills and commands. | JavaScript | |
| 149 | | `plugins/other-harnesses` | The AGENTS.md snippet for Codex, Cursor and other harnesses. | Markdown | |
| 150 | | `deploy` | `stack.jsonc`, every deployable part and its resources; `self-host`, the Docker Compose version. | JSON, Docker Compose | |
| 151 | |
| 152 | Each service is its own Worker, and each one that keeps data has its own |
| 153 | database. They call each other through service bindings and react to each |
| 154 | other through events. The core services are written in Rust; the web apps |
| 155 | and the rest of the Workers in TypeScript. |
| 156 | |
| 157 | ## Run your own |
| 158 | |
| 159 | ### On your own machine |
| 160 | |
| 161 | The core forge runs in Docker, with no Cloudflare account: |
| 162 | |
| 163 | ```sh |
| 164 | docker compose -f deploy/self-host/docker-compose.yml up --build |
| 165 | ``` |
| 166 | |
| 167 | Then open <http://localhost:8787> and sign up. The confirmation mail is in |
| 168 | Mailpit at <http://localhost:8025>. Repositories, push and clone, issues, |
| 169 | pull requests, code browsing, search, webhooks and observability work, and |
| 170 | the API and MCP server answer at <http://localhost:8789>; packages and |
| 171 | container images are kept in the bundled S3-compatible store, RustFS. |
| 172 | Deployments and billing are off, and the merge queue can't test or land |
| 173 | pull requests without g1t's runner. |
| 174 | [Run g1t yourself](https://docs.g1t.sh/guides/self-hosting/) says what works, |
| 175 | and [how a self-hosted g1t runs](https://docs.g1t.sh/guides/self-hosting-architecture/) |
| 176 | what runs inside it. |
| 177 | |
| 178 | ### On Cloudflare |
| 179 | |
| 180 | You need a Cloudflare account on the Workers Paid plan (Cloudflare |
| 181 | Artifacts, where repositories are stored, requires it), Node 24 (`.nvmrc`, |
| 182 | and `engines` in `package.json`), Rust with the `wasm32-unknown-unknown` |
| 183 | target, and Docker to build the sandbox image. |
| 184 | |
| 185 | ```sh |
| 186 | npm install |
| 187 | npx wrangler login |
| 188 | ``` |
| 189 | |
| 190 | Then, once: |
| 191 | |
| 192 | 1. Create the resources each part needs: D1 databases, queues, KV |
| 193 | namespaces, R2 buckets and the Cloudflare Artifacts namespace (`npx wrangler d1 |
| 194 | create <name>`, `npx wrangler queues create <name>`, and so on), and set |
| 195 | each part's secrets. `deploy/stack.jsonc` lists them all. |
| 196 | 2. Put your own `account_id`, database ids and hostnames in each |
| 197 | `wrangler.jsonc`. |
| 198 | 3. For [Deployments](https://docs.g1t.sh/guides/deployments/), which needs |
| 199 | the Workers for Platforms add-on and a zone for apps: |
| 200 | `scripts/setup-deployments.sh`. |
| 201 | |
| 202 | Deploy everything, migrations first, in dependency order: |
| 203 | |
| 204 | ```sh |
| 205 | scripts/deploy.sh |
| 206 | ``` |
| 207 | |
| 208 | Or only what changed, still in order: `scripts/deploy.sh billing web`. |
| 209 | Both use your `wrangler login`, not a token in `.env`. |
| 210 | |
| 211 | Create the first account by registering on your site, or with |
| 212 | `node services/identity/scripts/create-user.mjs <username>`. |
| 213 | [Deploy g1t to Cloudflare](https://docs.g1t.sh/guides/deploy-to-cloudflare/) |
| 214 | covers the deploy tool, the workflow and first-time setup in full. |
| 215 | |
| 216 | ## License |
| 217 | |
| 218 | [MIT](LICENSE) |